python中怎么画曲线(绘制二元函数曲面)
python中怎么画曲线(绘制二元函数曲面)
2024-11-05 10:44:43  作者:九妄罪人  网址:https://m.xinb2b.cn/know/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-06杨紫与欢瑞合约到期6年“宾主情”告终,杨紫与欢瑞合约到期,粉丝为什么这么开心?——引言11月15日,杨紫发文官宣自己与欢瑞结束了6年的宾主关系,这一决定,对杨紫的粉丝来说就是“喜大普奔”,底下评论还有人说,“路人都要说。
  • 舌尖上的重庆美蛙火锅(西安最美味最销魂的美蛙火锅店)
  • 2024-11-06西安最美味最销魂的美蛙火锅店要问现在吃火锅最流行什么?10个人9个会告诉你吃美蛙!正因为它正宗重庆口味品质口感有良好口碑美蛙鱼头火锅因其肥滑细嫩的鱼头和细嫩入味的美蛙再加上辣而不燥、香而不腻的汤底,一锅而名汤底鲜香,底料的鲜美尽。
  • ns大气层怎么更新游戏(为了备战世界末日)
  • 2024-11-06为了备战世界末日怪物马戏团|文01一个不再是前言的前言爵士乐在核战后的废土上流浪,仿佛人类文明残留的鬼魂,被禁锢在《辐射》系列的23年里;萨拉马戈坐在家中撰写《失明症漫记》,他即将回答记者为何自己要在祥和之中描绘末日。
  • 博人传最新一集剧情287(博人传最新一集)
  • 2024-11-06博人传最新一集在《博人传》的最新一集中,中忍考试即将开始,各大忍村也纷纷派出了自己村子中的潜力下忍去木叶村参加考试身为五大忍村之一的砂隐村也派出了自己的队伍,由我爱罗的哥哥勘九郎带领,在这个队伍中,有一个人尤为引人。
  • 鸭胗怎么做特别好吃(简单好吃的鸭胗做法)
  • 2024-11-06简单好吃的鸭胗做法鸭胗也称鸭肫,它肉质紧密,嚼起来很有韧劲,是很多人都喜欢的食材跟大家分享一个简单好吃的盐水鸭胗做法这么做不用担心油烟纷扰,吃起来也没有油腻感,口感十分清爽,家里人都非常喜欢鸭胗性味甘咸平,有健脾胃的功。
  • 人生中最无助的时刻(人生略显无力的结尾)
  • 2024-11-06人生略显无力的结尾人生的道路虽然漫长,但紧要处只有几步,特别是当人年轻的时候没有一个人的生活道路是笔直的,没有岔道的有些岔道口,譬如政治上的岔路口,事业上的岔路口,事业上的岔路口,个人生活的岔路口,你走错一步,可以影响。
  • 具体函数和抽象函数定义域 抽象函数的定义域一一函数的抽象性
  • 2024-11-06具体函数和抽象函数定义域 抽象函数的定义域一一函数的抽象性对于函数f(ⅹ)来说,起决定作用的有三个,一是函数自变量x的取值范围,即函数的定义域;二是函数的对应关系f,对于同一个函数,只要函数一旦确定下来,对应关系f就不变,不管这个x的形式怎么变;三是f(ⅹ)。
  • 白鹿原白孝文打土匪(孝文漂亮媳妇被土匪糟蹋)
  • 2024-11-06孝文漂亮媳妇被土匪糟蹋有句老话说的好,万事皆有因在电视剧白鹿原最新剧情里,黑娃当上了土匪二拇指后便让兄弟们去杀了鹿子霖和打断白嘉轩的腰黑娃说白嘉轩的腰杆太直既然黑娃的目的如此明确,那么白家和鹿家就该遭殃了!不过很让大家失望。
  • 减脂期运动心率控制在多少(减脂不止要运动)
  • 2024-11-06减脂不止要运动我了解到好多人为了瘦,拼命去训练,在跑步机上每次跑步1小时,不到时间点到绝不停下来但是运动那么长时间真的有效果吗?你以为跑得久就能瘦了吗?其实不然,如果你长时间的运动都处在一个比较平稳的状态,你的脂肪。
  • 人们是怎么评价《扣篮对决》这部电影的
  • 2024-11-06人们是怎么评价《扣篮对决》这部电影的首先非常感谢在这里能为你解答这个问题,让我带领你们一起走进这个问题,现在让我们一起探讨一下林浩然自编自导《扣篮对决》,这是中国首部以街头篮球为题材的电影专业的拍摄团队加上多年制作NBA对篮球的了解,把。
  • 剪下来向日葵怎么养(观赏向日葵怎么养)
  • 2024-11-06观赏向日葵怎么养观赏向日葵的种植时间在4-6月,选择长势良好的种子,将其催化发芽,埋入土中芽长大之后可将其移栽到花盆中观赏向日葵需要使用疏松肥沃,透气性好的土壤;放置在光照条件充足处,温度保持在20度以上;每周使用稀。
  • 赤峰电动车第二批啥时候上牌(事关赤峰电动自行车上牌备案)
  • 2024-11-06事关赤峰电动自行车上牌备案为切实提高电动自行车管理水平,保障人民群众出行安全,7月28日,赤峰市公安局交警大队发出通知,决定在中心城区集中开展电动自行车备案上牌工作几天下来,不少市民的车已经完成上牌,但有部分市民反映,在上牌过。