python/Matplotlib绘制复变函数图像教程
今天发现sympy依赖的库mpmath里也有很多数学函数,其中也有在复平面绘制二维图的函数cplot,具体例子如下
frommpmathimport* deff1(z): returnz deff2(z): returnz**3 deff3(z): return(z**4-1)**(1/4) deff4(z): return1/z deff5(z): returnatan(z) deff6(z): returnsqrt(z) cplot(f1) cplot(f2) cplot(f3) cplot(f4) cplot(f5) cplot(f6)
参照matlab绘制复变函数的例子,使用python实现绘制复变函数图像,网上还没搜到相关的文章,在这里分享出来供大家学习。
''' 参照matlab绘制复变函数的例子,创建函数cplxgrid,cplxmap,cplxroot ''' #1.导入相关库 importnumpyasnp importmatplotlib.pyplotasplt frommpl_toolkits.mplot3dimport* #2.创建函数 defcplxgrid(m): '''Returnpolarcoordinatecomplexgrid. Parameters ---------- m:int Returns ---------- z:ndarray,withshape(m+1)-by-(2*(m+1)) ''' m=m r=np.arange(0,m).reshape(m,1)/m theta=np.pi*np.arange(-m,m)/m z=r*np.exp(1j*theta) returnz defcplxroot(n=3,m=20): ''' cplxroot(n):renderstheRiemannsurfaceforthen-throot cplxroot():renderstheRiemannsurfaceforthecuberoot. cplxroot(n,m):usesanm-by-mgrid.Defaultm=20. Usepolarcoordinates,(r,theta). Usepolarcoordinates,(r,theta). Parameters ---------- n:n-throot m:int Returns ---------- None:PlottheRiemannsurface ''' m=m+1 r=np.arange(0,m).reshape(m,1)/m theta=np.pi*np.arange(-n*m,n*m)/m z=r*np.exp(1j*theta) s=r*(1/n)*np.exp(1j*theta/n) fig=plt.figure() ax=fig.add_subplot(111,projection='3d') #ax.plot_surface(np.real(z),np.imag(z),np.real(s),color=np.imag(s)) ax.plot_surface(np.real(z),np.imag(z),np.real(s),cmap=plt.cm.hsv) ax.set_xlim((-1,1)) ax.set_ylim((-1,1)) ax.set_xlabel('Real') ax.set_ylabel('Imag') ax.set_xticks([]) ax.set_yticks([]) ax.set_zticks([]) ax.set_autoscalez_on(True)#z轴自动缩放 ax.grid('on') plt.show() defcplxmap(z,cfun): ''' Plotafunctionofacomplexvariable. Parameters ---------- z:complexplane cfun:complexfunctiontoplot Returns ---------- None:Plotthesurfaceofcomplexfunction ''' blue=0.2 x=np.real(z) y=np.imag(z) u=np.real(cfun) v=np.imag(cfun) M=np.max(np.max(u))#复变函数实部最大值 m=np.min(np.min(u))#复变函数实部最大值 s=np.ones(z.shape) fig=plt.figure() ax=fig.add_subplot(111,projection='3d') #投影部分用线框图 surf1=ax.plot_wireframe(x,y,m*s,cmap=plt.cm.hsv) surf2=ax.plot_surface(x,y,u,cmap=plt.cm.hsv) #绘制复变函数1/z时会出错,ValueError:AxislimitscannotbeNaNorInf #ax.set_zlim(m,M) ax.set_xlim((-1,1)) ax.set_ylim((-1,1)) ax.set_xlabel('Real') ax.set_ylabel('Imag') ax.set_xticks([]) ax.set_yticks([]) ax.set_zticks([]) ax.set_autoscalez_on(True)#z轴自动缩放 ax.grid('on') plt.show() def_test_cplxmap(): '''测试cplxmap函数''' z=cplxgrid(30) w1=z w2=z**3 w3=(z**4-1)**(1/4) w4=1/z w5=np.arctan(2*z) w6=np.sqrt(z) w=[w1,w2,w3,w4,w5,w6] foriinw: cplxmap(z,i) def_test_cplxroot(): '''测试cplxroot函数''' cplxroot(n=2) cplxroot(n=3) cplxroot(n=4) cplxroot(n=5) if__name__=='__main__': _test_cplxmap() _test_cplxroot()
以上这篇python/Matplotlib绘制复变函数图像教程就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。