Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.01.2019, 14:56   #1
Nuc
Пользователь
 
Регистрация: 18.02.2018
Сообщений: 18
По умолчанию Метод вращения Якоби

Здравствуйте!!! Написал код, для поиска собственных значений и векторов методом вращений Якоби
Код:
restart;
with(linalg):
n:=10;
N:=5; 
j:=1.5+0.1*n;
k:=n;
l:=n;   
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]]);
eigenvectors(A);
B:=A: k:=0: flag:=0: eps:=0.001:
while (flag = 0) do 
m:=abs(B[1,2]):
iStr:=1: iCol:=2:
for i from 1 to N do 
for j from 1 to N do 
if (i < j) and (j > 2) then 
if (m < abs(B[i,j])) then 
m:=abs(B[i,j]):
iStr:=i: iCol:=j:
end if: end if: end do: end do:
if abs(m) <= eps then
flag:=1:
else 
phi:=evalf((1/2)*arctan(2*B[iStr,iCol]/(B[iStr,iStr]-B[iCol,iCol]))):
H[k]:=diag(1,1,1,1,1): 
H[k][iStr,iStr]:=cos(phi):
H[k][iStr,iCol]:=-sin(phi): 
H[k][iCol,iStr]:=sin(phi):
H[k][iCol,iCol]:=cos(phi): 
if k = 0 then 
G:=H[0]:
end if:
#print(B);
#print(H[k]);
B:=multiply(transpose(H[k]), multiply(B,H[k])): 
if k <> 0 then 
G:=multiply(G,H[k]):
end if:
k:=k+1:
end if: end do:
#print(k);
G:=multiply(seq(H[i],i=0..k-1)):
for i from 1 to N do 
lambda[i]:=B[i,i]; 
e[i]:=col(-G,i); 
end do;
но препод сказал, что он коряв с точки зрения программирования.
Сможете ответить, в чём проявляется корявость?
Nuc вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Метод прогонки, Зейделя, Якоби для СЛАУ(Paskal) Мельхиора Паскаль, Turbo Pascal, PascalABC.NET 1 29.04.2014 18:15
Метод вращения Якоби (ошибка в цикле) crawter Помощь студентам 0 14.11.2012 19:43
Метод Зейделя Якоби AnZet Паскаль, Turbo Pascal, PascalABC.NET 0 11.12.2011 17:39
Паскаль. Метод Якоби Flashmob Помощь студентам 0 23.12.2010 05:13