Реализация QR-разложения в клене
QR-алгоритм должен сходиться к собственным значениям входной матрицы A после нескольких итераций, но в моем случае это не так. Я хочу использовать собственные значения, чтобы найти единичные значения, отсюда и ввод. Я хочу сделать это, без каких-либо встроенных функций.
restart:
with(LinearAlgebra):
B := RandomMatrix(3);
B := BidiagonalForm(B);
A := evalf(Matrix([[Matrix(3),Transpose(B)],[B,Matrix(3)]]));
C := A;
t0 := time():
for k from 1 to 300 do
Q, R := QRDecomposition(A);
A:=R.Q;
end do:
time() - t0;
Diagonal(A);
sort(%);
abs(Eigenvalues(C));
Последняя строка должна проверить решение. Заранее спасибо.