Логотип Автор24реферат
Задать вопрос
%
уникальность
не проверялась
Решение задач на тему:

Разработать программу на языке MATLAB(Scilab)

уникальность
не проверялась
Аа
2114 символов
Категория
Программирование
Решение задач
Разработать программу на языке MATLAB(Scilab) .pdf

Зарегистрируйся в 2 клика в Кампус и получи неограниченный доступ к материалам с подпиской Кампус+ 🔥

Условие

Разработать программу на языке MATLAB(Scilab), реализующую вычисление собственных значений матрицы (в соответствии с вариантом) QR-алгоритмом и встроенной в MATLAB(Scilab) функцией. A=-288154-112 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 eps>10^(-10)
[ Q, R ] = QRrazl( A );
A=R*Q;
eps=max(abs(e1-diag(R)));
e1=diag(R);
end
%матрица Q может получиться не единичной, а с (-1) на главной диагонали,
%(т.е . собственные числа будут других знаков), поэтому исправляем это:
R=R*Q;
Q=A/R;
end

%QR разложение
function [ Q, R ] = QRrazl(A)
n = length(A(1,:));
Q=eye(n);

for i=1:(n-1)
% а - i столбец активной матрицы целиком
a=A(1:n,i:i);
% первые i-1 значений обнуляем
if (i~=1)
for j=1:(i-1) a(j)=0;
end
end
% i-ое значение изменяем согласно методу Хаусхолдера
a(i)=a(i)+sign(a(i))*norm(a,2);
H=eye(n)-2*(a*a')/(a'*a);
%Получаем QR разложение:
Q=Q*H;
A=H*A;
end
R=A;
end
Применяем программу для нахождения собственных значений заданной матрицы, сравниваем со встроенной функцией:
clear all
%нахождение собственных чисел
A=[-2 8 8; 1 5 4; -1 1 2];
[ R, Q ] = QRSobstv( A );
for i=1:length(A)
fprintf('%d - ое собственное число равно %f\n',i, R(i,i));
end
%сравнение с встроенной в MATLAB функцией
fprintf('Собственные числа с помощью встроенной функции eig:\n');
disp(eig(A))
Получили:
Таким образом, собственные числа: 6; -2; 1.
50% задачи недоступно для прочтения
Переходи в Кампус, регистрируйся и получай полное решение
Получить задачу
Больше решений задач по программированию:

Двоичное число преобразовать в десятичное 110011011

162 символов
Программирование
Решение задач

Даны две линии y=fx проходящая через точку (0

1832 символов
Программирование
Решение задач
Все Решенные задачи по программированию
Найди решение своей задачи среди 1 000 000 ответов
Крупнейшая русскоязычная библиотека студенческих решенных задач