我想解决R中的微分方程(deSolve?),我没有初始条件,但只有最终条件的状态变量。如何才能做到这一点?如何指定求解R中的微分方程的最终值(而不是初始值)
典型的代码是:ode(times,y,parameters,function ...)其中y是初始条件,函数定义了微分方程。
我想解决R中的微分方程(deSolve?),我没有初始条件,但只有最终条件的状态变量。如何才能做到这一点?如何指定求解R中的微分方程的最终值(而不是初始值)
典型的代码是:ode(times,y,parameters,function ...)其中y是初始条件,函数定义了微分方程。
你的方程time reversible,也就是说,你可以改变你的微分方程,使它们在时间上向后运动吗?最典型的情况是这意味着逆转渐变的标志。例如,对于速率为r
(梯度为x
= r*x
)的简单指数增长模型,翻转该符号将使梯度为-r*x
,并生成指数衰减而不是指数增长。
如果是这样,你所要做的就是用你的最终条件作为你的初始条件,改变渐变的符号,你就完成了。
我最初误读你的问题,因为你知道都是的最初和最终条件。这种类型的问题被称为boundary value problem,并需要从标准(更基本)initial-value problems单独的一类数值算法。
library(sos)
findFn("{boundary value problem}")
告诉我们,上有几个CRAN R封装(bvpSolve
看起来最有前途)为解决这类问题。
给定一个微分方程
y'(t)=F(t,y(t))
在其中y(tf)=yf
被给定为初始状态的间隔[t0,tf]
,可以通过考虑
x(s) = y(tf - s)
==> x'(s) = - y'(tf-s) = - F(tf-s, y(tf-s))
x'(s) = - F(tf-s, x(s))
现在
x(0) = x0 = yf.
变换此成标准形式
This shou ld很容易使用包装函数进行编码,最后一些列表反转从x
到y
。
有些ODE求解器还允许负的步长,使人们可以简单地给时间的y
按降序tf
建设t0
不使用一些中介x
。