二阶 ode 的有限差分

计算科学 数值分析 有限差分 微分方程
2021-12-10 03:51:18

我在代码中看到了诸如之类的离散化代码,( ) 尝试d2T(x)d2xx=sin(θ)

   !============== here are some defined variables
   deltaTheta = pi/150
   deltax(i) = cos(theta(i)) * deltaTheta  
   dx = 0.5*(deltax(i) + deltax(i+1))
   dx1 = 0.5*(deltax(i-1)+ deltax(i))
   !============== here is the discretization that I am talking about
   ... = ((T(i+1) - T(i))/dx - (T(i) - T(i-1))/dx1)/(0.5 *(dx + dx1))

这种离散化是针对非边界城市的;这种离散化叫什么?

1个回答

它只是从三个非等距点计算二阶导数。它是通过首先计算(近似)与点相邻的两个间隔中的每一个的导数来计算的i使用

T(i+1)T(i)Δ(i+1)
T(i)T(i1)Δ(i)
然后通过对两个区间的中点采用有限差分模板来计算二阶导数(的近似值):
T(i+1)T(i)Δ(i+1)T(i)T(i1)Δ(i)Δ(i+1)+Δ(i)2
这里,Δ(i+1)=x(i+1)x(i)Δ(i)=x(i)x(i1)您正在查看的代码公式中的dx1和项。dx

我不知道这与dxdx1变量有什么关系——这些对我来说看起来是错误的,因为它们不是增量,而是它们的平均值,deltax(i)它们本身不是增量(差异),而是据我所见的点位置。我似乎看不出这种变量名或表达式的选择是有意义的。