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
:
加载库
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.
时也会发生同样的情况
问题: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
:
加载库
library(Ryacas);
由于
Ryacas
只是YACAS的一个接口,我们可以使用YACAS的OdeSolve
来求解ODEyacas("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.
时也会发生同样的情况