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

使用lambdify创建的函数无法用Matplotlib绘制,求解决方法

解决SymPy与Matplotlib绘图时"Cannot convert expression to float"错误

修正后的代码

import sympy as sp
from sympy import lambdify, Function
from sympy.abc import x
from sympy.utilities.lambdify import implemented_function
import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots()

# 定义自定义函数(可根据实际需求修改函数逻辑)
inf = implemented_function(Function('f'), lambda x: eval("x"))
# 指定modules为numpy,让生成的函数支持数组批量计算
f = lambdify(x, inf(x), modules='numpy')

# 生成数值化的x轴数据,这里取-10到10区间的100个采样点
x_vals = np.linspace(-10, 10, 100)
y_vals = f(x_vals)  # 用数值数组计算对应的y值

# 使用数值数据绘图
ax.plot(x_vals, y_vals, color="blue", linestyle=":", label="f(x)")
ax.legend()
plt.show()

错误原因解析

  1. 符号变量不能直接用于Matplotlib:原代码中ax.plot(x, f(x))里的x是SymPy的符号变量,Matplotlib需要的是数值数组而非符号表达式,因此会触发类型转换错误。
  2. lambdify需适配数组输入:默认生成的函数仅支持单个数值计算,指定modules='numpy'可让函数处理numpy数组,实现批量计算。
  3. plt.show()位置错误:原代码先调用plt.show()会显示空图,必须放在所有绘图逻辑之后执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 01:47:37