python中怎么画曲线(绘制二元函数曲面)
python中怎么画曲线(绘制二元函数曲面)
2024-06-29 01:13:44  作者:九妄罪人  网址:https://m.xinb2b.cn/life/zcm317870.html

我们将演示如何借助于ufunc的广播运算计算下述二元函数的在一个xy平面上的值并将其绘制成3D曲面。其中,x和y的取值范围均为[-2, 2]。

python中怎么画曲线(绘制二元函数曲面)(1)

为了达到目的,我们需要一个二维的结果数组z,其元素的下标对应参数x,y的取值,其元素的值则为上述函数的函数值。这可以通过广播计算来得到。

知识产权协议

允许以教育/培训为目的向学生或受众进行免费引用,展示或者讲述,无须取得作者同意。

不允许以电子/纸质出版为目的进行摘抄或改编。

np.ogrid是个特殊对象,通过切片下标来生成用于广播运算的数组。先看下述程序:

#ogrid.pyx,y = np.ogrid[0:3:4j,0:4:5j]print("x=\n",x)print("y=\n",y)print("x.shape=",x.shape)print("y.shape=",y.shape)

执行结果:

x= [[0.] [1.] [2.] [3.]]y= [[0. 1. 2. 3. 4.]]x.shape= (4, 1)y.shape= (1, 5)

0:3:4j这种切片语法类似于np.linspace(0,3,4),它表示生成从0到3的包含4个元素的等差数列。这里的j并不表示复数的虚部,它只是一种语法格式。由于广播的需要,x的形状被设置为(4,1)。同理,由于广播需要,y的形状被设置成了(1,5)。这样,通过ogrid生成的x和y数组符合广播运算的规则,可以进行广播运算。

下述代码将x = [-2, 2],y = [-2, 2]的函数值矩阵以平面图形式绘制。

#func2d.pyimport numpy as npfrom matplotlib import pyplot as pltfrom matplotlib import cmy,x = np.ogrid[-2:2:200j,-2:2:200j]z = x * np.exp(-x**2-y**2)extent = [np.min(x),np.max(x),np.min(y),np.max(y)]plt.imshow(z,extent=extent,cmap=cm.gray)plt.colorbar()plt.show()

根据ogrid的输出,y,x分别是形状为(200,1)和(1,200)的数组。z = x * np.exp(-x**2-y**2)的执行过程中将发生广播,结果数组z将会是一个形状为(200,200)的二维数组,元素值为对应x,y的函数值。如果将z视为一个图像,那么其横向x取值范围对应[-2, 2],纵向y取值范围取应[-2, 2]。

extent = [np.min(x),np.max(x),np.min(y),np.max(y)]将x及y的取值范围放入一个列表。plt.imshow()函数将二维数组z作为图像显示,extent参数指明了横纵坐标的范围,cmap则指定了颜色映射对象,该颜色映射对象负责把z中的元素值转换成像素点的颜色。plt.colorbar()则“聪明”通过颜色条显示z中的函数值与颜色之间的对应关系。plt.show()真正地把图表显示出来。执行结果如下:

python中怎么画曲线(绘制二元函数曲面)(2)

下述代码将x = [-2, 2],y = [-2, 2]的函数值矩阵以3D图形式绘制。

#func3d.pyimport numpy as npimport mpl_toolkits.mplot3dfrom matplotlib import pyplot as pltfrom matplotlib import cmx,y = np.mgrid[-2:2:20j,-2:2:20j]z = x * np.exp(- x**2 - y**2)fig = plt.figure(figsize=(8,6))ax = fig.gca(projection='3d')ax.plot_surface(x,y,z,cmap=cm.ocean)plt.show()

ax是表示一个子图,由于ax.plot_surface()函数要求x,y,z三个数组都必须是相同形状的二维数组,所以上述代码中没有使用ogrid来生成广播数组,而是使用了mgrid。mgrid的功能与ogrid相近,区别在于其返回的是已经进行了形状扩充的数组。也就是说,上述通过mgrid生成出来的x,y数组的形状已经是(20,20)。读者可以自行打印x,y的值出来观察mgrid对象的用法。读者如果对matplotlib相关代码感到疑惑,请先略过,本书后续部分将解读matplotlib包的使用。上述程序执行结果如下:

python中怎么画曲线(绘制二元函数曲面)(3)

本案例节选自作者编写的教材及配套实验指导书。

《C 编程基础及应用》(高等教育出版社,出版过程中)

《Python编程基础及应用》,高等教育出版社

《Python编程基础及应用实验教程》,高等教育出版社

python中怎么画曲线(绘制二元函数曲面)(4)

高校教师同行如果期望索取样书,教学支持资料,加群,请私信作者,联系时请提供学校及个人姓名为盼,各高校在读学生勿扰为谢。

青少年读者们如果期望系统性地学习Python及C/C 程序设计语言,欢迎尝试下述今日头条(西瓜)免费视频课程。

C/C 从入门到放弃(重庆大学现场版)

Python编程基础及应用(重庆大学现场版)

python中怎么画曲线(绘制二元函数曲面)(5)

  • 画符需要避开的日子(你画的猪事顺利符不管用)
  • 2024-06-29你画的猪事顺利符不管用在汉语里,有这么一个字——符它看似简单,却有着一种强大的力量比如虎符、兵符,指的是古代传达命令或调兵遣将时用的凭证它一般由铜、玉或石木制成,并且被切割为两半,右半留在国君身边,左半交给统帅在调配军队时。
  • 票房突破十亿 这两年有机会冲10亿票房的九部港片
  • 2024-06-29票房突破十亿 这两年有机会冲10亿票房的九部港片未来两年,谁能把港片扛在肩上?似乎还是古天乐和刘德华3月16日,古天乐正式接任了电影工作者总会的会长,田启文退居到了工作者总会的发言人职位也是在这天,影版《寻秦记》放出预告,仍为古天乐、林峯、宣萱等电。
  • 不畏浮云遮望眼只缘身在此山中(不畏浮云遮望眼)
  • 2024-06-29不畏浮云遮望眼中国经济引发全球聚焦——正值2018年上下半场交替期,部分需求指标增速有所波动,外部环境不确定性有增无减,上半场是否稳得住?下半场能否有进步?不畏浮云遮望眼观察大国经济要看全局,准确看待短期数据升降之。
  • 出口退免税备案表怎么上传(最新出口退免税申报系统如何操作)
  • 2024-06-29最新出口退免税申报系统如何操作为了方便纳税人操作,提升退(免)税申报效率,福建省税务局对出口退(免)税申报系统进行了调整升级调整升级后的申报模块和具体操作有了较大变化,但整个操作流程更加简便清晰,提升了办税效率以下外贸企业为例,阐。
  • 孕妇流鼻涕鼻塞用什么手法缓解(如何缓解鼻塞症状)
  • 2024-06-29如何缓解鼻塞症状擤鼻涕太用力竟能引起四种并发症,如何正确的擤鼻涕?北京大学第三医院耳鼻喉科马芙蓉朱丽感冒是由病毒感染引起的鼻黏膜的急性炎症,鼻塞、流涕是其典型症状然而过分用力地擤鼻涕时,感染容易向邻近器官扩散,产生多。
  • 北京市郊s2线最新时刻表(北京市郊铁路S2线刷二维码可乘车)
  • 2024-06-29北京市郊铁路S2线刷二维码可乘车中新网北京4月27日电(记者杜燕)为做好世园会交通服务保障工作,向游客提供更为便捷的票务服务,北京市郊铁路S2线开通刷二维码乘车服务乘客通过下载北京轨道交通互联网票务服务平台(简称“易通行”),即可刷。
  • 今年新版济公活佛(当传统文化邂逅时代之需)
  • 2024-06-29当传统文化邂逅时代之需在华语影视圈,能与《西游记》比拼IP热度的估计只有济公(济公活佛、活佛济公)了自1985年被搬上电视荧屏以来,这个家喻户晓的传奇人物就一次次在影视作品中为大家带来祥和与快乐30年后的今天,当《新济公活。
  • 关于心情压抑的句子简短(心情压抑的句子)
  • 2024-06-29心情压抑的句子1、你认真的说你喜欢白山茶,却怡然自得的收起别人的红玫瑰你温柔的说你眷恋我,然后迫不及待的去爱别人2、事实是这样,假如你不懂我,那错的永远是我,不必惊讶,连解释都是多余3、风往哪个方向吹,草就要往哪个。
  • 程姓望族来源:安定郡望程氏宗族
  • 2024-06-29程姓望族来源:安定郡望程氏宗族安定郡望程氏宗族程俊珊姓氏是家族血缘关系的标记和符号,是血缘、荣耀的传承程者禾口王组合而成,禾代表着庄稼,口代表着农民,王代表着统治者自商鞅实行“重农仰商”,以农业为主导,所以禾字占半边,口在王之上,。