基础
- 虚数单位的定义: i = − 1 i=\sqrt{-1} i=−1
- 复数:
z
=
a
+
b
i
=
r
e
i
θ
z=a+bi=re^{iθ}
z=a+bi=reiθ,实部为
R
e
(
z
)
=
a
Re(z)=a
Re(z)=a,虚部为
I
m
(
z
)
=
b
Im(z)=b
Im(z)=b
复数分为实数(b=0)和虚数(b≠0),实部为0的虚数为纯虚数 - 共轭复数: z ˉ = a − b i = r e − i θ \bar z=a-bi=re^{-iθ} zˉ=a−bi=re−iθ
- 模: r = ∣ z ∣ = a 2 + b 2 r=|z|=\sqrt{a^2+b^2} r=∣z∣=a2+b2
- 辐角: θ = A r g ( z ) = arctan y x + 2 k π , k ∈ Z θ=\mathrm{Arg}(z)=\arctan\frac yx+2kπ,k∈Z θ=Arg(z)=arctanxy+2kπ,k∈Z
- 欧拉公式: z = r e i θ = r ( cos θ + i sin θ ) z=re^{iθ}=r(\cosθ+i\sinθ) z=reiθ=r(cosθ+isinθ)
- 复数的三角函数: sin z = e i z − e − i z 2 i , cos z = e i z + e − i z 2 , tan z = − i ⋅ e i z − e − i z e i z + e − i z \sin z=\frac{e^{iz}-e^{-iz}}{2i},\cos z=\frac{e^{iz}+e^{-iz}}2,\tan z=-i·\frac{e^{iz}-e^{-iz}}{e^{iz}+e^{-iz}} sinz=2ieiz−e−iz,cosz=2eiz+e−iz,tanz=−i⋅eiz+e−izeiz−e−iz
- 反三角函数: A r c s i n z = − i ⋅ L n ( i z + 1 − z 2 ) , A r c c o s z = π 2 + i ⋅ L n ( i z + 1 − z 2 ) , A r c t a n z = i 2 ⋅ L n ( 1 − i z 1 + i z ) = i 2 ⋅ [ L n ( 1 − i z ) − L n ( 1 + i z ) ] \mathrm{Arcsin}z=-i·\mathrm{Ln}(iz+\sqrt{1-z^2}),\mathrm{Arccos}z=\fracπ2+i·\mathrm{Ln}(iz+\sqrt{1-z^2}),\mathrm{Arctan}z=\frac i2·\mathrm{Ln}(\frac{1-iz}{1+iz})=\frac i2·[\mathrm{Ln}(1-iz)-\mathrm{Ln}(1+iz)] Arcsinz=−i⋅Ln(iz+1−z2),Arccosz=2π+i⋅Ln(iz+1−z2),Arctanz=2i⋅Ln(1+iz1−iz)=2i⋅[Ln(1−iz)−Ln(1+iz)]
- 割函数: sinh z = e z − e − z 2 , cosh z = e z + e − z 2 , tanh z = e z − e − z e z + e − z \sinh z=\frac{e^z-e^{-z}}2,\cosh z=\frac{e^z+e^{-z}}2,\tanh z=\frac{e^z-e^{-z}}{e^z+e^{-z}} sinhz=2ez−e−z,coshz=2ez+e−z,tanhz=ez+e−zez−e−z
- 复数的对数: L n ( z ) = ln ∣ r ∣ + i A r g ( z ) \mathrm{Ln}(z)=\ln|r|+i\mathrm{Arg}(z) Ln(z)=ln∣r∣+iArg(z)
- 柯西-黎曼方程(C-R方程): { u x ′ = v y ′ u y ′ = − v x ′ \left\{\begin{matrix}u'_x=v'_y\\u'_y=-v'_x\end{matrix}\right. {ux′=vy′uy′=−vx′。设 z = x + y i , z=x+yi, z=x+yi,复变函数 f ( z ) = u + v i f(z)=u+vi f(z)=u+vi,则f(z)在满足上述方程组的情况下解析。
- 在某区域内解析的复变函数,其实部和虚部在该区域内也调和。
级数
设有复变函数 f ( z ) = ∑ i ∈ Z a i ( z − z 0 ) i f(z)=\sum_{i∈Z}a_i(z-z_0)^i f(z)=∑i∈Zai(z−z0)i。对于复数列而言:
- 复数列级数收敛的判断方法和高等数学中实数列的完全一致
- 计算时,将求绝对值换为求复数的模
- 如果原函数按比值判别法、根式判别法等算出来的收敛圆中有奇点,则实际上的收敛半径为展开点到距其最近的奇点的距离
- 如果被展开点是展式的奇点,那就在其去心领域上
- 刚好在收敛圆上的点不一定收敛或发散
- 如果g(z)的值在f(z)展式的收敛圆内,则可以将g(z)代入f(z)的展式,变为f(g(z))
- 在幂级数的收敛圆内,幂级数的和函数解析
实函数可以被泰勒展开,复变函数则可以被洛朗展开:
- 洛朗展开就是在泰勒展开的基础上加上了负数次幂项
- 洛朗展式中的n次项系数为 a n = 1 2 π i ∮ C f ( z ) ( z − z 0 ) n + 1 d z a_n=\frac1{2πi}∮_C\frac{f(z)}{(z-z_0)^{n+1}}\mathrm dz an=2πi1∮C(z−z0)n+1f(z)dz
- 常见公式的展开方法可参考实函数展式
- 洛朗展开时,为了在指定区域内展开,有时需要将z换元成 1 z \frac1z z1。在|z|<1时, 1 1 − z = 1 + z + z 2 + ⋯ \frac1{1-z}=1+z+z^2+⋯ 1−z1=1+z+z2+⋯。若想要在|z|>1处将其展开,必须换元: 1 1 − z = 1 z ( 1 z − 1 ) = − 1 z ( 1 + z − 1 + z − 2 + ⋯ ) \frac1{1-z}=\frac1{z(\frac1z-1)}=-\frac1z(1+z^{-1}+z^{-2}+⋯) 1−z1=z(z1−1)1=−z1(1+z−1+z−2+⋯)
- |z|≤1时, A r c t a n ( z ) = z − z 3 3 + z 5 5 − ⋯ \mathrm{Arctan}(z)=z-\frac{z^3}3+\frac{z^5}5-⋯ Arctan(z)=z−3z3+5z5−⋯。|z|>1时不能直接泰勒展开,由 A r c t a n ( z ) + A r c t a n ( 1 z ) = π 2 \mathrm{Arctan}(z)+\mathrm{Arctan}(\frac1z)=\fracπ2 Arctan(z)+Arctan(z1)=2π可得其洛朗展开为 A r c t a n ( z ) = π 2 − A r c t a n ( 1 z ) = π 2 − 1 z + 1 3 z 3 − 1 5 z 5 + ⋯ \mathrm{Arctan}(z)=\fracπ2-\mathrm{Arctan}(\frac1z)=\fracπ2-\frac1z+\frac1{3z^3}-\frac1{5z^5}+⋯ Arctan(z)=2π−Arctan(z1)=2π−z1+3z31−5z51+⋯。
孤立奇点的性质:
- 若f(x)在z0的洛朗展式中无负数次幂项,则z0是可去奇点
- 既然可去,那么 lim z → z 0 \lim\limits_{z→z_0} z→z0lim存在(类似于“可去间断点”)
- 若f(x)在z0的洛朗展式中最低次幂项为-n次,则z0是n阶极点
- 极点处有 lim z → z 0 f ( z ) = ∞ \lim\limits_{z→z_0}f(z)=∞ z→z0limf(z)=∞(类似于“无穷间断点”)
- 若f(x)在z0的洛朗展式中有无数个负数次幂项,则z0是本性奇点
- z → z 0 z→z_0 z→z0时,本性奇点处的函数值震荡(类似于“震荡间断点”)
- z0是f(x)的n阶奇点⇔z0是 1 f ( x ) \frac1{f(x)} f(x)1的n阶零点
- 将无穷远点∞作为孤立奇点时,用洛朗展式的正数次幂项系数判断其性质
- 零点阶数的判别方法可以参考不动点迭代法中的判别方法
积分
设有单连通域D和积分路径L。
- 若在单连通域内的实二元积分 ∫ L ( P d x + Q d y ) ∫_L(P\mathrm dx+Q\mathrm dy) ∫L(Pdx+Qdy)满足 P y ′ = Q x ′ P'_y=Q'_x Py′=Qx′,则 P d x + Q d y P\mathrm dx+Q\mathrm dy Pdx+Qdy为某一函数的全微分,且原积分的值与路径无关。同理,在处处解析的单连通域内, ∫ L f ( z ) d z ∫_Lf(z)\mathrm dz ∫Lf(z)dz的积分也与路径无关。
L在D内成一元环C且f(z)在L内部解析时(内部为L的正方向的左侧):
- 积分与路径无关,因此在不超出D,不改变路径所围奇点的的前提下可以随意变换路径C
- 柯西-古萨定理: ∮ C f ( z ) d z = 0 ∮_Cf(z)\mathrm dz=0 ∮Cf(z)dz=0
- 若C内有n阶奇点z0,则 ∮ C f ( z ) d z = lim z → z 0 2 π i ⋅ [ ( z − z 0 ) n f ( z ) ] ( n − 1 ) ( n − 1 ) ! ∮_Cf(z)\mathrm dz=\lim\limits_{z→z_0}2πi·\frac{[(z-z_0)^nf(z)]^{(n-1)}}{(n-1)!} ∮Cf(z)dz=z→z0lim2πi⋅(n−1)![(z−z0)nf(z)](n−1)或 2 π i ⋅ a − 1 2πi·a_{-1} 2πi⋅a−1, a − 1 a_{-1} a−1为 ( z − z 0 ) n f ( z ) (z-z_0)^nf(z) (z−z0)nf(z)在 z 0 z_0 z0点的洛朗展式的-1次幂的系数.
- 若C内有本性奇点z0,则 ∮ C f ( z ) d z = 2 π i ⋅ a − 1 ∮_Cf(z)\mathrm dz=2πi·a_{-1} ∮Cf(z)dz=2πi⋅a−1
- 若C内有n个孤立奇点,根据复合闭路定理,可以将C等价地变换成n元环,随后分解成n个对应的一元环,如下图:
留数是去掉2πi后的围绕单个孤立奇点的一元环积分,即 ∮ C f ( z ) d z = 2 π i R e s [ f ( z ) , z 0 ] ∮_Cf(z)\mathrm dz=2πiRes[f(z),z_0] ∮Cf(z)dz=2πiRes[f(z),z0]。
- 留数定理:若C内有z1~zn共n个奇点,由复合闭路定理可得 ∮ C f ( z ) d z = 2 π i ∑ i = 1 n R e s [ f ( z ) , z i ] ∮_Cf(z)\mathrm dz=2πi\sum_{i=1}^nRes[f(z),z_i] ∮Cf(z)dz=2πi∑i=1nRes[f(z),zi]
- R e s [ f ( z ) , z i ] = lim z → z 0 [ ( z − z 0 ) n f ( z ) ] ( n − 1 ) ( n − 1 ) ! 在 z 0 点展开 = = = = = = = = = = [ ( z − z 0 ) n f ( z ) ] − 1 Res[f(z),z_i]=\lim\limits_{z→z_0}\frac{[(z-z_0)^nf(z)]^{(n-1)}}{(n-1)!}\underset{==========}{在z_0点展开}[(z-z_0)^nf(z)]_{-1} Res[f(z),zi]=z→z0lim(n−1)![(z−z0)nf(z)](n−1)==========在z0点展开[(z−z0)nf(z)]−1
- 扩展留数定理:所有奇点的留数之和为0,即 ∑ i = 1 n R e s [ f ( z ) , z i ] = − R e s [ f ( z ) , ∞ ] \sum_{i=1}^nRes[f(z),z_i]=-Res[f(z),∞] ∑i=1nRes[f(z),zi]=−Res[f(z),∞],可在奇点很多时使用
- R e s [ f ( z ) , ∞ ] = R e s [ − 1 z 2 f ( 1 z ) , 0 ] ∑ i = 1 n R e s [ f ( z ) , z i ] = R e s [ 1 z 2 f ( 1 z ) , 0 ] Res[f(z),∞]=Res[-\frac1{z^2}f(\frac1z),0]\\\sum_{i=1}^nRes[f(z),z_i]=Res[\frac1{z^2}f(\frac1z),0] Res[f(z),∞]=Res[−z21f(z1),0]∑i=1nRes[f(z),zi]=Res[z21f(z1),0]
以虚积实
- 积分时若有sin x、cos x,可考虑换元,令z=eix,则dz=ieixdx=iz dx, ∫ 0 2 π → ∫ ∣ z ∣ = 1 ∫_0^{2π}→∫_{|z|=1} ∫02π→∫∣z∣=1
若L为绕点z0的,转角从α到β的圆弧,则有:
- 大弧引理: lim r → + ∞ ∫ L f ( z ) d z = ( β − α ) i ⋅ lim z → ∞ ( z − z 0 ) f ( z ) \lim\limits_{r→+∞}∫_Lf(z)\mathrm dz=(β-α)i·\lim\limits_{z→∞}(z-z_0)f(z) r→+∞lim∫Lf(z)dz=(β−α)i⋅z→∞lim(z−z0)f(z)
- 小弧引理: lim r → 0 + ∫ L f ( z ) d z = ( β − α ) i ⋅ lim z → z 0 ( z − z 0 ) f ( z ) \lim\limits_{r→0^+}∫_Lf(z)\mathrm dz=(β-α)i·\lim\limits_{z→z_0}(z-z_0)f(z) r→0+lim∫Lf(z)dz=(β−α)i⋅z→z0lim(z−z0)f(z)
- 约当引理: lim z → ∞ f ( z ) = 0 , m > 0 ⇒ lim r → 0 + ∫ L f ( z ) e i m z d z = 0 \lim\limits_{z→∞}f(z)=0,m>0⇒\lim\limits_{r→0^+}∫_Lf(z)e^{imz}\mathrm dz=0 z→∞limf(z)=0,m>0⇒r→0+lim∫Lf(z)eimzdz=0
- 互质因式积分定理:若P(x)和Q(x)是互质多项式,且Q比P高至少两次,Q(z)在实轴上不为0,则 ∫ − ∞ + ∞ P ( x ) Q ( x ) e i m z d z = 2 π i ⋅ ∑ I m ( A i ) > 0 R e s [ P ( x ) Q ( x ) e i m z , a i ] ∫_{-∞}^{+∞}\frac{P(x)}{Q(x)}e^{imz}\mathrm dz=2πi·∑_{Im(A_i)>0}Res[\frac{P(x)}{Q(x)}e^{imz},a_i] ∫−∞+∞Q(x)P(x)eimzdz=2πi⋅∑Im(Ai)>0Res[Q(x)P(x)eimz,ai],m>0
from PIL import Image, ImageDraw
import matplotlib.pyplot as plt,numpy as np,time
def sin(z):return np.sin(z)#弧度
def cos(z):return np.cos(z)
def tan(z):return np.tan(z)
def csc(z):return 1/np.sin(z)
def sec(z):return 1/np.cos(z)
def cot(z):return 1/np.tan(z)
def asin(z):return np.arcsin(z)
def acos(z):return np.arccos(z)
def atan(z):return np.arctan(z)
def acot(z):return np.arctan(1/z)
def e(z):return np.exp(z)
def ln(z):return np.log(z)
def sinh(z):return np.sinh(z)
def tanh(z):return np.tanh(z)
def asinh(z):return np.arcsinh(z)
def atanh(z):return np.arctanh(z)
def arg(z):return np.angle(z)#弧度,从-π到+π
def Re(z):return z.real
def Im(z):return z.imag
e=np.e
π=np.pi
def to01(x):return (tanh(x)+1)/2#实数→0~1
def to1(x):return 1-e**(-x)#正数→0~1
def to255(x):return(int(255*(tanh(x)+1)/2))#实数域→0~255
def HSV2RGB(H,S,V):#弧度H,0~1S,0~1V→RGB255
R,G,B=0,0,0
if H>=0:h=H*3/π
else:h=H*3/π+6
i=int(h)%6
F=h-i
a,b,c=V*(1-S),V*(1-F*S),V*(1-(1-F)*S)
if i<1: R,G,B=int(V*255),int(c*255),int(a*255)
elif i<2:R,G,B=int(b*255),int(V*255),int(a*255)
elif i<3:R,G,B=int(a*255),int(V*255),int(c*255)
elif i<4:R,G,B=int(a*255),int(b*255),int(V*255)
elif i<5:R,G,B=int(c*255),int(a*255),int(V*255)
else: R,G,B=int(V*255),int(a*255),int(b*255)
return(R,G,B)
def RGB(R,G,B):return(to255(R),to255(G),to255(B))#RGB实数域→RGB255
def f(z,C):#迭代函数
return asin(C)**(-z)
I=25 #迭代次数
name="3(asinC)^-z"#图名
Rx,Ry=2*π,2#区间最值
X,Y=3142,1000 #图像像素
pic=Image.new('RGB',(X,Y),'gray')
draw=ImageDraw.Draw(pic)
t0=time.time() #开始计时
for x in range(X):
for y in range(Y):
z0=(2*x/(X-1)-1)*Rx-(2*y/(Y-1)-1)*1j*Ry#坐标值
z=z0#初值
try:
for i in range(I+1):
z=f(z,z0)
if abs(z)>10:break
if abs(z)>10:#发散
draw.point((x,y),'white')
continue
if abs(z)<1:draw.point((x,y),HSV2RGB(arg(z),1,(abs(z)*(2-abs(z)))**0.5))
else:draw.point((x,y),HSV2RGB(arg(z),exp(1-abs(z)),1))
except:continue
pic.save('Desktop/{}.png'.format(name),'PNG')#保存图像
print("已完成,用时{:.2f}秒".format(time.time()-t0))#显示用时