求解对称三对角矩阵

时间:2019-09-04 15:47:52

标签: matlab matrix

我正在尝试求解带有向前和向后子对象的对称三对角矩阵,但是向量的最后一个值不正确,也许前向和反向子对象不适用于这种类型的矩阵?

function [ x ] = FXThomasMethod(n,a,b,c,z)

%*********************************************************************
% Thomas Method for solving Tridiagonal Matrix                       %
%                                                                    %
% Input :                                                            %
%        a, vector for diagonal  0;                                  %           
%        b, vector for diagonal -1;                                  %
%        c, vector for diagonal  1;                                  %           
%        n, matrix's size;                                           %                 
%        z, vector for costant terms.                                %
%                                                                    %
% Output:                                                            %
%        x, vector for unknowns.                                     %
%                                                                    %
%*********************************************************************

%Thomas implementation
a(1,1)= a(1);
for i=2:n
    b(i,1) = b(i)/a(i-1);
    a(i,1) = a(i) - b(i)*c(i-1);
end    

%Tridiagnoal Matrix creation
T = spdiags ([b a c], -1:1,n,n);
[L,U,P] = lu(T);


%Forwards subs implementation for solve Ly = z; 
for i=1:n
   y(i)=z(i);
   for j=1:i-1
      y(i)=y(i)-L(i,j)*y(j);
   end
   y(i)=y(i)/L(i,i);
end

%Backwards subs implementation for solve Ux = y;
for i=n:-1:1
   x(i)=y(i);
   for j=i+1:n
      x(i)=x(i)-U(i,j)*x(j);
   end
   x(i)=x(i)/U(i,i);
end

end

0 个答案:

没有答案
相关问题