问题: 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)有NUMERICAL(非符号)求解器:
我知道有像库(deSolve)这样的数字ODE求解器, 看到答案: Can R language find a generic solution of the first order differential equation?
2)有符号包:(但它们似乎不包含ODE解算器)
R中有符号包 看看Ryacas和rSymPy以及基础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求解器((
答案 0 :(得分:2)
我与Ryacas
进行了游戏,实际上你可以在没有太多工作的情况下为一些简单的ODE获得符号解决方案。不幸的是,YACAS未能为您的示例ODE找到解决方案。但是,根据您正在探索的ODE,这可能仍然有用。如果没有,我很高兴删除这篇文章。
作为一个简单的初步示例,让我们考虑以下ODE:y'' + y = 0
:
加载库
library(Ryacas);
由于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)
。
不幸的是,在使用您的特定示例时,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。