R 中是否有符号 ODE 求解器? (ODE = 常微分方程)

Is there symbolic ODE solver in R ? (ODE = ordinary differential equation)

问题:R 中有符号式 ODE 求解器吗? (ODE = ordinary differential equation)

恐怕没有...但请专家确认...

例如,求解:

> (5x-6)^2 y' = 5(5x-6) y - 2

此处:y - 未知函数,y' - 它的导数

(手工很容易解:y = 1/(5(5x-6)) + C* (5x-6) ,但我想从R那里得到答案)。


我知道的:

1) 有数值(非符号)求解器:

我知道有像库(deSolve)这样的数值 ODE 求解器, 在这里查看答案:

2)有符号包:(但好像没有包含ODE求解器)

R 中有像这样的符号包 请参阅 Ryacas 和 rSymPy 以及 base R 中的一些基本符号计算,请参阅: https://stats.stackexchange.com/questions/4775/symbolic-computation-in-r/4778

3) R的各种微分方程求解器的简要概述: https://cran.r-project.org/web/views/DifferentialEquations.html

但是我无法找到 sumbolic ODE 求解器 (((

我玩过 Ryacas,实际上您无需太多工作就可以获得一些简单 ODE 的符号解。不幸的是,YACAS 无法为您的示例 ODE 找到解决方案。但是,根据您正在探索的 ODE,这可能仍然有用。如果没有,我很乐意删除此 post.

作为初始的简单示例,让我们考虑以下 ODE:y'' + y = 0:

  1. 加载库

        library(Ryacas);
    
  2. 由于Ryacas只是YACAS的一个接口,我们可以使用YACAS的OdeSolve来求解ODE

    yacas("OdeSolve( y\'\' + y == 0 )")
    #expression(C70 * exp(x * complex_cartesian(0, -1)) + C74 * exp(x *
    #    complex_cartesian(0, 1)))
    

    这给出了正确的解决方案 const * exp(- ix) + const * exp(+ ix)

  3. 不幸的是,在使用您的特定示例时,OdeSolve 无法找到解决方案:

    yacas("OdeSolve( y\'\' == (5 * (5 * x - 6) * y - 2) / (5 * x - 6)^2 )")
    #expression(y(2) - (5 * ((5 * x - 6) * y(0)) - 2)/(5 * x - 6)^2)
    

    当我们使用 YACAS online demo.

  4. 时也会发生同样的情况