Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno 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

Odpověď na otázku

1 Zadajte svou přezdívku:
2 Napište svou odpověď:
3 Pokud chcete dostat ban, zadejte libovolný text:

Zpět do poradny