追赶法求解三对角线性方程组
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
作业五:编写用追赶法求解三对角线性方程组的标准程序,并求下列方程组的解。matlab 1233212417259x x x -⎡⎤⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥=-⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎣⎦
function [ x,flag ] =zgf(A,b)
% A 为方程组的系数矩阵
% b 为方程组的右端项
% x 为方程组的解
% flag 为指标向量,flag=‘failure ’表示失败,flag=‘OK ’表示成功
[n,m]=size(A);n=length(b);
[L,U,flag]=LU_decom(A);
for i=1:n
if i==1
y(i)=b(i)/L(i,i);
else
y(i)=(b(i)-L(i,i-1)*y(i-1))/L(i,i);
end
end
x(n)=y(n)/U(n,n);
for k=n-1:-1:1
y(k)=y(k)-U(k,k+1)*x(k+1);
x(k)=y(k)/U(k,k);
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [L,U,flag]=LU_decom(A)
[n,m]=size(A);
if n~=m
error('The rows and columns of matrix A must be equal!');
return;
end
L=eye(n);
U=zeros(n);
flag='OK';
for k=1:n
for j=k:n
z=0;
for q=1:k-1
z=z+L(k,q)*U(q,j);
end
U(k,j)=A(k,j)-z;
end
if abs(U(k,k)) flag='failure'; return; end for i=k+1:n z=0; for q=1:k-1 z=z+L(i,q)*U(q,k); end L(i,k)=(A(i,k)-z)/U(k,k); end end 流程图 运行结果