python中怎么画曲线(绘制二元函数曲面)
python中怎么画曲线(绘制二元函数曲面)
2024-11-08 01:47:46  作者:九妄罪人  网址:https://m.xinb2b.cn/life/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编程基础及应用(重庆大学现场版)


  • 大型主题晚会火爆进行中(现场直播明晚7:00)
  • 2024-11-08现场直播明晚7:00奋斗百年路启航新征程“永远跟党走”6月28日下午7:00临西县庆祝建党100周年暨2021年度“欢乐邢襄大舞台”启动晚会激情上演献礼百年奋斗百年路启航新征程永远跟党走临西县庆祝中国共产党成立100周年。
  • 新款现代菲斯塔曝光(北京现代菲斯塔即将上市)
  • 2024-11-08北京现代菲斯塔即将上市最近这几年,现代作为韩系汽车品牌的重要代表之一,不少车迷朋友们对于它可以说是有着各种各样的看法,但不可否认的就是,现代对于自家车型设计方面的确“有一手”,对于这一点,相信各位应该都不会有所异议日前,小。
  • 踢猫效应有何启示(心理学上的有趣现象)
  • 2024-11-08心理学上的有趣现象“踢猫效应”,描绘的是一种典型的坏情绪的传染人的不满情绪和糟糕心情,一般会沿着等级和强弱组成的社会关系链条依次传递,由金字塔尖一直扩散到最底层,无处发泄的最弱小的那一个元素,则成为最终的受害者其实,这。
  • 最全网红奶茶测评(加油你是最胖的红茶拿铁)
  • 2024-11-08加油你是最胖的红茶拿铁传说中为了怼喜茶而存在的“丧茶”,悄然在杭州开门了!从朋友圈得知消息的我,今天下午火速赶赴了现场,果然在西湖边的龙游路上,目击了这家尚在试营业中的“丧茶”追溯“丧茶”的起源,据说最早是来源于微博上的一。
  • 什么动物可以贴在墙上(脑筋急转弯什么动物可以贴在墙上)
  • 2024-11-08脑筋急转弯什么动物可以贴在墙上海豹此处为谐音,海报可以贴在墙上拓展资料:脑筋急转弯最早起源于古代印度就是指当思维遇到特殊的阻碍时,要很快的离开习惯的思路,从别的方面来思考问题现在泛指一些不能用通常的思路来回答的的智力问答题脑筋急转。
  • 拳皇15新角色宣传片(拳皇15发布特别动画短片)
  • 2024-11-08拳皇15发布特别动画短片SNK今日发布了旗下动作格斗游戏新作《拳皇15》的特别动画短片,该片由参与过《机动战士高达SEED》和《超级机器人大战OG》制作的日本动画师、动画导演大张正己亲自监督制作动画短片优酷视频云《拳皇15》。
  • 河北省的招牌菜是什么(河北全省103家冀菜)
  • 2024-11-08河北全省103家冀菜河北新闻网1月12日讯(李博)从今天下午在河北省石家庄市召开的第四届中国冀菜文化发展大会暨“冀菜·崇礼菜单”推广工作会议上获悉,经河北全省各市验收,省商务厅组织专家抽查,河北省共确定“冀菜·崇礼菜单”。
  • 感冒用葱须还是葱白(感冒用几根葱就能搞定)
  • 2024-11-08感冒用几根葱就能搞定你感冒过吗?你的宝宝感冒过吗?99%的回答都是肯定的感冒是最常见的症状了,病情也很轻,也许用几根葱就能搞定可不要小看这几根葱,可是中西医认可的感冒初期食疗方呢!葱白水为什么调理感冒呢?感冒我们都知道,。
  • 这种植物好神奇(听说这款植物常出现于复活节)
  • 2024-11-08听说这款植物常出现于复活节女人与猫2018-12-2114:17麝香百合这一款植物是属于中国台湾地区的一款植物,它的名字又叫亦称铁炮百合,它是一款非常美丽的花卉,而且它的花非常的香,可以提炼一种香油,也可以作为一种相亲供人使用。
  • 阅读打卡文案(读书打卡)
  • 2024-11-08读书打卡每月一本书,每天做摘抄11.3你须把细心放在大胆里,去且战且走你须把委屈当做生活,而从委屈中咂摸出一点甜味来,好使你还可能活下去《四世同堂》,。
  • 世界上最远的不是真实距离(世界上最远的距离)
  • 2024-11-08世界上最远的距离世界上最远的距离作者:木子世界上最远的距离,是你不知道我爱你;主动追求的爱情总是不尽人意,往往不值得你始终如一珍惜世界上最远的距离,是生与死的距离;亲人活着的时候总不会在意,死去后才会痛心疾首、后悔莫。