追赶法求解三对角矩阵
理论推导
① 用表示
从如下的出发
可以进一步整理成
其中
基于整理后的矩阵,可以得到
也就是说,先通过最后一行计算得到,然后再从最后一行往上计算。
② 用表示
从如下的三对角矩阵出发,
其中对角元,左旁元,右旁元. 可以进一步整理成
其中,且有
基于整理后的矩阵,可以得到
也就是说,先通过最后一行计算得到,然后再从最后一行往上计算.
伪程序/流程
求解
左旁元 → a(ny)
对角元 → b(ny)
右旁元 → c(ny)
→ f(ny)
→ u(i,n+1),维度是u(ny,nt)
ny:实空间网格数, nt:时间空间网格数
M(1)=b(1)
do i=2,ny-1
L(i)=a(i)/M(i-1)
M(i)=b(i)-L(i)*c(i-1)
end do
其中M(i)即为
do i = 1,ny
f(i)=R(i)
end do
一般来说,R(i)与矩阵元素以及均有关系,这里为了方便理解,以伪代码的形式展示,故写成以上形式,具体实践见CN差分格式求解偏微分方程
y(1)=f(1)
do i=2,ny
y(i)=f(i)-L(i)*y(i-1)
end do
注意, L(i)=a(i)/M(i-1)
- 计算
u(ny,n+1)=y(ny)/M(ny)
do i=ny-1,1,-1
u(i,n+1)=(y(i)-c(i)*u(i+1,n+1))/M(i)
end do
至此可以计算出n+1时刻的整个空间网格上的,在时间循环里不断调用,就可以计算出整个时间网格上的