Matlab 数值分析 三对角方程组的追赶法
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补充: