追赶法求解三对角线性方程组

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

流程图

运行结果

相关文档
最新文档