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按照多个字符对字符串进行分割的方法
Mar 17 Python
python字典get()方法用法分析
Apr 17 Python
详解Django框架中的视图级缓存
Jul 23 Python
详解python中executemany和序列的使用方法
Aug 12 Python
[原创]python爬虫(入门教程、视频教程)
Jan 08 Python
Python selenium抓取微博内容的示例代码
May 17 Python
Python数据持久化shelve模块用法分析
Jun 29 Python
Python列表常见操作详解(获取,增加,删除,修改,排序等)
Feb 18 Python
python 利用jinja2模板生成html代码实例
Oct 10 Python
python requests抓取one推送文字和图片代码实例
Nov 04 Python
tensorflow 固定部分参数训练,只训练部分参数的实例
Jan 20 Python
keras.layer.input()用法说明
Jun 16 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
详解:――如何将图片储存在数据库里
2006/12/05 PHP
mysql 中InnoDB和MyISAM的区别分析小结
2008/04/15 PHP
PHP依赖倒置(Dependency Injection)代码实例
2014/10/11 PHP
Nginx服务器上安装并配置PHPMyAdmin的教程
2015/08/18 PHP
PHP实现简易用户登录系统
2020/07/10 PHP
js渐变显示渐变消失示例代码
2013/08/01 Javascript
jQuery 判断图片是否加载完成方法汇总
2015/08/10 Javascript
jQuery实现的类似淘宝网站搜索框样式代码分享
2015/08/24 Javascript
深入理解JavaScript内置函数
2016/06/03 Javascript
Node.js读写文件之批量替换图片的实现方法
2016/09/07 Javascript
javascript实现消灭星星小游戏简单版
2016/11/15 Javascript
jQuery设计思想
2017/03/07 Javascript
详解webpack进阶之插件篇
2017/07/06 Javascript
Vue中render方法的使用详解
2018/01/26 Javascript
vue-cli 2.*中导入公共less文件的方法步骤
2018/11/22 Javascript
NProgress显示顶部进度条效果及使用详解
2019/09/21 Javascript
vue跳转方式(打开新页面)及传参操作示例
2020/01/26 Javascript
ant design vue导航菜单与路由配置操作
2020/10/28 Javascript
JavaScript TAB栏切换效果的示例
2020/11/05 Javascript
用Python的urllib库提交WEB表单
2009/02/24 Python
PyQt5实现简易计算器
2020/05/30 Python
Django之提交表单与前后端交互的方法
2019/07/19 Python
Django中从mysql数据库中获取数据传到echarts方式
2020/04/07 Python
python调用API接口实现登陆短信验证
2020/05/10 Python
基于python实现操作git过程代码解析
2020/07/27 Python
python反扒机制的5种解决方法
2021/02/06 Python
pytho matplotlib工具栏源码探析一之禁用工具栏、默认工具栏和工具栏管理器三种模式的差异
2021/02/25 Python
CSS3 毛玻璃效果
2019/08/14 HTML / CSS
We Fashion荷兰:一家国际时装公司
2018/04/18 全球购物
const char*, char const*, char*const的区别是什么
2014/07/09 面试题
政治学求职信
2014/06/03 职场文书
年会邀请函范文
2015/01/30 职场文书
专家推荐信怎么写
2015/03/25 职场文书
2015年小班保育员工作总结
2015/05/27 职场文书
婚育证明格式
2015/06/17 职场文书
vue el-table实现递归嵌套的示例代码
2022/08/14 Vue.js