(完整word版)追赶法求解三对角方程及其算例
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
追赶法求解三对角方程组
要求:对于给定的三对角系数矩阵和右端项,可以求
解线性代数方程组
一、 追赶法的数学理论
设系数矩阵为三对角矩阵
112223311100000000
000000
n n n n
n b c a b c a b A a b c a b ---⎛⎫ ⎪ ⎪ ⎪=
⎪ ⎪ ⎪
⎪ ⎪⎝
⎭
则方程组Ax=f 称为三对角方程组。
设矩阵A 非奇异,A 有Crout 分解A=LU ,其中L 为下三角矩阵,U 为单位上三角矩阵,记
1
122
233
1
10
00010
000
0001000
000100,00000000
00
0001n n n
n b L U γαβγββγβ--⎛⎫⎛⎫ ⎪
⎪ ⎪ ⎪ ⎪ ⎪∂==
⎪
⎪ ⎪
⎪ ⎪ ⎪
⎪ ⎪ ⎪ ⎪∂⎝
⎭
⎝
⎭
可先依次求出L ,U 中的元素后,令Ux=y ,先求解下三角方程组Ly=f 得出y ,再求解上三角方程组Ux=y 。
事实上,求解三对角方程组的2追赶法将矩阵三角分解的计算与求解两个三角方程组的计算放在一起,使算法更为紧凑。其计算公式为:
1111,
1111
,111
,2,3,,,1,2,,1i
i i i i i i i i
i i i i i n n
i i i i c f b y i n c a b a f y y x y i n n x y x βγββαβγγβαβγ--+⎧===⎪⎪
=⎪⎪
⎪==-=
⎪⎪⎨
-⎪=⎪⎪
=⎪⎪=--⎪=-⎪⎩对对(*)
二、 追赶法的算法和流程图
1.预处理
生成方程组的系数i u 及其除数i d ,事实上,按式(*)可交替生成i d 与i u :
1d →1u →2d →…→1-n u →n d
其计算公式为
⎪⎩⎪
⎨⎧-=-===+++1,...,2,1,
,/c u b 111
i i 11n i u a b d d d i i i i i 2.追的过程
顺序生成方程组右端:
i y →2y →…→n y
据式(*)的计算公式为
n i d y a f y d f y i i i i i ,...,3,2,
/)(/1111=⎩⎨
⎧
-==-
逆序得出方程组的解i x :
n x →1-n x →…→1x
其计算公式按式为
1,2,1,1,⋯--=⎩⎨
⎧
-==+n n i x u y x y x i i i i
n n 三、 追赶法的Matlab 实现
function x=chase(a,b,c,f)
%求解线性方程组Ax=f,其中A 是三对角阵 %a 是矩阵A 的下对角线元素a(1)=0 %b 是矩阵A 的对角线元素
%c 是矩阵A 的上对角线元素c(N)=0 %f 是方程组的右端向量 N=length(f);
x=zeros(1,N);y=zeros(1,N); d=zeros(1,N);u= zeros(1,N); %预处理 d(1)=b(1); for i=1:N-1
u(i)=c(i)/d(i);
d(i+1)=b(i+1)-a(i+1)*u(i); end
y(1)=f(1)/d(1); for i=2:N
y(i)=(f(i)-a(i)*y(i-1))/d(i); end %赶的过程 x(N)=y(N); for i=N-1:-1:1
x(i)=y(i)-u(i)*x(i+1); end
四、 追赶法的算例实现
算例 用追赶法求解方程组⎥
⎥⎥⎥
⎦
⎤⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎦⎤⎢⎢⎢
⎢⎣⎡1016432153-1-21-2-31-1-2x x x x 解答
令a=[0,-1,-1,-3]; b=[2,3,2,5]; c=[-1,-2,-1,0]; f=[6,1,0,1];
在命令窗口运行语句 x=chase(a,b,c,f) 得结果为 x=
5 4 3 2