我正在使用numpy评估具有多个输入变量的热力学方程。最终,我想使用matplotlib绘制响应面。
我正在使用this method来处理多变量函数的求值。所讨论的方法在任意数量的维度上评估点网格上的函数。简化示例:
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
def ndm(*args):
return [x[(None,)*i+(slice(None),)+(None,)*(len(args)-i-1)] for i, x in enumerate(args)]
fig = plt.figure()
ax = fig.gca(projection='3d')
npt = 50
# With linspace -------------------------------------------------------
A = np.linspace(1570,1170,npt)
B = np.linspace(1070,570,npt)
C = np.linspace(1200,1100,npt)
D = np.linspace(100,1,npt)
A,B,C,D = ndm(A,B,C,D)
r = (A+B+C)/D
X,Y = np.meshgrid(A[:,0,0,0],D[0,0,0,:])
ax.plot_surface(X, Y, r[:,0,0,:], cmap=plt.cm.jet)
# With geomspace ------------------------------------------------------
A = np.geomspace(1570,1170,npt)
B = np.geomspace(1070,570,npt)
C = np.geomspace(1200,1100,npt)
D = np.geomspace(100,1,npt)
A,B,C,D = ndm(A,B,C,D)
r = (A+B+C)/D
X,Y = np.meshgrid(A[:,0,0,0],D[0,0,0,:])
ax.plot_surface(X, Y, r[:,0,0,:], cmap=plt.cm.jet)
plt.show()
我的问题是-我假设用linspace
更改geomspace
不应更改我的最终曲面图,因为它是在不同点求值的同一函数。但是当我绘制它们时,它们看起来就完全不同了:
我在这里想念什么?哪个曲线是对我的功能的正确评估?感谢您的帮助。