Код Matlab для LU decomp Трехугольная матрица
function [u1,d1,l1] = decomt(u,d,l)
%length of diagonal
n=length(d);
u1=u;
d1 = d;
l1=l;
%perform LU decomp
d1(1) = d(1);
for i =2:n
l1(i-1) = l(i-1)/d1(i-1); %update lower triangle
d1(i)= d(i) - (l(i-1)/d1(i-1))*u(i-1); % update diagonal
end
end
Чтобы решить, передний саб и задний саб.
function [x] = solvet(u,d,l,b)
n=length(d);
x = (1:n);
y =(1:n);
% Solve tridiag LUx=b
% Step 1 Solve Ly=b for y
y(1) = b(1)
for i=2:n
y(i) = b(i) - l(i-1)*y(i-1);
end
%Step 2 : Solve Ux=y for x
x(n) = y(n)/d(n);
for i=(n-1):-1:1
x(i) = (y(i)-u(i)*x(i+1))/d(i);
end
end