提醒:当你某一天发现同一个复数领域内的算式表达得出不同的结果的时候,请不要太过怀疑,因为这就是复数的多值性!
已知:
1、
x,y,m,n为实数,i表示虚数单位(i=(-1)^0.5)
A=x+y*i=e^(a+α*i)=e^a*e^(α*i)=Ra*e^(α*i)=Ra*[cos(α)+sin(α)*i]
B=m+n*i=e^(b+β*i)=e^b*e^(β*i)=Rb*e^(β*i)=Rb*[cos(β)+sin(β)*i]
其中定义
|A|=Ra=e^a=(x^2+y^2)^0.5,α=Arctan(y/x),明显a=Ln(|A|)
|B|=Rb=e^b=(m^2+n^2)^0.5,β=Arctan(n/m),明显b=ln(|B|)
2、
以A为例,|A|或Ra叫做复数A的模,α为复数A的复角,一般把-π<α<π的α值叫做主值,此时定义Arg(A)=α当A≠0的时候,主值由如下方式确定
(1)、当x>0时,α=Arctan(y/x)
(2)、当x=0,y>0时,α=π/2
(3)、当x=0,y<0时,α=-π/2
(4)、当x<0,y≥0时,α=Arctan(y/x)+π
(5)、当x<0,y<0时,α=Arctan(y/x)-π
基本运算:(下面的最后的结果都会变成x+y*i的形式)
1、
A+B=(x+m)+(y+n)*i
A-B=(x-m)+(y-n)*i
A*B=(x+y*i)*(m+n*i)
=x*m+x*n*i+y*m*i+y*n*i*i
=(x*m-y*n)+(x*n+y*m)*i
A/B=(x+y*i)/(m+n*i)
=[(x+y*i)*(m-n*i)]/[(m+n*i)*(m-n*i)]
=[(x*m+y*n)+(x*m-y*n)*i]/(m^2+n^2)
=[(x*m+y*n)/(m^2+n^2)]+[(x*m-y*n)/(m^2+n^2)]*i
Ln(A)=Ln(Ra*e^(α*i))
=ln(Ra)+ln(e^(α*i))
=0.5*ln(x^2+y^2)+α*i
=Ln(|A|)+Arg(A)*i
A^B=[e^(a+α*i)]^(m+n*i)
=e^[(a+α*i)*(m+n*i)]
=e^[(a*m-α*n)+(a*n+α*m)*i]
=[e^(a*m-α*n)]*[e^((a*n+α*m)*i)]
=[e^(a*m-α*n)]*[cos(a*n+α*m)+sin(a*n+α*m)*i]
=[cos(a*n+α*m)*e^(a*m-α*n)]+[sin(a*n+α*m)*e^(a*m-α*n)]*i
A^0.5=:
这个是上面求A^B次方的特例,即B=0.5,此时表示对复数A开方,由于开方在后面的调用十分频繁,这里提供另一种算法加
快运算速度.即在后面出现复数开方的运算中,建议直接使用本算法,而不要直接使用上面A^B的算法.
设B=A^0.5,即A=B^2即x+y*i=(m+n*i)^2=(m^2-n^2)+2*m*n*i(这里注意,x,y,m,n就是我们上面已知的数据,他们是实数)
=>x=m^2-n^2,y=2*m*n
=>n=y/(2*m)带入x=m^2-n^2
=>x=m^2-y^2/(4*m^2)
=>(m^2)^2-x*m^2-y^2/4=0
=>m^2=[x±(x^2+y^2)^0.5]/2=[x+(x^2+y^2)^0.5]/2//由m^2≥0
=>m=±[x+(x^2+y^2)^0.5]/2^0.5
=>n=y/(2*m)
这里需要注意y=0等一些特殊情况,下面直接给出其解
A^0.5={0.5*[(x^2+y^2)^0.5+x]}^0.5+{0.5*[(x^2+y^2)^0.5-x]}^0.5*sign(y)*i
其中y<0时sign(y)=-1,y≥0时sign(y)=1
sin(A)=[e^(i*A)-e^(-i*A)]/(2*i)//由于上面已经有复数的加减乘除与求次方的解析表达式,这里不再推了
cos(A)=[e^(i*A)+e^(-i*A)]/2//由于上面已经有复数的加减乘除与求次方的解析表达式,这里不再推了
tan(A)=sin(A)/cos(A)//上面已经推出复数的正弦与余弦,这里不再推导
cot(A)=cos(A)/sin(A)//上面已经推出复数的正弦与余弦,这里不再推导
sec(A)=1/cos(A)//上面已经推出复数的余弦,这里不再推导
csc(A)=1/sin(A)//上面已经推出复数的余弦,这里不再推导
sinh(A)=[e^A-e^(-A)]/2//由于上面已经有复数的加减乘除与求次方的解析表达式,这里不再推了
cosh(A)=[e^A+e^(-A)]/2//由于上面已经有复数的加减乘除与求次方的解析表达式,这里不再推了
tanh(A)=sinh(A)/cosh(A)//上面已经推出复数的双曲正弦与双曲余弦,这里不再推导
coth(A)=cosh(A)/sinh(A)//上面已经推出复数的双曲正弦与双曲余弦,这里不再推导
Log(A,B)=Ln(A)/Ln(B)//上面已经推出取自然对数的表达式,这里不再推导
Arcsin(A)=:
记B=Arcsin(A),即A=sin(B)=[e^(i*B)-e^(-i*B)]/(2*i)=(w-1/w)/(2*i)其中w=e^(i*B)
=>A=(w-1/w)/(2*i)
=>w^2-(2*A*i)*w-1=0
=>w=A*i±(1-A^2)^0.5
=>e^(i*B)=w=A*i±(1-A^2)^0.5
=>i*B=Ln[A*i±(1-A^2)^0.5]
=>B=-i*Ln[A*i±(1-A^2)^0.5]
=-i*Ln[A*i±(1-A^2)^0.5]
特别的,我们经常取
=-i*Ln[A*i+(1-A^2)^0.5]
//由于上面已经推导出复数求次方与取自然对数的解析式,这里就不再推导了
Arccos(A)=:
记B=Arccos(A),即A=[e^(i*B)+e^(-i*B)]/2=(w+1/w)/2其中w=e^(i*B)
=>A=(w+1/w)/2
=>w^2-2*A*w+1=0
=>w=A±(A^2-1)^0.5
=>e^(i*B)=w=A±(A^2-1)^0.5
=>B=-i*Ln[A±(A^2-1)^0.5]
=-i*Ln[A±(A^2-1)^0.5]
特别的,我们经常取
=-i*Ln[A+(A^2-1)^0.5]
//由于上面已经推导出复数求次方与取自然对数的解析式,这里就不再推导了
Arctan(A)=:
记B=Arctan(A),即A={[e^(i*B)-e^(-i*B)]/[e^(i*B)+e^(-i*B)]}*(-i)=[(w-1/w)/(w+1/w)]*(-i)其中w=e^(i*B)
=>A=[(w-1/w)/(w+1/w)]*(-i)
=>(A+i)*w^2=i-A
=>w=±[(i-A)/(i+A)]^0.5
=>e^(i*B)=w=±[(i-A)/(i+A)]^0.5
=>B=-i*Ln(±[(i-A)/(i+A)]^0.5)
=-i*Ln(±[(i-A)/(i+A)]^0.5)
特别的,我们经常取
=-i*Ln([(i-A)/(i+A)]^0.5)
//由于上面已经推导出复数求次方与取自然对数的解析式,这里就不再推导了
Arccot(A)=:
记B=Arccot(A),即A={[e^(i*B)+e^(-i*B)]/[e^(i*B)-e^(-i*B)]}*i=[(w+1/w)/(w-1/w)]*i其中w=e^(i*B)
=>A=[(w+1/w)/(w-1/w)]*i
=>w^2*(A-i)=A+i
=>w=±[(A+i)/(A-i)]^0.5
=>e^(i*B)=w=±[(A+i)/(A-i)]^0.5
=>B=-i*Ln(±[(A+i)/(A-i)]^0.5)
=-i*Ln(±[(A+i)/(A-i)]^0.5)
特别的,我们经常取
=-i*Ln([(A+i)/(A-i)]^0.5)
//由于上面已经推导出复数求次方与取自然对数的解析式,这里就不再推导了
Arcsinh(A)=:
记A=sinh(B)=[e^B-e^(-B)]/2=(w-1/w)/2其中w=e^B
=>A=(w-1/w)/2
=>w^2-2*A*w-1=0
=>w=A±(A^2+1)^0.5
=>e^B=w=A±(A^2+1)^0.5
=>B=Ln[A±(A^2+1)^0.5]
=Ln[A±(A^2+1)^0.5]
特别的,我们经常取
=Ln[A+(A^2+1)^0.5]
//由于上面已经推导出复数求次方与取自然对数的解析式,这里就不再推导了
Arccosh(A)=:
=Ln[A±(A^2-1)^0.5]
=Ln[A±i*(1-A^2)^0.5]
特别的,我们经常取
=Ln[A+(A^2-1)^0.5]
Arctanh(A)=:
=Ln[±((1+A)/(1-A))^0.5]
特别的,我们经常取
=Ln[((1+A)/(1-A))^0.5]
Arccoth(A)=:
=Ln[±((1+A)/(A-1))^0.5]
特别的,我们经常取
=Ln[((1+A)/(A-1))^0.5]

浙公网安备 33010602011771号