У меня есть линейная система Ах = Ь, которая создается с помощью естественных сплайнов и выглядит следующим образом:Методы решения системы линейных с MATLAB
Код в MATLAB, который должен решить следующую систему:
clear;
clc;
x = [...] ;
a = [...];
x0 = ...;
n = length(x) - 1 ;
for i = 0 : (n-1)
h(i+1) = x(i+2) - x(i+1) ;
end
b= zeros(n+1 , 1) ;
for i =2: n
b(i,1) = 3 *(a(i+1)-a(i))/h(i) - 3/h(i-1)*(a(i) - a(i-1)) ;
end
%linear system solution.
l(1) =0 ; m(1) = 0 ; z(1) = 0 ;
for i =1:(n-1)
l(i+1) = 2*(x(i+2) - x(i)) - h(i)* m(i) ;
m(i+1) = h(i+1)/l(i+1);
z(i+1) = (b(i+1) - h(i)*z(i))/l (i+1) ;
end
l(n+1) =1;
z(n+1) = 0 ;
c(n+1) = 0 ;
for j = (n-1) : (-1) : 0
c(j+1) = z(j+1) - m(j+1)*c(j+2) ;
end
, но я не могу понять, какой метод используется для решения проблемы l . Если бы я должен был догадаться, я бы сказал, что используется метод LU, скорректированный для трехдиагональных матриц, но я до сих пор не могу найти соединение с кодом ...
Любая помощь будет оценена!
Чтобы решить линейную систему 'A * x = b', вы обычно просто используете' x = A \ b'. Чтобы построить матрицу 'A', найдите команду' diag'. Вы можете сравнить 'x' и ваше решение' c', если это даже правильно. – knedlsepp
Использует треугольный матричный решатель. См. Стр. 115 книги числовых рецептов (http://nrbook.com/c/) – ja72