追赶法是求大型稀疏方程之三对角线性方程组的三角分解方法,即求解方程组Ax=b,其中A为三对角矩阵,主对角线上的元素记为(a1, a2, …, an) ,紧贴主对角线上方的一根对角线上的元素记为(c1,…c(n-1) ),紧贴主对角线下方的一根对角线上的元素记为(d2, d3, …, dn),b=(b1,…bn)
对三对角矩阵A进行Crout分解,有
A=[[α1 0 0 0 ....... [[1 β1 0 0 ......
γ1 α2 0 0 ...... * 0 1 β2 0 ...... = LU
0 γ1 α3 0 ......]] 0 0 1 β3......]]
依次求取αi,βi,其中
α1=a1,β1=c1/α1,γi=di
αi=ai-di*βi
βi=ci/αi
下面是一个例子
A=[[ 3 2 0
-1 3 2
0 -1 3...
..........]]的n阶三对角矩阵
b=(7,11,15,9)'
求解x
首先进行crout分解,将AX=b转化为LUx=b
令Ux=y,仿照平方根解法,利用Ly=b和Ux=y,解出x
代码如下
# -*- coding: utf-8 -*-
"""
Created on Mon Feb 11 20:19:00 2019
@author: 鹰皇
"""
#追赶法
import numpy as np
A=[[3.00000,2.00000,0.00000,0.00000],[-1.00000,3.00000,2.00000,0.00000],[0.00000,-1.00000,3.00000,2.00000],[0.00000,0.00000,-1.00000,3.00000]]
b=[[7.00000,11.00000,15.00000,9.00000]]
def get_base(A):#获得一个基,在上面修改得到答案
base=list(np.zeros((le

本文介绍了使用追赶法解决大型稀疏三对角矩阵线性方程组的方法,详细阐述了Crout分解过程,并通过Python代码展示了如何将Ax=b转化为LUx=b,最终求解得到x的解。

1239

被折叠的 条评论
为什么被折叠?



