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 相关文章推荐
pandas数据处理基础之筛选指定行或者指定列的数据
May 03 Python
django-allauth入门学习和使用详解
Jul 03 Python
python plotly绘制直方图实例详解
Jul 22 Python
Python matplotlib绘制饼状图功能示例
Sep 10 Python
如何安装2019Pycharm最新版本(详细教程)
Sep 26 Python
dpn网络的pytorch实现方式
Jan 14 Python
Python使用configparser库读取配置文件
Feb 22 Python
Spring Boot中使用IntelliJ IDEA插件EasyCode一键生成代码详细方法
Mar 20 Python
详解使用python3.7配置开发钉钉群自定义机器人(2020年新版攻略)
Apr 01 Python
解决jupyter notebook 前面书写后面内容消失的问题
Apr 13 Python
Python小白不正确的使用类变量实例
May 29 Python
Python如何用re模块实现简易tokenizer
May 02 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
PHP下通过系统信号量加锁方式获取递增序列ID
2009/09/25 PHP
深入file_get_contents与curl函数的详解
2013/06/25 PHP
php生成扇形比例图实例
2013/11/06 PHP
PHP封装的XML简单操作类完整实例
2017/11/13 PHP
学习thinkphp5.0验证类使用方法
2017/11/16 PHP
详解php命令注入攻击
2019/04/06 PHP
PHP实现统计代码行数小工具
2019/09/19 PHP
把textarea中字符串里含有的回车换行替换成<br>的javascript代码
2007/04/20 Javascript
Javascript计算两个marker之间的距离(Google Map V3)
2013/04/26 Javascript
Jquery中给animation加更多的运作效果实例
2013/09/05 Javascript
异步JavaScript编程中的Promise使用方法
2015/07/28 Javascript
详解在Angular项目中添加插件ng-bootstrap
2017/07/04 Javascript
JS鼠标滚动分页效果示例
2017/07/05 Javascript
JS实现元素上下左右移动效果
2017/10/18 Javascript
layui点击按钮页面会自动刷新的解决方案
2019/10/25 Javascript
浅谈vue中resetFields()使用注意事项
2020/08/12 Javascript
vue 中this.$set 动态绑定数据的案例讲解
2021/01/29 Vue.js
[15:41]教你分分钟做大人——灰烬之灵
2015/03/11 DOTA
Python性能提升之延迟初始化
2016/12/04 Python
Python实现对百度云的文件上传(实例讲解)
2017/10/21 Python
python中的随机函数random的用法示例
2018/01/27 Python
django认证系统实现自定义权限管理的方法
2019/08/28 Python
Python 类,property属性(简化属性的操作),@property,property()用法示例
2019/10/12 Python
python-OpenCV 实现将数组转换成灰度图和彩图
2020/01/09 Python
Python 基于FIR实现Hilbert滤波器求信号包络详解
2020/02/26 Python
完美解决pyinstaller打包报错找不到依赖pypiwin32或pywin32-ctypes的错误
2020/04/01 Python
Jupyter 无法下载文件夹如何实现曲线救国
2020/04/22 Python
python 获取剪切板内容的两种方法
2020/11/28 Python
美国大码时尚女装购物网站:ELOQUII
2017/12/28 全球购物
中国一家综合的外贸B2C电子商务网站:DealeXtreme(DX)
2020/03/10 全球购物
应届大学生自荐信
2013/12/05 职场文书
会计实训报告范文
2014/11/04 职场文书
Django一小时写出账号密码管理系统
2021/04/29 Python
Android开发手册Chip监听及ChipGroup监听
2022/06/10 Java/Android
错误码NET::ERR_CERT_DATE_INVALID证书已过期解决方法?
2022/07/07 数码科技