Реализация 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));

Последняя строка должна проверить решение. Заранее спасибо.

0 ответов

Другие вопросы по тегам