当前位置: 首页 > news >正文

在 Python 和 Mathematica 中可视化复值函数

原文:towardsdatascience.com/today-i-was-pouring-through-my-complex-variables-and-analytic-functions-book-written-by-the-e9205f71485d?source=collection_archive---------8-----------------------#2024-02-19

解锁数学难题的视觉洞察

https://medium.com/@Dani_Lisle?source=post_page---byline--e9205f71485d--------------------------------https://towardsdatascience.com/?source=post_page---byline--e9205f71485d-------------------------------- Dani Lisle

·发表于 Towards Data Science ·3 分钟阅读·2024 年 2 月 19 日

今天我正在翻阅由受尊敬的 Fornberg 和 Piret 编写的*《复变函数与解析函数》*,尽力理解复值函数的行为。由于这些函数既有实数输入,也有虚数输入,并且输出两个分量,因此,单一的 3D 图形不足以展示函数的行为。我们需要将这种可视化拆分为实部和虚部的单独图表,或者按幅度和相位(角度)来展示。

我希望能够随意操作任何想到的函数,拖动和缩放其图表,并在可视化细节中探索它,以理解它如何从方程中得出。对于这样的任务,Wolfram Mathematica 是一个很好的起始工具。

Wolfram 语言

plotComplexFunction[f_]:=Module[{z,rePlot,imPlot,magPlot,phasePlot},z=x+I y;rePlot=Plot3D[Re[f[z]],{x,-2,2},{y,-2,2},AxesLabel->{"Re(z)","Im(z)","Re(f(z))"},Mesh->None];imPlot=Plot3D[Im[f[z]],{x,-2,2},{y,-2,2},AxesLabel->{"Re(z)","Im(z)","Im(f(z))"},Mesh->None];magPlot=Plot3D[Abs[f[z]],{x,-2,2},{y,-2,2},AxesLabel->{"Re(z)","Im(z)","Abs(f(z))"},Mesh->None,ColorFunction->Function[{x,y,z},ColorData["Rainbow"][Rescale[Arg[x+I y],{-Pi,Pi}]]],ColorFunctionScaling->False];phasePlot=DensityPlot[Arg[f[z]],{x,-2,2},{y,-2,2},ColorFunction->"Rainbow",PlotLegends->Automatic,AxesLabel->{"Re(z)","Im(z)"},PlotLabel->"Phase"];GraphicsGrid[{{rePlot,imPlot},{magPlot,phasePlot}},ImageSize->800]];f[z_]:=(1/2)*(z+1/z);plotComplexFunction[f]https://github.com/dreamchef/complex-functions-visualization

github.com/dreamchef/complex-functions-visualization

我编写了上述 Mathematica 代码,用于生成一个图表网格,展示如上所述的两种方式的函数。在顶部显示了函数的虚部和实部,

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/9b6073b85b9639da070285491a0935ae.png

底部显示了幅度和相位,以颜色表示:

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/0234fbdcc4486ce649d41dee4561a6a0.png

来自 Wolfram 的分量和幅度-相位图 f(z)

在用这段代码玩了几个函数并确信它们有意义之后,我对如何在 Python 中实现相同功能产生了兴趣,以便将其与其他数学编程项目连接起来。

Python、PyPlot 和 complex-plotting-tools

我在 GitHub 上找到了一个很棒的项目(github.com/artmenlope/complex-plotting-tools),我决定将其作为起点,并有可能在未来做出贡献。这个仓库提供了一个非常简单的界面,用于以多种方式绘制复值函数。感谢github.com/artmenlope!例如,在导入numpymatplotlib和该仓库的cplotting_tools模块后,定义函数并调用cplt.complex_plot3D(x,y,f,log_mode=False),将生成以下内容:

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/da80e1f86e6827c86fbbf1432799ac18.png

来自 complex-plotting-tools 的 f(z)幅度和相位图

这些图都是用于上面相同的 f(z)。要查看该函数的虚部和实部并排显示,可以使用cplot.plot_re_im(x,y,f,camp="twilight",contour=False,alpha=0.9)

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/4d9943d906a41a280988bde245410cb8.png

来自 complex-plotting-tools 的分量绘图

此外,该库还提供了其他酷炫的方式来研究函数,包括流线图:

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/c026babc96d69ed06a58d6453cc920af.png

来自 complex-plotting-tools 的 f(z)流线图

未来方向

这个库展示了很大的潜力,且相对容易使用!它确实需要定义一个pts变量,用于编码给定函数的极点和零点。Wolfram 不需要这个,因为它在幕后计算这些点的位置。如果 complex-plotting-tools 也具备这个功能,将为用户节省大量的精力。我计划在不久的将来将其实现到该模块中。

与此同时,尽情享受使用 Wolfram 和 Python 绘图的乐趣,欢迎在下方评论中分享您的想法和问题,或通过LinkedIn与我联系,或在GitHub与我合作!

除非另有说明,所有图片均由作者创建。

http://www.jsqmd.com/news/915450/

相关文章:

  • ContextMenuManager完整指南:高效管理Windows右键菜单的实用技巧
  • 别再死记硬背了!用‘连连看’游戏思维理解CFC编程:功能块、连线与控制点实操
  • 2026年新疆HDPE管道厂家与市政基建工程管材供应商系统对比教程 - 企业名录优选推荐
  • Cursor插件大揭秘:多种开发工具类插件功能全解析!
  • 2026年汽车贴膜哪家口碑好? - mypinpai
  • 烟台一站式营销全案策划落地机构排行:实效维度对比 - 奔跑123
  • 2026新疆HDPE管道厂家选型指南:本地源头直供、市政基建、非开挖工程全场景覆盖对比 - 企业名录优选推荐
  • 企业私有化AI训练推理一体工作站DLTM企业级AI模型工作站助力企业AI落地常态化
  • 3个实用技巧:用哔哩下载姬打造个性化视频观看体验
  • 告别懵圈!用5分钟搞懂SOME/IP的四种通信模式(附实战场景解析)
  • 别再手动下载地图JSON了!教你用ECharts官方地图扩展一键生成全国省市地图
  • 襄阳黄金回收新标杆!余生黄金回收全国连锁,免费上门卖金无忧 - 润富黄金珠宝行
  • 国内污水处理数字孪生优质服务企业权威排行盘点 - 奔跑123
  • 告别手写循环!Go 1.21 slices包实战:用Max/Min/Sort轻松处理业务数据
  • CANN/catlass Tile行广播乘法API
  • 别再只调包了!手撕SVM与BP神经网络,用MATLAB/Python复现健康数据分析全流程
  • Epson机器人T3系列与欧姆龙PLC通讯方案选型避坑:标准IO、Modbus还是Fins TCP?
  • Python yield 最通俗、最实用的讲解
  • 从零封装一个AS608的HAL库驱动:CubeMX配置、串口中断处理与模块化代码移植指南
  • 从ARIMA建模反推:为什么你的ADF检验结果总是不对?可能是这些预处理步骤没做好
  • 快手去水印视频解析在线提取:官方方法、工具风险与侵权界定全解 - 科技热点发布
  • DistilRoBERTa-Base-Paraphrase-v1-OpenMind:推荐系统中用户兴趣向量化的终极实践指南
  • 抖音本地保存不带水印的方法全解析含官方渠道合规方式与工具风险说明 - 科技热点发布
  • 手把手教你搞定四川广电九洲PTV-8698机顶盒刷机(HI3798M310高安版+当贝桌面)
  • 告别/dev/ttyUSB0:为思岚A2激光雷达创建永久别名,解决ROS2项目中的串口烦恼
  • KeyPhraseTransformer实战案例:如何用一行代码提取长文本中的关键主题?
  • 从零封装一个AS608的HAL库驱动:STM32CubeMX工程模板与可移植性设计详解
  • Stoic模型性能评估:准确预测蛋白质复合物组分比例的机器学习方法
  • GEAK框架:LLM驱动的Triton GPU内核生成技术解析
  • nanowhale-100m的fp32精度要求:为什么bf16会导致NaN问题及解决方案