我正在尝试将3D曲线绘制到此函数:



它应该看起来像这样


我在Python 3.x中做了以下工作(我想在sympy中对此进行分析,所以我也创建了该函数的符号版本):

from sympy import init_printing
init_printing()
import sympy as sp

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d.axes3d import Axes3D

x1, x2=sp.symbols('x1 x2')
F=np.abs(((sp.cos(x1))**4+(sp.cos(x2))**4-2*((sp.cos(x1))**2)*  ((sp.cos(x2))**2))/(sp.sqrt(x1**2+2*x2**2)))

F_lam=sp.lambdify((x1,x2),F,modules='numpy')
x1_t=np.linspace(0.5,10,num=100)
x2_t=np.linspace(0.5,10,num=100)

X1,X2=np.meshgrid(x1_t,x2_t)
Z=F_lam(x1_t,x2_t)


fig = plt.figure(figsize=(14,6))

ax = fig.add_subplot(1, 2, 1, projection='3d')
p = ax.plot_surface(X1, X2, Z, linewidth=0)


但是我明白了:

最佳答案

您为错误的数组调用了函数:

Z=F_lam(X1, X2)


但是,如果matplotlib给出错误信息,则最好是形状不正确。

关于python - Matplotlib 3D-“凹凸功能”的表面不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24045379/

10-12 13:03