python/Matplotlib绘制复变函数图像教程


Posted in Python onNovember 21, 2019

今天发现sympy依赖的库mpmath里也有很多数学函数,其中也有在复平面绘制二维图的函数cplot,具体例子如下

from mpmath import *

def f1(z):
 return z

def f2(z):
 return z**3

def f3(z):
 return (z**4-1)**(1/4)

def f4(z):
 return 1/z

def f5(z):
 return atan(z)

def f6(z):
 return sqrt(z)

cplot(f1)
cplot(f2)
cplot(f3)
cplot(f4)
cplot(f5)
cplot(f6)

python/Matplotlib绘制复变函数图像教程

参照matlab绘制复变函数的例子,使用python实现绘制复变函数图像,网上还没搜到相关的文章,在这里分享出来供大家学习。

'''
参照matlab绘制复变函数的例子,创建函数cplxgrid,cplxmap,cplxroot
'''
# 1.导入相关库
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import *

# 2.创建函数
def cplxgrid(m):
 '''Return polar coordinate complex grid.

 Parameters
 ----------
 m: int

 Returns
 ----------
 z: ndarray,with shape (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)

 return z

def cplxroot(n=3,m=20):
 '''
 cplxroot(n): renders the Riemann surface for the n-th root
 cplxroot(): renders the Riemann surface for the cube root.
 cplxroot(n,m): uses an m-by-m grid. Default m = 20.

 Use polar coordinates, (r,theta).
 Use polar coordinates, (r,theta).

 Parameters
 ----------
 n: n-th root
 m: int

 Returns
 ----------
 None: Plot the Riemann surface
 '''
 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()

def cplxmap(z,cfun):
 '''
 Plot a function of a complex variable.

 Parameters
 ----------
 z: complex plane
 cfun: complex function to plot

 Returns
 ----------
 None: Plot the surface of complex function
 '''
 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: Axis limits cannot be NaN or Inf
 # 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]
 for i in w:
 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绘制复变函数图像教程

python/Matplotlib绘制复变函数图像教程

以上这篇python/Matplotlib绘制复变函数图像教程就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python连接池实现示例程序
Nov 26 Python
python虚拟环境的安装配置图文教程
Oct 20 Python
python merge、concat合并数据集的实例讲解
Apr 12 Python
python初学者,用python实现基本的学生管理系统(python3)代码实例
Apr 10 Python
python与字符编码问题
May 24 Python
Python爬虫库requests获取响应内容、响应状态码、响应头
Jan 25 Python
通过Turtle库在Python中绘制一个鼠年福鼠
Feb 03 Python
Python拼接字符串的7种方式详解
Mar 19 Python
基于tensorflow权重文件的解读
May 26 Python
python blinker 信号库
May 04 Python
python manim实现排序算法动画示例
Aug 14 Python
Python 复平面绘图实例
Nov 21 #Python
Python3并发写文件与Python对比
Nov 20 #Python
python实现高斯(Gauss)迭代法的例子
Nov 20 #Python
python、Matlab求定积分的实现
Nov 20 #Python
python 求定积分和不定积分示例
Nov 20 #Python
python 计算积分图和haar特征的实例代码
Nov 20 #Python
Python 函数绘图及函数图像微分与积分
Nov 20 #Python
You might like
提升PHP执行速度全攻略(上)
2006/10/09 PHP
thinkphp3.x中session方法的用法分析
2016/05/20 PHP
Centos6.5和Centos7 php环境搭建方法
2016/05/27 PHP
Thinkphp框架使用list_to_tree 实现无限级分类列出所有节点示例
2020/04/04 PHP
基于jquery实现的文字向上跑动类似跑马灯的效果
2014/06/17 Javascript
用javascript关闭本窗口不弹出询问框的方法
2014/09/12 Javascript
node.js中的querystring.unescape方法使用说明
2014/12/10 Javascript
JS输入用户名自动显示邮箱后缀列表的方法
2015/01/27 Javascript
JavaScript实现在标题栏上显示当前日期的方法
2015/03/19 Javascript
深入讲解AngularJS中的自定义指令的使用
2015/06/18 Javascript
JavaScript中的Function函数
2015/08/27 Javascript
JavaScript 数组- Array的方法总结(推荐)
2016/07/21 Javascript
Angular 4依赖注入学习教程之ValueProvider的使用(七)
2017/06/04 Javascript
Vue父组件调用子组件事件方法
2018/02/23 Javascript
使用vue-cli webpack 快速搭建项目的代码
2018/11/21 Javascript
使用rollup打包JS的方法步骤
2018/12/05 Javascript
微信小程序结合Storage实现搜索历史效果
2019/05/18 Javascript
在vue中利用v-html按分号将文本换行的例子
2019/11/14 Javascript
[02:33]DOTA2亚洲邀请赛趣味视频之吐真话筒
2018/03/31 DOTA
python 字符串格式化代码
2013/03/17 Python
十条建议帮你提高Python编程效率
2016/02/16 Python
Python向MySQL批量插数据的实例讲解
2018/03/31 Python
Python关于excel和shp的使用在matplotlib
2019/01/03 Python
Python使用sklearn实现的各种回归算法示例
2019/07/04 Python
Python3.7下安装pyqt5的方法步骤(图文)
2020/05/12 Python
python 实现ping测试延迟的两种方法
2020/12/10 Python
html5的画布canvas——画出弧线、旋转的图形实例代码+效果图
2013/06/09 HTML / CSS
canvas线条的属性详解
2018/03/27 HTML / CSS
Charlotte Tilbury美国官网:英国美妆品牌
2017/10/13 全球购物
澳大利亚一站式数码相机商店:CameraPro
2020/03/09 全球购物
党员个人对照检查材料思想汇报
2014/09/16 职场文书
2014企业领导班子四风对照检查材料思想汇报
2014/09/17 职场文书
政风行风评议心得体会
2014/10/21 职场文书
2014年保险公司工作总结
2014/11/22 职场文书
选调生挂职锻炼工作总结
2015/10/23 职场文书
HTML+CSS制作心跳特效的实现
2021/05/26 HTML / CSS