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

Sympy矩阵计算结果绘图触发AssertionError报错如何解决

报错原因
  • sympy.plot的入参要求第一个位置传入未计算的符号表达式,第二个位置传入(符号变量, 取值下限, 取值上限)的三元组,你当前的写法参数顺序错误,且提前对符号变量做了替换,不符合入参规范。
  • 执行M2[0].subs(l, base)时,你直接把符号l替换成了长度为10000的numpy数组,返回结果是numpy数组而非sympy要求的Expr类型,触发了参数类型断言校验报错。
  • 额外注意:矩阵运算得到的M2[0]是复数,直接绘图需要先取模值、实部或者虚部,否则会出现维度不匹配或渲染警告。
修复方案

有两种常用修复方式,可根据需求选择:

方式1:直接使用sympy.plot绘图

不需要提前生成采样数组base,直接传入符号表达式和变量范围即可:

# 这里取r的模值绘图,要画实部可把sympy.Abs替换为sympy.re
sympy.plot(sympy.Abs(M2[0]), (l, 0, 10), xlabel='l', ylabel='r的模值')

方式2:转成numpy函数后用matplotlib绘图

适合需要自定义绘图样式、后续要用到数值结果的场景:

# 将sympy表达式转换为支持numpy数组输入的向量化函数
f_r = sympy.lambdify(l, sympy.Abs(M2[0]), 'numpy')
# 批量计算所有采样点的r值
r_vals = f_r(base)
# 调用matplotlib绘图
plt.plot(base, r_vals)
plt.xlabel('l')
plt.ylabel('r的模值')
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 09:06:04