1.简单的二元函数
def func(x, y):
return x*y*(x+y)/2
再分别定义x,y的范围与步长,并设置角度、颜色坐标即可。以函数
为例,以下是实现代码,可供参考:
import math
from matplotlib import pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
import mpl_toolkits.mplot3d
from matplotlib import pyplot as plt
from matplotlib import cm
figure = plt.figure()
ax = Axes3D(figure)
X = np.arange(0.0,1.0,0.01)
Y = np.arange(0.0,1.0,0.01)
X,Y = np.meshgrid(X,Y)
# 定义二元函数
def func(x, y):
return x*y*(x+y)/2
Z = func(X,Y)#gist_rainbow
ax.plot_surface(X,Y,Z,rstride=1,cstride=1,cmap='gist_rainbow')
# 更改可视化角度
ax.view_init(elev=20, azim=150) # elev是仰角,azim是方位角
# 添加颜色条
#fig.colorbar(ax)
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')
plt.show()
看一下图像显示效果:
2.复杂的、需要分段的且由变量相进行比较的二元函数
对于此类函数,思想是定义xy的取值范围,在区间内取出足够多个点,然后一个个带入公式比较,再用新的元组将函数值与xy取值绑定,再输出函数三维图像。可以看一下下面这个例子:
实现的代码如下:
import math
from matplotlib import pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
import mpl_toolkits.mplot3d
from matplotlib import pyplot as plt
from matplotlib import cm
figure = plt.figure()
ax = Axes3D(figure)
x = np.linspace(0, 1, 50)
y = np.linspace(0, 1, 50)
# 定义二元函数
def func(x, y):
if y<=0.3*x:
return 2*y/3
elif y>=0.3*x and y<=0.6*x:
return -0.4*x+2*y
elif y>=0.6*x and y<=5*x/3:
return (x+y)/2
elif y>5*x/3 and y<=10*x/3:
return -0.4*y+2*x
elif y>10*x/3:
return 2*x/3
else:
return np.nan
# 生成x和y的网格点
X,Y = np.meshgrid(x,y)#创建网格
Z = np.array([[func(x, y) for x, y in zip(row_x, row_y)] for row_x, row_y in zip(X, Y)])
#Z = func(X,Y)#gist_rainbow
ax.plot_surface(X,Y,Z,rstride=1,cstride=1,cmap='rainbow')
# 更改可视化角度
ax.view_init(elev=20, azim=210) # elev是仰角,azim是方位角
# 添加颜色条
#fig.colorbar(ax)
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')
plt.show()
显示效果:
原文地址:https://blog.csdn.net/weixin_46008839/article/details/134608304
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_960.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。