python中怎么画曲线(绘制二元函数曲面)
python中怎么画曲线(绘制二元函数曲面)
2024-06-26 04:31:57  作者:九妄罪人  网址:https://m.xinb2b.cn/tech/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-26女同胞们都知道刮宫很伤身先看看这个图片上环这是最早出现的上环工具上环工具这么一个小小的东西,可以说是造福了男性同胞,祸害了一代女性同胞小优在这里说明一下自己的观点一切非必要的手术都有可能带来不必要的避孕原理上环其实卵子受孕的。
  • 萝卜素馅包子的家常做法
  • 2024-06-26萝卜素馅包子的家常做法提前准备好发面团,面粉加适量水和少许酵母即可干香菇干木耳,提前洗干净泡发切成丁,萝卜洗净去皮切成丝备用,粉丝提前泡发水切成丁锅中倒入适量油,倒入香菇爆香再加入黑木耳和粉丝,最后加入白萝卜丝,加入盐,味。
  • excel怎么打印a3表格(有什么方法)
  • 2024-06-26有什么方法在页面布局(页面设置)中,将纸张设为A3,按需要调好方向录好数据后预览一下,看看页面是否合适,不合适的话再调整一下行高和列宽EXCEL需要安装支持A3页面的打印机,才能准确设置A3页面,否则无法预览如。
  • 山东3地寻人4名密接者轨迹公布(山东1地紧急寻人)
  • 2024-06-26山东1地紧急寻人5月30日晚,临沂市临沭县发布关于紧急寻找密切接触者的公告↓↓↓2022年5月30日,我县对外省推送的1名新冠肺炎确诊病例(复阳病例)开展流行病学调查,目前该新冠肺炎确诊病例(复阳病例)已在外省集中隔。
  • 巴拿马的危险道路(巴拿马6月1日进入复工第二阶段)
  • 2024-06-26巴拿马6月1日进入复工第二阶段中新网5月28日电据南美侨报网报道,巴拿马将于6月1日,也就是在政府宣布经济恢复计划的18天后再度降低隔离限制级别,启动复工复产的第二阶段据报道,巴拿马政府与卫生、经济领域中的国际专家,以及泛美卫生组。
  • 斗鱼lpl加油活动(斗鱼全程直播LPL夏季赛)
  • 2024-06-26斗鱼全程直播LPL夏季赛2018英雄联盟LPL联赛夏季赛目前正在火热进行中,本周末不仅有为期三天的端午假期,更将迎来东西部多支顶级强队的焦点之战作为官方直播合作伙伴,斗鱼将提供8M高清赛事直播,以及人气主播解说、实时赛况抽奖。
  • 金庸武侠十大剑法玉箫剑法排第五(金庸笔下七门带)
  • 2024-06-26金庸笔下七门带欢迎各路江湖大侠前来捧场!所谓“江山代有才人出,各领风骚数百年”,话说在金庸武侠小说当中出现了许许多多厉害的武功,比如带“神”字的武功有“九阳神功”、“六脉神剑”等绝技;带“龙”字的武功则有萧峰的“降。
  • 预习古诗二十八课(10分钟古诗课38小娃撑小艇)
  • 2024-06-2610分钟古诗课38小娃撑小艇池上【唐白居易】小娃撑小艇,偷采白莲回不解藏踪迹,浮萍一道开这首诗读起来充满童趣诗人总是能抓取到生活中的瞬间,把充满趣味的瞬间用诗句定格下来前面已经介绍过白居易的生平,据说这首诗写于白居易63岁在东都。
  • 超软花卷的做法(超软花卷做法如下)
  • 2024-06-26超软花卷做法如下准备500克面粉一小匙盐糖一大匙干酵母加温水化开加入面粉中揉至光滑发酵2小时第二次发酵至蜂窝状擀成薄片刷上油撒上盐和葱花卷成长条切成小段两个相叠中间用筷子下压卷好上锅再醒发20分钟蒸13分钟关火等2分。
  • 甲醛中毒会有什么样的反应(甲醛中毒有哪些表现)
  • 2024-06-26甲醛中毒有哪些表现甲醛中毒怎么处理?在日常的生产生活当中,甲醛的使用较为普遍,其主要的中毒原因在于吸入甲醛蒸气所导致当接触高浓度甲醛蒸气时,往往会出现以眼、呼吸系统损害为主的急性中毒表现甲醛中毒怎么处理?在长期接触低剂。
  • gps手速测试怎么弄(手把手教你GPS该咋测试)
  • 2024-06-26手把手教你GPS该咋测试GPS产业的发展和重要性与日俱增,随之而来的是对GPS接收机的测试要求越来越严格,从而准确评估产品的性能GPS测试原理图GPS测试需要在电磁屏蔽室中进行测试,使用E4438C\N5182B矢量信号源模。
  • 10千米等于多少米
  • 2024-06-2610千米等于多少米10千米(km)等于1万米长度单位的互换是:毫米,十毫米等于一厘米,十厘米等于一分米,十分米等于一米,一千米等于一公里,本题的10千米(公里)化成米,就是10×1000,就是一万米。