📄 thomas.m
字号:
%Thomas.m
function N=thomas(A,b)
% 使用thomas算法求解一维代数方程,方程的系数矩阵必须为三对角矩阵
% 输入:系数矩阵A,非齐次向量b
% A可使用两种方式输入
% 1、完整方式
% 2、对角元向量方式
% A=[[a1,a2,a3,…,aM]',[b1,b2,…,b(M-1),0]',[0,c2,c3,…,cM]']
% 输出:解向量N
[M n]=size(A);
P=zeros(M,1);
Q=zeros(M,1);
if (M==n&n>3)%方式1输入
i=1;
P(i)=-A(i,2)/A(i,i);
Q(i)=b(i)/A(i,i);
for i=2:M-1,
P(i)=-A(i,i+1)/(A(i,i)+A(i,i-1)*P(i-1));
Q(i)=(b(i)-A(i,i-1)*Q(i-1))/(A(i,i)+A(i,i-1)*P(i-1));
end
i=M;
P(i)=0;
Q(i)=(b(i)-A(i,i-1)*Q(i-1))/(A(i,i)+A(i,i-1)*P(i-1));
N(M)=Q(M);
for i=M-1:-1:1,
N(i)=P(i)*N(i+1)+Q(i);
end
elseif (M~=n&n==3)%方式2输入
AA=diag(A(:,1))+[zeros(M-1,1),diag(A([1:end-1],2));zeros(1,M)]+[zeros(1,M);diag(A([2:end],3)),zeros(M-1,1)];
N=thomas(AA,b);
else disp('n<3'); return;
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -