python中怎么画曲线(绘制二元函数曲面)
python中怎么画曲线(绘制二元函数曲面)
2024-11-22 12:56:29  作者:九妄罪人  网址:https://m.xinb2b.cn/tech/zcm317870.html

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


为了达到目的,我们需要一个二维的结果数组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()真正地把图表显示出来。执行结果如下:


下述代码将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包的使用。上述程序执行结果如下:


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

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

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

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


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

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

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

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


  • 哦组词(哦可以组哪些词)
  • 2024-11-22哦可以组哪些词哦嗬[òhē]叹词表示惊讶沈哦[shěnò]犹沉吟迟疑,犹豫哦呵[òhē]表示惊奇、满意或羡慕吚哦[yīò]犹吟哦借指作诗哦豁[òhuō]惋惜声、感叹声、表示惋惜和无奈,也指中国南方和西南方地区方言。
  • door 嘴型(想跟老外说没门)
  • 2024-11-22想跟老外说没门@英语天天talk原创文章,禁止二次修改或截取片段盗用最近有小伙伴说,自己在跟家人朋友提要求的时候,总是能听到两个字“没门”,然后就想知道“没门”在英文中,有没有相对应的日常说法呢?今天咱们就一起来学。
  • 零基础学习python入门总结(零基础自学Python四)
  • 2024-11-22零基础自学Python四五角星绘制分析上一章节我们学习了正五边形的绘制,并且由此推演出其他正多边形的绘制方法现在我们试着利用前面所学知识绘制和正多边形有所差异的图形“五角星”绘制之前,还是先分析图形的绘制过程,写出“伪代码”。
  • 单开门的北京汽车(风雨飘摇的北京汽车)
  • 2024-11-22风雨飘摇的北京汽车未来会有很多汽车品牌消失,这句话绝对不是危言耸听,这样的情况也在不断的发生,众泰汽车和华晨汽车已经有了先例,而新能源汽车品牌也倒下了一大堆,可以说在今后以技术和品质为导向发展的汽车市场,没有核心技术和。
  • 缤特力运动耳机(做减法的运动耳机)
  • 2024-11-22做减法的运动耳机运动耳机逐渐从小众用户不断壮大,用户的需求也越来越五花八门,厂商为了迎合用户导致了运动耳机的功能越来越花俏,但是有时候会忘掉运动耳机的初心缤特力BackBeatFit作为运动耳机可以说一直在做减法,它。
  • 惠普22寸电脑评测:惠普极品变形本评测
  • 2024-11-22惠普22寸电脑评测:惠普极品变形本评测【PC新活力:二合一变形本再添新秀】如今很多人都喜欢说PC已经死了云云诚然,PC市场已经失去了当年迅猛发展的势头,但是任何一个市场都有起步、飞速发展、成熟稳定这么几个阶段,PC市场就正进入成熟稳定期,。
  • 娶媳妇要半条命的顺口溜(现在娶媳妇顺口溜)
  • 2024-11-22现在娶媳妇顺口溜9月30,现在娶媳妇顺口溜,谁写的太有才了,句句现实精辟!9月30,现在娶媳妇顺口溜,谁写的太有才了,句句现实精辟!9月30,现在娶媳妇顺口溜,谁写的太有才了,句句现实精辟!一生积蓄都花尽,心甘情愿为。
  • 天生兄妹歌曲盘点(天生兄妹暖心单曲百分百好男人获好评)
  • 2024-11-22天生兄妹暖心单曲百分百好男人获好评近日,以“天生兄妹”组合身份正式亮相的西部杨刚和杨雯梓兄妹,携首支单曲《百分百好男人》闪亮登陆歌坛、新歌刚刚由乐动时代文化首发,就收获一片好评,迅速登上各大音乐排行榜,兄妹俩的实力不容小觑在娱乐当道的。
  • 花开的时光值得我用心守望(伸出窗眼的生命之树)
  • 2024-11-22伸出窗眼的生命之树马西良/文图石缝间倔强的生命,常使我感动得潸然泪下窗户伸出的生命之树,让我感到惊叹和敬仰因疫情不能外出,吃完早点,只好在和夫人一块在社区内转一圈,小区大门已经用铁皮封住了,社区领导还没有宣布居家坚守偶。
  • 兰州市吃什么为主食 南方人受不了的这份酸涩
  • 2024-11-22兰州市吃什么为主食 南方人受不了的这份酸涩中新网兰州6月19日电(记者丁思)高温之下,何以解暑?连日来,北方高温强势返场兰州天气创下新高,持续时间长,部分地区最高气温升至37℃以上这么热的天,吃什么才能消解炎夏的炙热?午餐时间,当我邀约伙伴一。
  • 勾起童年回忆的动画片十部(盘点属于90后青春回忆的动画片)
  • 2024-11-22盘点属于90后青春回忆的动画片以下动画不分排名,每个人心中都有属于自己的第一名1.《猫和老鼠》90后的童年必然不会少了汤姆和杰瑞,汤姆和杰瑞相爱相杀的故事一直都感动着我们它们虽一直打闹,但却一直互相扶持不离不弃,这样的友谊,现在真。