Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по численным методам.doc
Скачиваний:
122
Добавлен:
02.05.2014
Размер:
4.81 Mб
Скачать

Метод Леверрье

Входные параметры: n—целое положительное число, равное порядку n системы;

Выходные параметры: b—массив изnдействительных чисел, при выходе из программы содержит решение системы.

Пример. Вычислить собственные значения и собственные вектора матрицы

|2 2 –2|

|2 5 –4|

|-2 –4 5|

Текст программы:

PROCEDURE Liver (Var VeS:Tvector;Nn:Integer);;

Label 35,270,220,100,80,190,500,250,350,120,10;

Var

I,J,K,T:Integer; Y,Yy:tvector; {A,Aa:Mas;} S,C,Q,P,H,D,U,M,V,F,W,Yyy,Z,L,R,X,Aaa,B:Real;

Sq,Sq1: Real; F1: TEXT;

Begin

Assign(F1,'last.out');

Rewrite(F1);

For I:=Nn Downto 1 Do Y[i+1]:=VeS[i];

Y[1]:=1;

K:=1;

35: T:=1;

C:=Y[2]/Y[1];

If (Nn=1) Then Begin

P:=-C; Q:=0; Goto 270;

End;

If (Nn=2) Then Begin

H:=C*C/4-Y[3]/Y[1];

Goto 220;

End;

M:=10;C:=4;D:=8;U:=4;

V:=8;F:=1;W:=2;T:=0;

80: If(M<>10) Then Goto 100;

P:=C;M:=0;Q:=D;C:=U;D:=V;

U:=P;V:=Q;Yyy:=C;Z:=D;F:=-F;

100:M:=M+1;H:=0;Q:=Y[1];P:=Y[2]-C*Q;L:=Q;

120:For J:=3 To Nn Do Begin

R:=P;P:=Y[j]-C*R-D*Q;Q:=R;

R:=L;L:=Q-C*R-H*D;H:=R;

End;

Q:=Y[Nn+1]-D*Q;

S:=L+C*R;

If (T=0) Then Begin

X:=D*R;H:=R*X+S*L;

If H=0 Then Goto 80;

End;

C:=C+(P*S-Q*R)/H;

D:=D+(P*X+Q*L)/H;

If ((C-Yyy+D-Z)<>0) Then Goto 190;

If (F=-W) Then Begin writeln('Љ®аҐ­м ­Ґ ­ ©¤Ґ­');

Goto 500;

End;

W:=-F;

190:H:=C*C/4-D;

Sq:=Sqrt((Q-P*C/2)*(Q-P*C/2)+P*P*Abs(H));

If (Sq>0.0000001) Then Goto 80;

T:=0;

Y[2]:=Y[2]-C*Y[1];

For J:=3 To Nn-1 Do Begin

Y[j]:=Y[j]-C*Y[j-1]-D*Y[j-2];End;

220:P:=-C/2;

Q:=Sqrt(Abs(H));

If(h>=0) Then Begin

M:=P+Q;P:=P-Q;Q:=0;

Goto 250; End;

M:=P;

250:write(F1,'p',k,'=',m:9:4,' + i',q:7:4);K:=K+1;{Ves[k-1]:=M;}WriteLn(F1,'');

270:write(F1,'p',k,'=',p:9:4,' + i',-q:7:4);K:=K+1;{Ves[k-1]:=P;}WriteLn(F1,'');

If(t<>0) Then Goto 350;

Nn:=Nn-2;

Aaa:=0;

Sq1:=Sqrt((S-R*C/2)*(S-R*C/2)+R*R*Abs(H));

If (Sq1<=0.0000001) Then Aaa:=1;

B:=0;

If (Nn>=2) Then B:=1;

If((Aaa+B)=2) Then Begin

T:=1;

Goto 120; End; Goto 35;350:500:

Close(F1);

End;

Вычисления по программе привели к следующим результатам:

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

.10000Е+01 -.94281Е+00 .23570Е+00 -.23570Е+00

.10000Е+02 -.33333Е+00 -.66667Е+00 .66667Е+00

.10000Е+01 .00000Е+00 -.70711Е+00 -.70711Е+00

Варианты заданий для нахождения собственных значений и собственных векторов матрицы приведены в таблице 5.

Метод Фадеева

Входные параметры: n—целое положительное число, равное порядку n системы; а — массив изnхnдействительных чисел, содержащий входную матрицу.

Выходные параметры: q—массив изnдействительных чисел при выходе из программы содержит решение системы.

Схема алгоритма приведена на рисунке 23.

Пример. Вычислить собственные значения и собственные вектора матрицы

|2 2 –2|

|2 5 –4|

|-2 –4 5|

Текст программы:

procedureFadeev(n:integer;a:tmatr;varq:tvector);

var Aa,E,B:tmatr;

i,j:integer;

begin

for i:=1 to n do

for j:=1 to n do if i<>j then e[i,j]:=0 else e[i,j]:=1;

Aa:=a;

q[1]:=spA(n,Aa);

MulChislo(n,q[1],e,b);

MatrVich(n,Aa,b,b);

for i:=2 to n do

begin

MulMatr(n,a,b,Aa);

q[i]:=-spA(n,Aa)/i;

MulChislo(n,q[i],e,b);

MatrVich(n,Aa,b,b);

end;

end;

Вычисления по программе привели к следующим результатам:

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

.10000Е+01 -.94281Е+00 .23570Е+00 -.23570Е+00

.10000Е+02 -.33333Е+00 -.66667Е+00 .66667Е+00

.10000Е+01 .00000Е+00 -.70711Е+00 -.70711Е+00

Рисунок 23 - Схема алгоритма метода Фадеева

Варианты заданий для нахождения собственных значений и собственных векторов матрицы приведены в таблице 5.