⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 thomas.m

📁 用于计算脉冲激光照射下物体的温度分布
💻 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 + -