You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

二元函数Lambdify后绘制3D曲面失败,报'int'无'ndim'属性错误

问题解决:'int' object has no attribute 'ndim' 错误修复

错误原因

  • 使用sympy.vector.CoordSys3D生成的坐标标量x,y属于CoordinateSymbol特殊类型,sp.lambdify无法将其正确转换为支持numpy数组输入的函数,最终返回单个int值而非二维数组,触发plot_surface的维度错误。
  • 额外问题:代码未导入sympy.vector模块,sv会未定义,实际运行时需补充导入,但核心错误为坐标标量类型不兼容。

修正代码

import sympy as sp 
import numpy as np 
import matplotlib.pyplot as plt 
%matplotlib notebook

# 用普通SymPy符号替代坐标系标量
x, y, t = sp.symbols("x y t")

f = sp.sin(2*sp.pi*t)*sp.exp(-(x-3*sp.sin(sp.pi*t))**2 -(y-3*sp.cos(sp.pi*t))**2)

fig    = plt.figure(figsize=(6, 6))
ax     = fig.add_subplot(projection='3d')

X = np.linspace(-5,5,100)
Y = np.linspace(-5,5,100)

xvals, yvals = np.meshgrid(X,Y)
zvals = sp.lambdify((x,y), f.subs(t, 1), "numpy")(xvals, yvals)

ax.plot_surface(xvals, yvals, zvals)
plt.show()

额外说明

当t=1时,sin(2*sp.pi*1)=0,函数值恒为0,最终会绘制一个平面。若想查看非零曲面,可替换t为其他值,比如t=0.25,此时函数会呈现一个高斯峰值曲面。

内容的提问来源于stack exchange,提问作者joshuasinner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 22:45:13