Собственные значения и векторы

Форум пользователей пакета Maple

Модератор: Admin

Кли
Сообщения: 116
Зарегистрирован: Пт ноя 04, 2016 4:54 pm

Собственные значения и векторы

Сообщение Кли » Чт сен 13, 2018 10:26 pm

Здравствуйте, как найти максимальный по модулю собственные значения и векторы по степенному методу? Надо написать процедуру?

Markiyan Hirnyk
Сообщения: 1254
Зарегистрирован: Вс дек 04, 2011 11:07 pm

Re: Собственные значения и векторы

Сообщение Markiyan Hirnyk » Пн сен 17, 2018 9:52 am

Для начала прочитайте справку.

Кли
Сообщения: 116
Зарегистрирован: Пт ноя 04, 2016 4:54 pm

Re: Собственные значения и векторы

Сообщение Кли » Пн сен 17, 2018 12:03 pm

Мне по такому методу надо
Скриншот 17-09-2018 130038.png
Скриншот 17-09-2018 130038.png (39.39 КБ) 284 просмотра

Скриншот 17-09-2018 130052.png
Скриншот 17-09-2018 130052.png (37.55 КБ) 284 просмотра

Кли
Сообщения: 116
Зарегистрирован: Пт ноя 04, 2016 4:54 pm

Re: Собственные значения и векторы

Сообщение Кли » Сб сен 22, 2018 11:49 pm

этот метод сложный?

Кли
Сообщения: 116
Зарегистрирован: Пт ноя 04, 2016 4:54 pm

Re: Собственные значения и векторы

Сообщение Кли » Пн окт 01, 2018 11:42 pm

Помогите пожалуйста с программой

Кли
Сообщения: 116
Зарегистрирован: Пт ноя 04, 2016 4:54 pm

Re: Собственные значения и векторы

Сообщение Кли » Вт окт 02, 2018 11:14 pm

Кли писал(а):Источник цитаты Помогите пожалуйста с программой

написал код, как я понимаю, вопрос: можно как то компактнее прогу написать и использовать вместо for while?

Код: Выделить всё

restart:
with(linalg);
n:=2:
j:=1.5+0.1*n:
k:=n:
l:=k:
A:=Matrix([[j,0.5*j,0,0.2*l,0],[0.5*j,j,0.3*j,0,0.1*l],[0,0.3*j,10,-0.3*j,0.5*l],[0.2*k,0,-0.3*j,j,-0.1*j],[0,0.1*k,0.5*k,-0.1*j,j]]);
b:=vector([-j+0.05*j^2,-0.8*j+0.1*j^2-0.02*l*j,-10+0.03*j^2-0.1*l*j,-0.2*k+0.3*j+0.02*j^2,0.01*k*l-0.5*k-0.2*j^2]):
y(0):=vector(5,5);
y(1) = evalm(A&*y(0));
for k from 1 to 50 do
y(k):=vector(5,0);
y(k):= evalm(A&*y(k-1));
for i from 1 to 5 do
G[i]:=y(k)[i]/y(k-1)[i];
end do:
end do:
v:=scalarmul(y(50),1/norm(y(50),2));
eigenvalues(A):eigenvectors(A);
lambda(1) := G[1];
B := matrix(5, 5, 0);
E := diag(1, 1, 1, 1, 1);
B := evalm(A-lambda(1)*E);
t(0):=vector(5,5):
for k from 1 to 200 do
t(k):=vector(5,0);
t(k):= evalm(B&*t(k-1));
for i from 1 to 5 do
g[i]:=t(k)[i]/t(k-1)[i];
end do:
end do:
print(t(200)); omega := g[1]; lambda(2) := omega+lambda(1); z := scalarmul(t(200), 1/norm(t(200), 2));
h:=evalm(A&*(-z));
l:=evalm(lambda(2)*(-z));