Условие задачи
1. Разработать программу на языке MATLAB(Scilab), реализующую вычисление собственных значений матрицы (в соответствии с вариантом) QR-алгоритмом и встроенной в MATLAB(Scilab) функцией.
2. Применить программу для нахождения собственных значений заданной матрицы (QR- алгоритм и встроенная функция).
3. В случае невозможности вычисления собственных значений матрицы (в соответствии с вариантом) QR-алгоритмом необходимо подробно разъяснить причину и предложить вариант изменения условий таким образом, чтобы собственные значения можно было вычислить указанным численным методом.
Ответ
Запишем две подпрограммы одна из них реализует простое QR разложение матрицы А, а другая организует процедуру поиска собственных чисел.
%процедура определения собственных чисел
function [ R, Q ] = QRSobstv( A )
%находим собственные числа - на диагонали матрицы R
eps=1;
[ Q, R ] = QRrazl( A );
A=R*Q;
e1=diag(R);
%с точностью 10^(-10)
while eps10^(-10)
[ Q, R ] = QRrazl( A );
A=R*Q;
eps=max(abs(e1-diag(R)));
e1=diag(R);
end
%матрица Q может получиться не единичной, а с (-1) на главной диагонал...