SymPy - 绘制微分方程图

问题描述 投票:0回答:1

尝试绘制图表时出现错误: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()

在此输入图片描述

python matplotlib graph sympy differential-equations
1个回答
0
投票

这是颂歌解决方案: 颂答案

这是错误打印:

回溯(最近一次调用最后一次):

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("无法将表达式转换为浮点数")

类型错误:无法将表达式转换为浮点数

© www.soinside.com 2019 - 2024. All rights reserved.