辛普森不能解线性常微分方程组

2024-09-30 14:20:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我最近开始使用sympy来用python进行符号计算。现在,我正在与ODEs合作,昨天我试图解决非常简单的初始值问题:

    y1'   =    y1 + 2 y2,
    y2'   = -2 y1 +   y2 + 2 exp(t),

在初始条件下

^{pr2}$

我写的python代码如下:

>>> import sympy as sy    
>>> t=sy.symbols('t')
>>> y1=sy.Function('y1')   
>>> y2=sy.Function('y2')
>>> eqs=(sy.Eq(y1(t).diff(t),y1(t)+2*y2(t)), sy.Eq(y2(t).diff(t),-2*y1(t)+y2(t)+2*sy.exp(t))) 
>>> s=sy.dsolve(eqs)        # General solution
>>> s
[y1(t) == 2*(C1*sin(2*t) + C2*cos(2*t))*exp(t),
 y2(t) == (2*C1*cos(2*t) - 2*C2*sin(2*t))*exp(t)]
>>> y1g=s[0].args[1]
>>> y2g=s[1].args[1]
>>> # Find C1 and C2 so that the initial condition is satisfied
>>> sol=sy.solve([y1g.subs(t,0)-1,y2g.subs(t,0)-1])
>>> sol
{C1: 1/2, C2: 1/2}
>>> y1=y1g.subs(sol)
>>> y2=y2g.subs(sol)
>>> [y1,y2]
[2*(sin(2*t)/2 + cos(2*t)/2)*exp(t), (-sin(2*t) + cos(2*t))*exp(t)]

但解决方法是错误的!!是我搞错了还是这是个怪胎?在


Tags: functionsincoseqsubssympyc2c1
1条回答
网友
1楼 · 发布于 2024-09-30 14:20:30

此免责声明的格式不必明确

我把你代码的第一部分复制到一个文件中

% cat sy.py
import sympy as sy    
t=sy.symbols('t')
y1=sy.Function('y1')   
y2=sy.Function('y2')
eqs=(sy.Eq(y1(t).diff(t),y1(t)+2*y2(t)), sy.Eq(y2(t).diff(t),-2*y1(t)+y2(t)+2*sy.exp(t))) 
s=sy.dsolve(eqs)
%

后来我在上面运行python

^{pr2}$

你说你得到的和我得到的有出入。也许是我的错。在

相关问题 更多 >