使用np.linspace和np.geomspace评估多维函数时,结果存在差异

时间:2018-08-29 22:30:51

标签: python numpy matplotlib scientific-computing

我正在使用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不应更改我的最终曲面图,因为它是在不同点求值的同一函数。但是当我绘制它们时,它们看起来就完全不同了:

enter image description here

我在这里想念什么?哪个曲线是对我的功能的正确评估?感谢您的帮助。

0 个答案:

没有答案