尝试绘制图表时出现错误:TypeError:无法将表达式转换为浮点数
我也得到空图:
from sympy import *
from IPython.display import display
init_printing()
import matplotlib.pyplot as plt
import numpy as np
x = symbols('x')
y = Function('y')
ode = Derivative(y(x), x, x) + 9 * y(x)
# Solve the ODE
solution = dsolve(ode, y(x))
# Plot the solution
x_vals = np.linspace(-10, 10, 1000)
y_vals = [solution.rhs.subs({x: val}).evalf() for val in x_vals]
plt.plot(x_vals, y_vals)
plt.xlabel('x')
plt.ylabel('y(x)')
plt.title('Solution to y\'\'(x) + 9y(x) = 0')
plt.grid(True)
plt.show()
蟒蛇:3.12
我尝试了最新的 Pycharm、Spider(Anaconda) 和 Jupyter Notes (Anaconda)
简单版本:1.13.0
matplotlib:3.9.1
numpy:2.0.1
我也尝试过 lamdify 但结果相同
x_vals = np.linspace(-10, 10, 1000)
# Convert the symbolic expression to a numerical function
y_expr = solution.rhs
y_func = lambdify(x, y_expr, modules='numpy')
# Evaluate the solution function for all x_vals
y_vals = y_func(x_vals)
plt.plot(x_vals, y_vals)
plt.grid(True)
plt.show()
这是颂歌解决方案: 颂答案
这是错误打印:
回溯(最近一次调用最后一次):
compat_exec 中的文件 /opt/anaconda3/lib/python3.11/site-packages/spyder_kernels/py3compat.py:356 exec(代码,全局变量,局部变量)
文件~/Python/Projects/Test/untitled0.py:22 plt.plot(x_vals, y_vals)
绘图中的文件 /opt/anaconda3/lib/python3.11/site-packages/matplotlib/pyplot.py:3578 返回 gca().plot(
绘图中的文件/opt/anaconda3/lib/python3.11/site-packages/matplotlib/axes/_axes.py:1723 self.add_line(行)
add_line 中的文件 /opt/anaconda3/lib/python3.11/site-packages/matplotlib/axes/_base.py:2309 self._update_line_limits(行)
_update_line_limits 中的文件 /opt/anaconda3/lib/python3.11/site-packages/matplotlib/axes/_base.py:2332 路径 = line.get_path()
get_path 中的文件 /opt/anaconda3/lib/python3.11/site-packages/matplotlib/lines.py:1032 self.recache()
重新缓存中的文件 /opt/anaconda3/lib/python3.11/site-packages/matplotlib/lines.py:674 y = _to_unmasked_float_array(yconv).ravel()
文件 /opt/anaconda3/lib/python3.11/site-packages/matplotlib/cbook.py:1345 在 _to_unmasked_float_array 中 返回 np.asarray(x, float)
文件/opt/anaconda3/lib/python3.11/site-packages/sympy/core/expr.py:351在float raise TypeError("无法将表达式转换为浮点数")
类型错误:无法将表达式转换为浮点数