信科08—1 0811620106 黄席路 上机报告实践 ——chase追赶法
?? 算法:设Ax=b,其中A∈?????n,b∈????,未知x∈????,记为
??(1)??(1)???(1)??(1)
??(2)
???(n?1) ? = ????(??)??(??)
??(??)??(??) .分解: ??(1)??(1)?1?
??(1) ??(2)???(n?1) doolittle ??(2)?
???(??)??(??)=
???(??)1?比较两边系数,得
步骤Ⅰ:计算系数公式 β(1)= ??(1). for i = 2,3,…,n ??(??)= ??(??)/ ??(i?1)
??(??)= ??(??)- ??(??)* ??(??) 步骤Ⅱ:
1???(1)??(1)
①解Ly=d即 ??(2)? ? =???(??)1
??(??) ???(??)
??(1)= ??(1).
for i = 2,3,…,n
??(??)= ??(??)- ??(??)* ??(i?1)
??(1)??(1)???(1)??(1)
②解Ux=y即
???(n?1) ? = ? ???(??)
??(??)??(??) ??(??)= ??(??)/ ??(?? for i = 2,3,…,n
??(??)= ?? ?? ??? ?? ???(n+1) / ??(??)
?? 程序:
function chase(A,f) L=zeros(size(A)); U=eye(size(A)); L(1,1)=A(1,1);
U(1,2)=A(1,2)/A(1,1); n=length(A(:,1)); for i=2:n-1
U(i,i+1)=A(i,i+1)/(A(i,i)-A(i,i-1)*U(i-1,i));
end
??(1)????(n?1)
??(??)
for i=2:n
L(i,i-1)=A(i,i-1);
end
for i=2:n-1
L(i,i)=A(i,i+1)/U(i,i+1);
end
L(n,n)=A(n,n)-L(n,n-1)*U(n-1,n); Y=zeros(size(f)); Y(1)=f(1)/A(1,1); for i=2:n
Y(i)=(f(i)-A(i,i-1)*Y(i-1))/(A(i,i)-A(i,i-1)*U(i-1,i));
end
X=zeros(size(f)); X(n)=Y(n); for i=n-1:-1:1
X(i)=Y(i)-U(i,i+1)*X(i+1);
end
disp(L);
disp(U); disp(Y); disp(X);
程序运行及结果: 举例如下:
>> A=[2 7 0;3 2 9;0 4 5]; >> f=[5 6 7]; >> chase(A,f);
2.0000 0 0 3.0000 -8.5000 0 0 4.0000 9.2353
1.0000 3.5000 0 0 1.0000 -1.0588 0 0 1.0000
2.5000 0.1765 0.6815
-0.6433 0.8981 0.6815
上机心得:
通过对追赶法的原理分析,编写出Matlab程序实现了对三对角方程组的求解。解决了例如解常微分方程边值问题,解热传导方程以及船体数学放样中建立三次样条函数等求解系数矩阵呈三对角线形的线性方程组的问题。
相关推荐: