我正在尝试用 python 绘制一个 3d 表面,事实上我有这个代码:
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
import matplotlib.pyplot as plt
from numpy import *
def f(x,y):
r=x**2 + y**2
return r
n=4.
b=1.
a=-b
h=(2*b)/n
print h
hx=h ##This line##
fig = plt.figure()
ax = Axes3D(fig)
X = arange(a, b+hx, hx)
Y = arange(a, b+h, h)
n = len(X)
m = len(Y)
Z = zeros([n,m])
for i in arange(n):
for j in arange(m):
Z[i,j] = f(X[i],Y[j])
X, Y = meshgrid(X, Y)
ax.plot_surface(Y, X, Z, rstride=1, cstride=1, cmap=cm.jet)
ax.set_xlabel("X Axis")
ax.set_ylabel("Y Axis")
ax.set_zlabel("Z Axis")
plt.show()
这运行正常并显示我正在查看的图表。但是当我将##This line## 更改为 hx=h/2. 运行它,图表就下地狱了,太可怕了,无法理解。我希望 X 轴上的网格比 Y 轴更近。我怎么能这样做?
当然,这是我正在求解偏微分方程的一个示例,并且我需要在一个轴上比另一个轴更靠近网格以具有数值稳定性。