

MATLAB - LU rozklad - problém
Ahoj mám problém s programem na LU rozklad matice A s částečným výběrem hlavních prvků. Vstup: A Výstup: L, U, P
Program mám napsaný, ale vypisuje mi to chybu a nevím, jak to opravit. Děkuji za rady
function [L, U, P] = LURozklad(A)
P = eye (size(A));
L = P;
A_pred = A;
P_pred = P;
for k = 1:size(A) - 1
r = IndexPivotnihoRadku(A, k, k);
A_pred = VymenaRadkuMatice(A, k, r);
A = A_pred;
P_pred = VymenaRadkuMatice(P_pred, k, r);
for i = k + 1:size(A)
m_ik = A(i, k)/A(k, k);
for j = k + 1:size(A)
A(i, j) = A(i, j) - m_ik * A(k, j);
end
A(i, k) = m_ik;
end
printf('matice A: ', A);
end
printf('matice A: ', A);
for i = 2:size(A)
for j = 1:size(A)
if i > j
L(i, j) = A_pred(i, j);
end
end
end
printf('matice L: ', L);
for i = 1:size(A)
for j = 1:size(A)
if i <= j
U(i, j) = A_pred(i, j);
end
end
end
printf('matice U: ', U);
P = P_pred;
printf('matice P:', P);
end
function [r] = IndexPivotnihoRadku(A, OdRadku, IndexSloupce)
MaxHodnota = 0;
for i = OdRadku:size(A)
if abs(A(i,IndexSloupce)) > MaxHodnota
MaxHodnota = abs(A(i,IndexSloupce));
r = i;
end
end
end
function [A] = VymenaRadkuMatice(A, radek1, radek2)
PomocnyRadek = A(radek1,: );
A(radek1, : ) = A(radek2,:);
A(radek2, : ) = PomocnyRadek;
end
function printf(string, value)
disp(string);
disp(value);
end