Я использую numpy для оценки термодинамического уравнения с несколькими входными переменными. В конечном итоге я хочу построить ответные поверхности с помощью matplotlib.
Я использую этот метод , чтобы иметь дело с оценкой функции с несколькими переменными. Рассматриваемый метод оценивает функцию на сетке точек для произвольного числа измерений. Упрощенный пример:
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
не должно изменить мой окончательный график поверхности, поскольку это одна и та же функция, которая оценивается в разных точках. Но когда я рисую их, они выглядят совсем иначе:

Что мне здесь не хватает? Какой сюжет является правильной оценкой моей функции? Спасибо за вашу помощь.