【问题标题】:deSolve & loop to solve a second order differential equation in R?deSolve & 循环求解 R 中的二阶微分方程?
【发布时间】:2021-05-07 12:13:43
【问题描述】:

亲爱的社区,你好,

我尝试求解二阶微分方程已经有一段时间了。方程式如下:

∂P/∂t = D * ∂^2P/∂x^2

我应该运行几个 P;数据框的 P1= df$col1, P2=df$col2, P3=df$col3,D 为 df$col4,x 为 df$col5

我正在尝试为此使用“deSolve”,但目前我没有太大的成功。感谢您对如何用 R 求解二阶微分方程的意见。

【问题讨论】:

  • 它是一个偏微分方程,在您积分的时间方向上是一阶的(抛物线 PDE,热方程)。您似乎应用了线条的方法。数据框给出了这个任务的几个实例的初始条件(t=0)?边界条件是什么,第一个和最后一个 x 上的常数或某种对称性或不同的东西?
  • 我不确定你的评论说什么,它比澄清更令人困惑。我假设您有一个 PDE P_t(x,t) = D(x)·P_xx(x,t)0 <= x <= LP(x,0)D(x) 作为函数表,用于在数据框的列中离散化 x in [0,L]。然后,您需要 P(0,t)P(L,t) 的一些条件来获得完全定义的问题。 (如果D(x) 总体为负,则精确解和数值解将迅速恶化,在 x 方向变得非常参差不齐。)
  • 我的评论太长了——因此请看下面,对造成的混乱表示抱歉
  • 使用 deSolve 的二阶 ODE(范德波尔方程)可以在以下论文中找到 doi.org/10.32614/RJ-2010-013
  • @tpetzoldt,哇,太棒了!我想我已经想通了,感谢您的意见和这些材料! :D 非常感谢! Ps:我还使用 Eularian 方法做了一些工作,并且没有 deSolve 这是一个很棒的包,恭喜!

标签: r loops differential-equations desolve


【解决方案1】:

让我再试一次。边界条件 - 变量 P 的初始条件是; P1(t=0)= 0.4; P2(t=0)= 4.6; P3(t=0) = 0.37。我想只考虑第一个 P1 的代码,然后我可以对我的 data.frame 的以下列应用相同的代码。

使用 deSolve 这是我目前得到的结果: (P1=P)

state <- c(P=0.4)
t <- seq(0,100, by=0.1)
J <- function (t, P, parameters) {
  deltax     <- c (1, rep(1, numboxes - 1)) ##doing a vector
  Fluxx       <- -D * diff (c(0,P,0) /deltax #First derivative
 dP    <- diff(Fluxx)/deltax # second derivative
  list(dP,Fluxx)
} 

**也可以通过应用欧拉方法求解方程并计算浓度变化加上随时间变化的散度。

【讨论】:

    猜你喜欢
    • 2018-02-14
    • 1970-01-01
    • 1970-01-01
    • 2021-01-29
    • 2022-01-04
    • 1970-01-01
    • 2021-06-07
    • 2019-03-09
    • 1970-01-01
    相关资源
    最近更新 更多