为了账号安全,请及时绑定邮箱和手机立即绑定

求解微分方程但出现错误“'Add'对象不可调用”。我正在使用 Jupyter 笔记本

求解微分方程但出现错误“'Add'对象不可调用”。我正在使用 Jupyter 笔记本

素胚勾勒不出你 2023-05-09 15:13:59
为了更清楚,我想绘制钟摆阻尼振荡的二阶微分方程的解。链接到有关所用方程式的维基百科:https ://en.wikipedia.org/wiki/Harmonic_oscillatorfrom sympy.interactive import printingprinting.init_printing(use_latex=True)import numpy as npimport scipy as spfrom sympy import*mport sympy as syp`from scipy.integrate import odeintimport matplotlib.pyplot as pltt=syp.Symbol('t')x=syp.Function('x')(t)m=2.0k=5.0a=0.5z=a/(2.0*np.sqrt(m*k))w=np.sqrt(k/m)eq=x.diff(t,t)+2.0*z*w*x.diff(t)+w**2.0*xdsolve(eq,t,0,ics={eq(1.0):0,eq(2.0):5})
查看完整描述

1 回答

?
慕哥9229398

TA贡献1877条经验 获得超6个赞

您没有ics按预期构造参数:


In [6]: dsolve(eq, ics={x.subs(t, 1.0): 0, x.subs(t, 2.0): 5})                                                                                 

Out[6]: 

                                                                                                 -0.125⋅t

x(t) = (-0.0346285740992263⋅sin(1.57619002661481⋅t) - 6.42012708343871⋅cos(1.57619002661481⋅t))⋅ℯ 

如果你不使用浮点数,答案会更好(主观地)。此外,我发现将变量保留x为函数x而不是应用函数更自然x(t),例如:


In [15]: x = Function('x')                                                                                                                     


In [16]: x                                                                                                                                     

Out[16]: x


In [17]: x(t)                                                                                                                                  

Out[17]: x(t)


In [18]: eq = x(t).diff(t, 2) + x(t).diff(t)/4 + 5*x(t)/2                                                                                      


In [19]: eq                                                                                                                                    

Out[19]: 

         d                   

         ──(x(t))     2      

5⋅x(t)   dt          d       

────── + ──────── + ───(x(t))

  2         4         2      

                    dt       


In [20]: dsolve(eq, x(t), ics={x(1): 0, x(2): 5})                                                                                              

Out[20]: 

       ⎛   1/4    ⎛√159⋅t⎞                     ⎞  -t 

       ⎜5⋅ℯ   ⋅sin⎜──────⎟                     ⎟  ───

       ⎜          ⎝  8   ⎠      1/4    ⎛√159⋅t⎞⎟   8 

x(t) = ⎜────────────────── - 5⋅ℯ   ⋅cos⎜──────⎟⎟⋅ℯ   

       ⎜       ⎛√159⎞                  ⎝  8   ⎠⎟     

       ⎜    tan⎜────⎟                          ⎟     

       ⎝       ⎝ 8  ⎠                          ⎠ 


查看完整回答
反对 回复 2023-05-09
  • 1 回答
  • 0 关注
  • 84 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信