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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.04.2012, 17:42   #1
ddlovato
 
Регистрация: 23.11.2011
Сообщений: 5
По умолчанию собственные значения по методу Данилевского

Помогите дописать программу - нужно чтоб выводило собственные значения , матрицу Фробениуса и собственные вектроры программа находит.
Код HTML:
const
m=4; n=4;
 var
 a,b,c,m3,mm3,m2,h,mm2,d,m1,g,mm1,p,q,w,y1,y2,y3,y4,z1,z2,z3,z4:array [1..n,1..m] of real;
 i,j,k:integer; x1,x2,x3,x4:real;

 begin

 a[1,1]:=2; a[1,2]:=1.7; a[1,3]:=1.6; a[1,4]:=4.5;
 a[2,1]:=1.7; a[2,2]:=2; a[2,3]:=2; a[2,4]:=3.5;
 a[3,1]:=1.6; a[3,2]:=2; a[3,3]:=1; a[3,4]:=1.5;
 a[4,1]:=4.5; a[4,2]:=3.5; a[4,3]:=1.5; a[4,4]:=1;

 m3[1,1]:=1; m3[1,2]:=0; m3[1,3]:=0; m3[1,4]:=0;
 m3[2,1]:=0; m3[2,2]:=1; m3[2,3]:=0; m3[2,4]:=0;
 m3[3,1]:=-a[4,1]/a[4,3]; m3[3,2]:=-a[4,2]/a[4,3]; m3[3,3]:=1/a[4,3]; m3[3,4]:=-a[4,4]/a[4,3];
 m3[4,1]:=0; m3[4,2]:=0; m3[4,3]:=0; m3[4,4]:=1;

 for i:=1 to m do
 for j:=1 to n do
 begin
 b[i,j]:=0;
 for k:=1 to n do
 b[i,j]:=b[i,j]+a[i,k]*m3[k,j];
 end;

 for i:=1 to m do
 for j:=1 to n do
 begin
 if i=j then mm3[i,j]:=1;
 if i<>j then mm3[i,j]:=0;
 end;
 for j:=1 to n do
 mm3[3,j]:=a[4,j];

 for i:=1 to m do
 for j:=1 to n do
 begin
 c[i,j]:=0;
 for k:=1 to n do
 c[i,j]:=c[i,j]+mm3[i,k]*b[k,j];
 end;

 m2[1,1]:=1; m2[1,2]:=0; m2[1,3]:=0; m2[1,4]:=0;
 m2[2,1]:=-c[3,1]/c[3,2]; m2[2,2]:=1/c[3,2]; m2[2,3]:=-c[3,3]/c[3,2]; m2[2,4]:=-c[3,4]/c[3,2];
 m2[3,1]:=0; m2[3,2]:=0; m2[3,3]:=1; m2[3,4]:=0;
 m2[4,1]:=0; m2[4,2]:=0; m2[4,3]:=0; m2[4,4]:=1;

 for i:=1 to m do
 for j:=1 to n do
 begin
 h[i,j]:=0;
 for k:=1 to n do
 h[i,j]:=h[i,j]+c[i,k]*m2[k,j];
 end;

 for i:=1 to m do
 for j:=1 to n do
 begin
 if i=j then mm2[i,j]:=1;
 if i<>j then mm2[i,j]:=0;
 end;
 for j:=1 to n do
 mm2[2,j]:=c[3,j];

 for i:=1 to m do
 for j:=1 to n do
 begin
 d[i,j]:=0;
 for k:=1 to n do
 d[i,j]:=d[i,j]+mm2[i,k]*h[k,j];
 end;

 m1[1,1]:=1/d[2,1]; m1[1,2]:=-d[2,2]/d[2,1]; m1[1,3]:=-d[2,3]/d[2,1]; m1[1,4]:=-d[2,4]/d[2,1];
 m1[2,1]:=0; m1[2,2]:=1; m1[2,3]:=0; m1[2,4]:=0;
 m1[3,1]:=0; m1[3,2]:=0; m1[3,3]:=1; m1[3,4]:=0;
 m1[4,1]:=0; m1[4,2]:=0; m1[4,3]:=0; m1[4,4]:=1;

 for i:=1 to m do
 for j:=1 to n do
 begin
 g[i,j]:=0;
 for k:=1 to n do
 g[i,j]:=g[i,j]+d[i,k]*m1[k,j];
 end;

 for i:=1 to m do
 for j:=1 to n do
 begin
 if i=j then mm1[i,j]:=1;
 if i<>j then mm1[i,j]:=0;
 end;
 for j:=1 to n do
 mm1[1,j]:=d[2,j];

 for i:=1 to m do
 for j:=1 to n do
 begin
 p[i,j]:=0;
 for k:=1 to n do
 p[i,j]:=p[i,j]+mm1[i,k]*g[k,j];
 end;

 writeln('Ìàòðèöà Â= ');
for i:=1 to m do {vivod obratnogo xoda}
 begin
 writeln;
 for j:=1 to n do
 write(b[i,j]:9:8
 ,' ');
 end;
 writeln;

 writeln('Ìàòðèöà C= ');
for i:=1 to m do {vivod obratnogo xoda
begin
 writeln;
 for j:=1 to n do
 write(c[i,j]:9:8
 ,' ');
 end;
 writeln;

 writeln('Ìàòðèöà D= ');
for i:=1 to m do {vivod obratnogo xoda}
 begin
 writeln;
 for j:=1 to n do
 write(d[i,j]:9:8
 ,' ');
 end;
 writeln;

 writeln('Ìàòðèöà H= ');
for i:=1 to m do {vivod obratnogo xoda}
 begin
 writeln;
 for j:=1 to n do
 write(h[i,j]:9:8
 ,' ');
 end;
 writeln;

 writeln('Ìàòðèöà G= ');
for i:=1 to m do {vivod obratnogo xoda}
 begin
 writeln;
 for j:=1 to n do
 write(g[i,j]:9:8
 ,' ');
 end;
 writeln;

 writeln('Ìàòðèöà m3= ');
for i:=1 to m do {vivod obratnogo xoda}
 begin
 writeln;
 for j:=1 to n do
 write(m3[i,j]:9:8
 ,' ');
 end;
 writeln;

 writeln('Ìàòðèöà m2= ');
for i:=1 to m do {vivod obratnogo xoda}
 begin
 writeln;
 for j:=1 to n do
 write(m2[i,j]:9:8
 ,' ');
 end;
 writeln;

 writeln('Ìàòðèöà m1= ');
for i:=1 to m do {vivod obratnogo xoda}
 begin
 writeln;
 for j:=1 to n do
 write(m1[i,j]:9:8
 ,' ');
 end;
 writeln;

 {íàõîäèì ìàòðèöó Ì3*ì2*ì1}

 for i:=1 to m do
 for j:=1 to n do
 begin
 q[i,j]:=0;
 for k:=1 to n do
 q[i,j]:=q[i,j]+m3[i,k]*m2[k,j];
 end;
 writeln('Ìàòðèöà q= ');
for i:=1 to m do {vivod obratnogo xoda}
 begin
 writeln;
 for j:=1 to n do
 write(q[i,j]:9:8
 ,' ');
 end;
 writeln;

 for i:=1 to m do
 for j:=1 to n do
 begin
 w[i,j]:=0;
 for k:=1 to n do
 w[i,j]:=w[i,j]+q[i,k]*m1[k,j];
 end;
 writeln('Ìàòðèöà w= ');
for i:=1 to m do {vivod obratnogo xoda}
 begin
 writeln;
 for j:=1 to n do
 write(w[i,j]:9:8
 ,' ');
 end;
 writeln;
ddlovato вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
собственные значения по методу Данилевского ddlovato Паскаль, Turbo Pascal, PascalABC.NET 0 24.04.2012 17:31
Метод Данилевского joks Паскаль, Turbo Pascal, PascalABC.NET 0 21.05.2011 13:30
Собственные векторы и собственные значения в EXCEL Boro85 Microsoft Office Excel 1 11.02.2010 20:58
собственные функции ShadowCat Помощь студентам 4 23.10.2009 08:55
собственные типы ha4apyri Помощь студентам 3 13.10.2009 20:31