一、复数的基本运算
复数的基本运算公式:
加法:(a+bi)+(c+di)=(a+c)+(b+d)i;
减法:(a+bi)-(c+di)=(a-c)+(b-d)i;
乘法:(a+bi)*(c+di)=(ac-bd)+(ad+bc)i;
除法:(a+bi)/(c+di)=(ac+bd)/(c*c+d*d)+(bc-ad)/(c*c+d*d);
幂运算:同乘法;
指数运算:e^(a+bi) = e^(a)*e^(bi) = e^a(cosb+isinb);
public class ComplexShu {
static void cPlus(double a, double b, double c, double d, double[] e, double[] f) {//加法
e[0] = a+c;
f[0] = b+d;
}
static void cMinus(double a, double b, double c, double d, double[] e, double[] f) {//减法
e[0] = a-c;
f[0] = b-d;
}
static void cMul(double a, double b, double c, double d, double[] e, double[] f) {//乘法
e[0] = a*c-b*d;
f[0] = a*d+b*c;
}
static void cDiv(double a, double b, double c, double d, double[] e, double[] f) {//除法
double sq;
sq = c*c+d*d;
e[0] = (a*c+b*d)/sq;
f[0] = (b*c-a*d)/sq;
}
static void cPowN(double a, double b, int n, double[] e, double[] f) {//幂运算
double result;
int i;
e[0] = a;
f[0] = b;
if(n == 1) {
return;
}else {
for(i=1;i<n;i++) {
cMul(e[0],f[0],a,b,e,f);
}
}
}
static void cExp(double a, double b, double[] e, double[] f) {
double temp;
temp = Math.exp(a);
e[0] = temp*Math.cos(b);
f[0] = temp*Math.sin(b);
}
public static void main(String[] args) {
double a,b,c,d,g,h;
int n;
double[] e= {0},f= {0};
a=4;b=6;
c=2;d=-1;
g=1;h=1;
n=5;
cPlus(a,b,c,d,e,f);
System.out.printf("(%.1f+%.1fi)+(%.1f+%.1fi)=%.1f+%.1fi\n",a,b,c,d,e[0],f[0]);
cMinus(a,b,c,d,e,f);
System.out.printf("(%.1f+%.1fi)+(%.1f+%.1fi)=%.1f+%.1fi\n",a,b,c,d,e[0],f[0]);
cMul(a,b,c,d,e,f);
System.out.printf("(%.1f+%.1fi)+(%.1f+%.1fi)=%.1f+%.1fi\n",a,b,c,d,e[0],f[0]);
cDiv(a,b,c,d,e,f);
System.out.printf("(%.1f+%.1fi)+(%.1f+%.1fi)=%.1f+%.1fi\n",a,b,c,d,e[0],f[0]);
cPowN(g,h,n,e,f);
System.out.printf("(%.1f+%.1fi)的%d次幂=%.1f+%.1fi\n",g,h,n,e[0],f[0]);
cExp(a,b,e,f);
System.out.printf("e的(%f+%fi)次幂=%f+%fi\n",a,b,e[0],f[0]);
}
}