我正在尝试将3D曲线绘制到此函数中:
看起来应该是这样的
我在Python 3.x中做了以下(我想在同意中分析这个,所以我也创建了函数的符号版本):
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)
但我明白了:
答案 0 :(得分:2)
您为错误的数组调用了函数:
Z=F_lam(X1, X2)
但是,如果matplotlib会出错,表示形状不对,那会更好。