Matlab 数值分析 三对角方程组的追赶法
B站金会员
编辑于 2022年11月10日 12:52
收录于文集
共10篇

Matlab 数值分析 三对角方程组的追赶法

代码块
clike
自动换行
复制代码
function [X]=Thomas(A,B)
%追赶法也叫Thomas方法
%输入三对角系数矩阵A和列向量B
%输出该方程组的解X

[n,~]=size(A); %获取A矩阵的维度大小n
%P146公式(5.42)
L=eye(n);                                    %A=LU中的L,建立L,顺便给对角线赋值
U=zeros(n);                                %A=LU中的U,建立U
U(1,1)=A(1,1);                             %P147公式(5.43)第一行
%P147公式(5.44)
Y=zeros(n,1);                              %建立列向量Y
Y(1)=B(1);                                   %P147公式(5.44)第一行
for i=2:n
    U(i-1,i)=A(i-1,i);                      %给U中的c1到cn赋值
    L(i,i-1)=A(i,i-1)/U(i-1,i-1);        %P147公式(5.43)第二行
    U(i,i)=A(i,i)-L(i,i-1)*U(i-1,i);      %P147公式(5.43)第三行
    Y(i)=B(i)-L(i,i-1)*Y(i-1);            %P147公式(5.44)第二行
end
%147公式(5.45)
X(n)=Y(n)/U(n,n);                         %147公式(5.45)第一行
for i=n-1:-1:1
    X(i)=(Y(i)-U(i,i+1)*X(i+1))/U(i,i);%147公式(5.45)第二行
end
end
复制成功

function [X]=Thomas(A,B)

%追赶法也叫Thomas方法

%输入三对角系数矩阵A和列向量B

%输出该方程组的解X

[n,~]=size(A); %获取A矩阵的维度大小n

%P146公式(5.42)

L=eye(n);                                    %A=LU中的L,建立L,顺便给对角线赋值

U=zeros(n);                                %A=LU中的U,建立U

U(1,1)=A(1,1);                             %P147公式(5.43)第一行

%P147公式(5.44)

Y=zeros(n,1);                              %建立列向量Y

Y(1)=B(1);                                   %P147公式(5.44)第一行

for i=2:n

    U(i-1,i)=A(i-1,i);                      %给U中的c1到cn赋值

    L(i,i-1)=A(i,i-1)/U(i-1,i-1);        %P147公式(5.43)第二行

    U(i,i)=A(i,i)-L(i,i-1)*U(i-1,i);      %P147公式(5.43)第三行

    Y(i)=B(i)-L(i,i-1)*Y(i-1);            %P147公式(5.44)第二行

end

%147公式(5.45)

X(n)=Y(n)/U(n,n);                         %147公式(5.45)第一行

for i=n-1:-1:1

    X(i)=(Y(i)-U(i,i+1)*X(i+1))/U(i,i);%147公式(5.45)第二行

end

end

=============================================

2022.11.10补充: