2 g, Informatyka, Informatyka, Informatyka. Metody numeryczne, Kosma Z - Metody i algorytmy numeryczne [2009], Kosma Z - Metody i algorytmy numeryczne [2009]


Zadana liczba iteracji - iter = 50

Zadana dokładność obliczeń - eps = 1.0000E-0006

Układ sprowadzono do postaci normalnej.

Macierz współczynników:

wiersz nr 1

2.0000000E+0000 1.0000000E+0000 -1.0000000E+0000

wiersz nr 2

1.0000000E+0000 3.0000000E+0000 -1.0000000E+0000

wiersz nr 3

1.0000000E+0000 -1.0000000E+0000 2.0000000E+0000

Wektor prawych stron:

1.0000000E+0000 4.0000000E+0000 5.0000000E+0000

Liczba wykonanych iteracji: 21

Rozwiązanie układu równań:

9.9999993E-0001 2.0000002E+0000 3.0000002E+0000

2.7. Ekstremalne wartości własne

Działanie macierzy kwadratowej 0x01 graphic
na wektor X

(2.131)

możemy traktować jako operację liniową przejawiającą się w zmianie długości i kierunku wektora X. Jeśli przekształcenie to transformuje wektor X na siebie samego (tak, żeby wektor był równoległy do wektora X )

0x01 graphic
(2.132)

to liczbę nazywamy wartością własną macierzy A , a wektor X - wektorem własnym. Działanie macierzy A na wektor własny X możemy więc zastąpić pomnożeniem tego wektora przez liczbę, co umożliwia jakościowe uproszczenie rozwiązywania wielu zagadnień matematycznych i fizycznych.

Wartości własne macierzy A są pierwiastkami wielomianu charakterystycznego (2.13) tej macierzy

(2.133)

W obliczeniach numerycznych rzadko jednak wyznaczamy pierwiastki tego wielomianu, gdyż często zadanie to jest źle uwarunkowane - podczas gdy dobrze jest uwarunkowane zadanie pierwotne, ze względu na macierz A.

Dlatego też na ogół macierz A przekształcamy bez rozwijania jej wyznacznika charakterystycznego - do bardziej dogodnych postaci, umożliwiających obliczanie wartości własnych na podstawie różnych twierdzeń algebry liniowej [1 - 3, 6, 9].

Przy rozwiązywaniu wielu zadań wystarczająca jest znajomość wartości własnych: maksymalnej i minimalnej co do modułu np. alternatywna definicja wskaźnika uwarunkowania macierzy A (2.43): [6, 7], a najczęściej tylko maksymalnej np. (2.14) lub (2.130). Ograniczymy się więc do przedstawienia kilku prostych algorytmów obliczania ekstremalnych co do modułu wartości własnych macierzy o elementach rzeczywistych, omawianych m.in. w pracach [2, 8].

Mnożąc lewostronnie zależność dla k-tej wartości własnej i k-tego wektora własnego

(2.134)

przez macierz A otrzymamy

i po m-krotnym powtórzeniu tej operacji mamy

(2.135)

Podobnie mnożąc lewostronnie (2.134) przez dostajemy

i w ogólnym przypadku słuszna jest zależność

(2.136)

Po wykorzystaniu zależności (2.135) i (2.136) z twierdzenia, że suma wartości własnych macierzy A jest równa jej śladowi

(2.137)

wynika wniosek, że

(2.138)

dla dowolnej, całkowitej liczby m.

W przypadku, gdy maksymalna co do modułu wartość własna jest pierwiastkiem rzeczywistym i pojedynczym równania charakterystycznego (2.133)

(2.139)

na mocy (2.138) uzyskujemy związek

(2.140)

z którego, gdy m rośnie nieograniczenie mamy

0x01 graphic
(2.141)

Również w przypadku, gdy maksymalna co do modułu wartość własna jest rzeczywistym pierwiastkiem q-krotnym równania charakterystycznego (2.133)

(2.142)

jej wartość wyraża się wzorem (2.140), gdyż we wzorze (2.140) zarówno w liczniku, jak i w mianowniku będzie występowała jednakowa liczba jedynek

Po obliczeniu ze wzoru (2.141) nie wiadomo zatem, czy jest to pierwiastek pojedynczy czy też pierwiastek wielokrotny. Krotność pierwiastka rzeczywistego
o maksymalnej co do modułu wartości własnej możemy jednak łatwo obliczyć z zależności (2.138)

(2.143)

dla dostatecznie dużych m.

Wprowadzając we wzorze (2.138) wykładnik całkowity ujemny możemy w ana-logiczny sposób wyznaczyć minimalną co do modułu wartość własną macierzy A.

0x01 graphic
(2.144)

oraz jej krotność

(2.145)

odwracając uprzednio macierz A.

Maksymalną co do modułu wartość własną będącą pojedynczym pierwiastkiem zespolonym równania charakterystycznego (2.133)

(2.146)

można również obliczyć opierając się na własności (2.138).

Zapisując i w postaci wykładniczej

otrzymujemy

0x01 graphic

i następnie uzyskujemy zależność

0x01 graphic

z której dla dostatecznie dużych m mamy

(2.147)

Podstawiając uzyskane wyrażenie (2.147) do zależności

0x01 graphic

ostatecznie otrzymujemy

0x01 graphic
(2.148)

Do sprawdzenia prawidłowości wyznaczonych ekstremalnych wartości własnych i lokalizacji następnych pierwiastków równania charakterystycznego (2.133) można - oprócz (2.137) - wykorzystywać inne twierdzenia o wartościach własnych:

1. Jeżeli macierz A jest macierzą symetryczną o elementach rzeczywistych, to jej wartości własne i wektory własne są rzeczywiste.

2. Twierdzenie Perrona. Jeśli macierz A jest macierzą o elementach rzeczywistych dodatnich, to jej największa co do modułu wartość własna jest dodatnia i jest pojedynczym pierwiastkiem równania charakterystycznego, a odpowiadający jej wektor własny ma składowe dodatnie.

3. Twierdzenie Gerszgorina. Wszystkie wartości własne macierzy A leżą w obszarze, będącym sumą teoriomnogościową kół 0x01 graphic
o środkach oraz promieniach

0x01 graphic

Twierdzenie Gerszgorina, dla macierzy 4 stopnia o elementach rzeczywistych ilustruje rysunek 2.3.

Znając wartość własną i odpowiadający jej wektor własny (obliczony np. przy przyjęciu dodatkowego warunku dotyczącego długości tego wektora) można również wyznaczyć drugą wartość własną i następne wartości własne metodą redukcji, korzystając z możliwości rozkładu dowolnego wektora względem różnych między sobą wektorów własnych [2, 13].

Rys. 2.3

Znajomość wektorów własnych jest szczególnie istotna dla macierzy A symetrycznych o elementach rzeczywistych, gdyż np. dla macierzy kwadratowej, której kolumny są wektorami własnymi

można udowodnić zależność [6, 7]

oraz wykazać ortogonalność (2.30) macierzy S.

Obliczanie ekstremalnych co do modułu wartości własnych za pomocą wzorów (2.141), (2.143) ÷ (2.145) oraz (2.148) odbywa się w programie 2.4; tabulogram modułu Obliczenia tego programu jest następujący:

{Program 2.4}

unit Obliczenia;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls,

Forms, Dialogs, StdCtrls, Buttons;

const nmax = 20;

type

Tabl1 = array [1..nmax,1..nmax] of Real;

Tabl2 = array [1..nmax,1..2*nmax] of Real;

. . . . . . . . . . . . . . . . . . . . . .

var

Form3: TForm3;

bl,det,lam,lam1,eps,r,r1,s,Spm,Spm1: Real;

i,j,k,n,m,q,war: Integer;

A,Am,Am1: Tabl1;

nazwa: String;

rep: Boolean;

plik: Text;

B: Tabl2;

implementation

uses Ustawienia, Informacje, Grafika, Podglad;

label kon,omin,powt;

{$R *.DFM}

{procedure ElimGaussa(n,m: Integer; var A: Tabl2; var det: Real);}

procedure TForm3.FormCreate(Sender: TObject);

begin

nazwa:='Dane1.dan';

Dane.Lines.Text:='';

end;

procedure TForm3.BitBtn1Click(Sender: TObject);

label omin,kon,powt;

begin

Form2.Show;

AssignFile(plik,nazwa);

Reset(plik);

Readln(plik,n,eps);

for i:=1 to n do

for j:=1 to n do

Read(plik,A[i,j]);

CloseFile(plik);

if RadioButton1.Checked then war:=1;

if RadioButton2.Checked then war:=2;

if RadioButton3.Checked then war:=3;

AssignFile(plik,Edit1.Text);

Rewrite(plik);

Writeln(plik,'PROGRAM 2.4.');

if war=1 then begin

Writeln(plik,'Obliczanie wartości własnej o module max');

Writeln(plik,'i jej krotności.');

end;

if war=2 then begin

Writeln(plik,'Obliczanie ekstremalnych wartości własnych');

Writeln(plik,'i ich krotności.');

end;

if war=3 then begin

Writeln(plik,'Obliczanie maksymalnego modułu zespolonej');

Writeln(plik,'wartości własnej.');

end;

Writeln(plik);

Writeln(plik,'Stopień macierzy - n = ',n:2);

Writeln(plik,'Dokładność obliczeń - eps = ',eps:11);

Writeln(plik);

Writeln(plik,'Macierz współczynników:');

for i:=1 to n do begin

Writeln(plik,' wiersz nr ',i:2);

k:=0; Write(plik,' ');

for j:=1 to n do begin

k:=k+1;

if k=5 then begin

k:=0; Writeln(plik);

Write(plik,' ');

end;

Write(plik,' ',A[i,j]:13);

end;

Writeln(plik);

end;

Writeln(plik);

rep:=False;

powt:

m:=2; Spm:=0;

for i:=1 to n do

Spm:=Spm+A[i,i];

for i:=1 to n do

for j:=1 to n do begin

s:=0;

for k:=1 to n do

s:=s+A[i,k]*A[k,j];

Am[i,j]:=s;

end;

Spm1:=0;

for i:=1 to n do

Spm1:=Spm1+Am[i,i];

if not rep then lam:=Spm1/Spm

else lam:=Spm/Spm1;

if war=3 then begin

r:=Exp(0.5/m*Ln(0.5*Abs(Spm*Spm-Spm1)));

goto omin;

end;

Spm:=Spm1;

repeat

for i:=1 to n do

for j:=1 to n do begin

s:=0;

for k:=1 to n do

s:=s+A[i,k]*Am[k,j];

Am1[i,j]:=s;

end;

Spm1:=0;

for i:=1 to n do

Spm1:=Spm1+Am1[i,i];

if not rep then lam1:=Spm1/Spm

else lam1:=Spm/Spm1;

bl:=Abs(lam1-lam);

for i:=1 to n do

for j:=1 to n do

Am[i,j]:=Am1[i,j];

Spm:=Spm1; lam:=lam1;

m:=m+1;

until bl<eps;

s:=1;

for i:=1 to m do

if not rep then s:=s*lam

else s:=s*(1/lam);

q:=Round(Spm/s);

if not rep then begin

Write(plik,'Wartość własna o module max: ');

Writeln(plik,lam:16);

Write(plik,'Krotność max wartości własnej - q: ');

Writeln(plik,q:2);

Write(plik,'Liczba potęgowań macierzy zadanej - m: ');

Writeln(plik,m:2);

Writeln(plik);

end else begin

Write(plik,'Wartość własna o module min: ');

Writeln(plik,lam:16);

Write(plik,'Krotność min wartości własnej - q: ');

Writeln(plik,q:2);

Write(plik,'Liczba potęgowań macierzy odwrotnej - m: ');

Writeln(plik,m:2);

Writeln(plik);

end;

if (war=1) or rep then goto kon;

for i:=1 to n do

for j:=1 to n do begin

B[i,j]:=A[i,j];

if i=j then B[i,n+j]:=1

else B[i,n+j]:=0;

end;

ElimGaussa(n,n,B,det);

Writeln(plik,'Macierz odwrotna:');

for i:=1 to n do begin

Writeln(plik,' wiersz nr ',i:2);

k:=0; Write(plik,' ');

for j:=1 to n do begin

k:=k+1;

if k=5 then begin

k:=0; Writeln(plik);

Write(plik,' ');

end;

Write(plik,' ',B[i,n+j]:13);

end;

Writeln(plik);

end;

Writeln(plik);

for i:=1 to n do

for j:=1 to n do

A[i,j]:=B[i,n+j];

if not rep then begin

rep:=True;

goto powt;

end;

omin:

m:=3;

repeat

for i:=1 to n do

for j:=1 to n do begin

s:=0;

for k:=1 to n do

s:=s+A[i,k]*Am[k,j];

B[i,j]:=s;

end;

Spm:=0;

for i:=1 to n do

Spm:=Spm+B[i,i];

for i:=1 to n do

for j:=1 to n do begin

s:=0;

for k:=1 to n do

s:=s+B[i,k]*B[k,j];

Am1[i,j]:=s;

end;

Spm1:=0;

for i:=1 to n do

Spm1:=Spm1+Am1[i,i];

r1:=Exp(0.5/m*Ln(0.5*Abs(Spm*Spm-Spm1)));

bl:=Abs(r1-r);

for i:=1 to n do

for j:=1 to n do

Am[i,j]:=B[i,j];

m:=m+1; r:=r1;

until bl<eps;

Write(plik,'Max moduł zespolonej wartości własnej: ');

Writeln(plik,r:16);

Write(plik,'Liczba potęgowań macierzy zadanej - m: ');

Writeln(plik,m:2);

Writeln(plik);

kon:

CloseFile(plik);

Form2.Wyniki.Lines.LoadFromFile(Edit1.Text);

end;

. . . . . . . . . . . . . . . . . . . . . .

end.

0x01 graphic

Rys. 2.4

Wczytywane przez program 2.4 dane z pliku o nazwie pr_2_4.dan zawierają: stopień macierzy n, dokładność obliczania granicy ciągów (2.141), (2.144) lub (2.148) oraz zapisane wierszami współczynniki macierzy A. Wybór alternatywy obliczeń jest dokonywany na formularzu Dane (rys. 2.4) poprzez zaznaczenie odpowiednigo pola obok zamieszczonego opisu jednego z trzech rozważanych przypadków wyznaczania ekstremalnych wartości własnych.

Za pomocą programu 2.4 obliczono ekstremalne wartości własne następujących macierzy:

Przykład 1

.

Wielomian charakterystyczny

0x01 graphic

Wartości własne:

PROGRAM 2.4.

Obliczanie ekstremalnych wartości własnych

i ich krotności.

Stopień macierzy - n = 3

Dokładność obliczeń - eps = 1.00E-0006

Macierz współczynników:

wiersz nr 1

2.0000E+0000 -2.0000E+0000 3.0000E+0000

wiersz nr 2

1.0000E+0000 1.0000E+0000 1.0000E+0000

wiersz nr 3

1.0000E+0000 3.0000E+0000 -1.0000E+0000

Wartość własna o module max: 3.0000003E+0000

Krotność max wartości własnej - q: 1

Liczba potęgowań macierzy zadanej - m: 42

Macierz odwrotna:

wiersz nr 1

6.6667E-0001 -1.1667E+0000 8.3333E-0001

wiersz nr 2

-3.3333E-0001 8.3333E-0001 -1.6667E-0001

wiersz nr 3

-3.3333E-0001 1.3333E+0000 -6.6667E-0001

Wartość własna o module min: 9.9999982E-0001

Krotność min wartości własnej - q: 1

Liczba potęgowań macierzy odwrotnej - m: 24

Przykład 2

.

Wielomian charakterystyczny

Wartości własne:

0x01 graphic

PROGRAM 2.4.

Obliczanie ekstremalnych wartości własnych

i ich krotności.

Stopień macierzy - n = 4

Dokładność obliczeń - eps = 1.00E-0010

Macierz współczynników:

wiersz nr 1

1.0000E+0000 2.0000E+0000 3.0000E+0000 4.0000E+0000

wiersz nr 2

2.0000E+0000 1.0000E+0000 2.0000E+0000 3.0000E+0000

wiersz nr 3

3.0000E+0000 2.0000E+0000 1.0000E+0000 2.0000E+0000

wiersz nr 4

4.0000E+0000 3.0000E+0000 2.0000E+0000 1.0000E+0000

Wartość własna o module max: 9.0990195E+0000

Krotność max wartości własnej - q: 1

Liczba potęgowań macierzy zadanej - m: 29

Macierz odwrotna:

wiersz nr 1

-4.0000E-0001 5.0000E-0001 0.0000E+0000 1.0000E-0001

wiersz nr 2

5.0000E-0001 -1.0000E+0000 5.0000E-0001 3.6380E-0013

wiersz nr 3

0.0000E+0000 5.0000E-0001 -1.0000E+0000 5.0000E-0001

wiersz nr 4

1.0000E-0001 -2.8422E-0014 5.0000E-0001 -4.0000E-0001

Wartość własna o module min: -5.8578644E-0001

Krotność min wartości własnej - q: 1

Liczba potęgowań macierzy odwrotnej - m: 36

Przykład 3

.

Wielomian charakterystyczny

0x01 graphic

Wartości własne:

0x01 graphic

0x01 graphic

PROGRAM 2.4.

Obliczanie ekstremalnych wartości własnych

i ich krotności.

Stopień macierzy - n = 4

Dokładność obliczeń - eps = 1.00E-0003

Macierz współczynników:

wiersz nr 1

1.0000E+0000 3.0000E+0000 0.0000E+0000 0.0000E+0000

wiersz nr 2

2.0000E+0000 5.0000E+0000 0.0000E+0000 0.0000E+0000

wiersz nr 3

0.0000E+0000 0.0000E+0000 2.0000E+0000 -3.0000E+0000

wiersz nr 4

0.0000E+0000 0.0000E+0000 -6.0000E+0000 2.0000E+0000

Wartość własna o module max: 6.2048977E+0000

Krotność max wartości własnej - q: 2

Liczba potęgowań macierzy zadanej - m: 11

Macierz odwrotna:

wiersz nr 1

-5.0000E+0000 3.0000E+0000 0.0000E+0000 0.0000E+0000

wiersz nr 2

2.0000E+0000 -1.0000E+0000 0.0000E+0000 0.0000E+0000

wiersz nr 3

0.0000E+0000 0.0000E+0000 -1.4286E-0001 -2.1429E-0001

wiersz nr 4

0.0000E+0000 0.0000E+0000 -4.2857E-0001 -1.4286E-0001

Wartość własna o module min: -1.6232873E-0001

Krotność min wartości własnej - q: 1

Liczba potęgowań macierzy odwrotnej - m: 4

W tym przykładzie wartości własne i są bliskie sobie, co spowodowało wyznaczenie jednej podwójnej wartości własnej o maksymalnym module - równej 0x01 graphic
O tym, że nie jest to wartość własna zadanej macierzy A możemy zorientować się z przebiegu obliczeń i bardzo wolnej zbieżności ciągu (2.141).

Przykład 4

0x01 graphic

.

Wielomian charakterystyczny

0x01 graphic

Wartości własne:

0x01 graphic

PROGRAM 2.4.

Obliczanie ekstremalnych wartości własnych

i ich krotności.

Stopień macierzy - n = 4

Dokładność obliczeń - eps = 1.00E-0006

Macierz współczynników:

wiersz nr 1

1.0000E+0000 3.0000E+0000 0.0000E+0000 0.0000E+0000

wiersz nr 2

2.0000E+0000 5.0000E+0000 0.0000E+0000 0.0000E+0000

wiersz nr 3

0.0000E+0000 0.0000E+0000 1.0000E+0000 -2.0000E+0000

wiersz nr 4

0.0000E+0000 0.0000E+0000 3.0000E+0000 1.0000E+0000

Wartość własna o module max: 6.1622789E+0000

Krotność max wartości własnej - q: 1

Liczba potęgowań macierzy zadanej - m: 20

Macierz odwrotna:

wiersz nr 1

-5.0000E+0000 3.0000E+0000 0.0000E+0000 0.0000E+0000

wiersz nr 2

2.0000E+0000 -1.0000E+0000 0.0000E+0000 0.0000E+0000

wiersz nr 3

0.0000E+0000 0.0000E+0000 1.4286E-0001 2.8571E-0001

wiersz nr 4

0.0000E+0000 0.0000E+0000 -4.2857E-0001 1.4286E-0001

Wartość własna o module min: -1.6227738E-0001

Krotność min wartości własnej - q: 1

Liczba potęgowań macierzy odwrotnej - m: 6

Przykład 5

Wielomian charakterystyczny

0x01 graphic

Wartości własne:

0x01 graphic

PROGRAM 2.4.

Obliczanie maksymalnego modułu zespolonej

wartości własnej.

Stopień macierzy - n = 4

Dokładność obliczeń - eps = 1.00E-0004

Macierz współczynników:

wiersz nr 1

1.0000E+0000 -2.0000E+0000 0.0000E+0000 0.0000E+0000

wiersz nr 2

3.0000E+0000 1.0000E+0000 0.0000E+0000 0.0000E+0000

wiersz nr 3

0.0000E+0000 0.0000E+0000 2.0000E+0000 -2.0000E+0000

wiersz nr 4

0.0000E+0000 0.0000E+0000 5.0000E+0000 2.0000E+0000

Max moduł zespolonej wartości własnej: 3.7411953E+0000

Liczba potęgowań macierzy zadanej - m: 20

Przykład 6

.

Wielomian charakterystyczny

0x01 graphic

Wartości własne:

0x01 graphic

PROGRAM 2.4.

Obliczanie maksymalnego modułu zespolonej

wartości własnej.

Stopień macierzy - n = 4

Dokładność obliczeń - eps = 1.00E-0004

Macierz współczynników:

wiersz nr 1

1.0000E+0000 0.0000E+0000 0.0000E+0000 0.0000E+0000

wiersz nr 2

0.0000E+0000 1.0000E+0000 0.0000E+0000 0.0000E+0000

wiersz nr 3

0.0000E+0000 0.0000E+0000 2.0000E+0000 -2.0000E+0000

wiersz nr 4

0.0000E+0000 0.0000E+0000 5.0000E+0000 2.0000E+0000

Max moduł zespolonej wartości własnej: 3.7416525E+0000

Liczba potęgowań macierzy zadanej - m: 9

Przykład 7

.

Wielomian charakterystyczny

0x01 graphic

Wartości własne:

0x01 graphic

PROGRAM 2.4.

Obliczanie ekstremalnych wartości własnych

i ich krotności.

Stopień macierzy - n = 4

Dokładność obliczeń - eps = 1.00E-0004

Macierz współczynników:

wiersz nr 1

5.0000E+0000 0.0000E+0000 0.0000E+0000 0.0000E+0000

wiersz nr 2

0.0000E+0000 5.0000E+0000 0.0000E+0000 0.0000E+0000

wiersz nr 3

0.0000E+0000 0.0000E+0000 1.0000E+0000 -3.0000E+0000

wiersz nr 4

0.0000E+0000 0.0000E+0000 2.0000E+0000 -5.0000E+0000

Wartość własna o module max: 4.9999638E+0000

Krotność max wartości własnej - q: 2

Liczba potęgowań macierzy zadanej - m: 41

Macierz odwrotna:

wiersz nr 1

2.0000E-0001 0.0000E+0000 0.0000E+0000 0.0000E+0000

wiersz nr 2

0.0000E+0000 2.0000E-0001 0.0000E+0000 0.0000E+0000

wiersz nr 3

0.0000E+0000 0.0000E+0000 -5.0000E+0000 3.0000E+0000

wiersz nr 4

0.0000E+0000 0.0000E+0000 -2.0000E+0000 1.0000E+0000

Wartość własna o module min: -2.6796046E-0001

Krotność min wartości własnej - q: 1

Liczba potęgowań macierzy odwrotnej - m: 5

Przykład 8

.

Wielomian charakterystyczny

0x01 graphic

Wartości własne:

0x01 graphic

PROGRAM 2.4.

Obliczanie ekstremalnych wartości własnych

i ich krotności.

Stopień macierzy - n = 4

Dokładność obliczeń - eps = 1.00E-0006

Macierz współczynników:

wiersz nr 1

1.0000E+0000 3.0000E+0000 0.0000E+0000 0.0000E+0000

wiersz nr 2

2.0000E+0000 5.0000E+0000 0.0000E+0000 0.0000E+0000

wiersz nr 3

0.0000E+0000 0.0000E+0000 1.0000E+0000 3.0000E+0000

wiersz nr 4

0.0000E+0000 0.0000E+0000 2.0000E+0000 5.0000E+0000

112 2. Układy równań liniowych

2.7. Ekstremalne wartości własne 119



Wyszukiwarka