Помогите разобраться в задаче.

Обсуждение вопросов, связанных с Partial Differential Equations Toolbox и Comsol MultiPhysics (Femlab)Анализ данных и статистика в MATLAB. Проектирование систем управления в MATLAB\Simulink

Модератор: Admin

ДмитрийВанс
Пользователь
Сообщения: 1
Зарегистрирован: Вс дек 24, 2017 7:08 pm

Помогите разобраться в задаче.

Сообщение ДмитрийВанс » Вс дек 24, 2017 7:12 pm

Имеется 3 задачи и не могу понять чего от меня хочет заказчик.
1 программа
function x=Jacoby(A,p)

% Вычисление собственных числе матрицы
% методом вращения Якоби
% Делается p шагов

% Определние размерности матрицы
n=size(A); n=n(1);

% Выполнение нового повортота
for j=1:p
[phi k m]=fangel(A); % Вычисление угла поворота
H=eye(n);

% Поворот
H(k,k)=cos(phi);
H(k,m)=-sin(phi);
H(m,k)=sin(phi);
H(m,m)=cos(phi);
A=H'*A*H;
end
x=diag(A);

end

2 программа
function [f k m] = fangel( A )
% Угол поворота для метода Якоби

n=size(A); n=n(1);

M=(A(1,2)); k=1; m=2;

for i=1:n
for j=i+1:n
if abs(A(i,j))>abs(M)
M=A(i,j);
k=i;
m=j;
end;
end;
end;

f=1/2*atan(2*M/(A(k,k)-A(m,m)));

end

3 программа

%% Задание №3

% Вычисление собственных числе матрицы методом вращения Якоби

clear; % Очистка области переменных
clc; % Очистка экрана
close all; % Закрывает открытые окна

% Тестирование алгоритма для разных матриц
disp('Матрица');
A=magic(3);
A=triu(A)+triu(A,1)'
disp('Собственные значения');
Jacoby(A,50)

disp('Матрица');
B=rand(3);
A=triu(B)+triu(B,1)'
disp('Собственные значения');
Jacoby(B,10)

Программы работают отлично, но мне пришло такое письмо с доработками, помогите кто может.

для определения и использование трансцендентной функции неэффективно. Более экономным способом является использование известных тригонометрических тождеств и . Тогда определение и сводится к алгебраически операциям
Данная функция является более эффективной
Вычисление в программе реализовано неэффективно. Вы используете для матрицы U матрицу полного размера. Между тем для полного определения этой матрицы достаточно всего трех чисел . Кроме того, при умножении на такую матрицу действия следует производить не со всеми элементами матрицы A, а только для части из них.

Программа кроме собственных значений должна выдавать и собственные векторы.

В качестве примера следует привести пример для матрицы размером побольше, чем 3х3. Результат Вашей программы следует сравнить с результатом апробированной программы MATLAB’а – eig.