【问题标题】:SymPy 2nd order differential equations dsolve errorSymPy 二阶微分方程 dsolve error
【发布时间】:2019-12-23 16:49:48
【问题描述】:

我想得到微分方程组的符号解。 dsolve 给出“NotImplementedError”。 diff(t, 1) 效果很好。获得解决方案的最佳方法是什么?或者如果无法进行符号解,如何将其转换为一阶以进行数值求解。任何帮助将不胜感激。

import sympy as sp
import mpmath
from sympy import Function, symbols, dsolve, Derivative, erf, sqrt, power, diff

a, t, rx, ry = symbols('a t rx ry')
rx = Function("rx")(t)
ry = Function("ry")(t)
r = sqrt(rx**2+ry**2)

eq1 = sp.Eq(rx.diff(t,2), -rx/r**3)
eq2 = sp.Eq(ry.diff(t,2), -ry/r**3)
sol = dsolve([eq1, eq2])
print(sol)

r' = v v' = -r/|r|^3 要在数字上解决它,需要将其转换为一阶。很明显右边是渐变:

grad(1/r) = -r/|r|^3

但是对于笛卡尔来说它看起来很奇怪,因为 |r|我在这里卡住了如何使用 odeint:

rx' = vx
ry' = vy
vx' = -rx/|r|^3
vy' = -ry/|r|^3

要使用 odeint 我需要 5(?) 个参数的函数,它应该是这样的?

def F(U, t):
  vx, vy, rx, ry = U
  r = np.sqrt(rx**2 + ry**2)
  rxdt = vx
  rydt = vy
  vxdt = -rx/r**3
  vydt = -ry/r**3
  return [vxdt, vydt]

【问题讨论】:

    标签: python sympy


    【解决方案1】:

    SymPy 没有为这种非线性方程实现求解器:

    In [2]: eq1                                                                                                                       
    Out[2]: 
      2                              
     d                  rx(t)        
    ───(rx(t)) = ────────────────────
      2                           3/2
    dt           ⎛  2        2   ⎞   
                 ⎝rx (t) + ry (t)⎠   
    
    In [3]: eq2                                                                                                                       
    Out[3]: 
      2                              
     d                  ry(t)        
    ───(ry(t)) = ────────────────────
      2                           3/2
    dt           ⎛  2        2   ⎞   
                 ⎝rx (t) + ry (t)⎠   
    
    

    您确定有任何解析解决方案吗?如果我理解正确,您在这里所拥有的就像d2r/dt^2 = r/|r|**3,它类似于引力轨道的方程(除了会有一个减号)。在引力轨道的情况下,我认为r 没有封闭形式的解决方案t

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多