Sunteți pe pagina 1din 7

Algoritmi Mathcad de calcul a valorilor proprii

Coordonator stiintific : S.l. Dr. Ing. Mat. Dan Doru MICU


Autori: Adrian-Cornel Pop, Anca Mutu
Abstract: Numerical algorithms for eigenvalues determination are discussed. Results of implementation and testing are showed.
Introducere
Prezenta lucrare isi propune sa evidentieze aplicarea unor algoritmi de calcul si teoria aferenta in
determinarea valorilor proprii cu metode numerice. Se prezinta succint definirea valorilor proprii, problema
numerica la care se ajunge si cateva variante numerice de solutionare a ei. Aspectele algoritmice se
trateaza in utilitarul de calcul Mathcad pe mai multe exemple verificabile.
Pentru o matrice patrata, notata cu A, de dimensiuni nn, se numeste valoare proprie o marime
scalara care satisface relatia x x A = ,vectorul x fiind vectorul propriu corespunzator valorii proprii .
Principalele aplicatii in care intervin valorile proprii sunt:
1. Calculul conditionarii sistemelor de ecuatii
- In proiectarea dispozitivelor electrice prin sinteza de camp electromagnetic apar frecvent sisteme
de ecuatii liniare degenerate(variatii mici ale membrului drept al sistemului conduc la variatii mari
ale solutiei).
- Conditionarea sistemelor apare ca o masura a gradului de degenerare al sistemului.
- Se doreste:
a) Determinarea relatiei dintre cauza(perturbatia emisa de o sursa) si efect (raspunsul
dispozitivului agresat)
b) Determinarea raspunsului dispozitivului in conditii normale de functionare (absenta
perturbatiilor ) precum si in cazul in care dispozitivul este perturbat din exterior.
2. Rezolvari numerice ale sistemelor de ecuatii, prin descompunerea dupa valorile proprii:

Sistemul de ecuatii liniare Ax=x se poate scrie (A-I)x=0. Deci este omogen si admite o
solutie nenula daca si numai daca determinantul sistemului este nul.

P() det(A-I)=0
Polinomul de gradul n P() se numeste polinomul caracteristic al matricei A iar ecuatia det(A-I)=0 se
numeste ecuatie caracteristica. Conform teoremei fundamentale a algebrei exista n valori proprii care
sunt tocmai radacinile polinomului caracteristic.Problema se reduce la a aplica acele metode numerice
care sa determine zerourile acestui polinom.
Exista mai multe metode de calcul a valorilor proprii, fiecare cu avantajele si dezavantajele sale.
Dintre acestea amintim: metoda Kralov, metoda Leverrier, metoda puterii drecte, metoda puterii inverse,
metoda Danilevsky, metode bazate pe factorizarea matricilor(QR si LR).
In aceasta lucrare am analizat si exemplificat primele 4 metode.

2
X
i
if i 0 1 . 0 . ( ) :=
X
i 1 +
( ,
A X
i
( ,
:=
M
i j .
X
j
( ,
( )
i
:=
B X
N
( ,
:=
polyroots P ( ) :=
I.Metoda Kralov.
Se considera polinomul caracteristic A fiind de forma 1 ; ) (
0
= =

=
n
n
i
i
i
p p P .Fie
0
X un
vector arbitrar si P(A)=0 =>
k
k
X X A =
0
=>

=
=
n
i
i i
X p
0
0 .Componentele vectorului
i
X
sunt de forma

=

= =
n
k
k i jk j i
n j i x a x
1
, 1 ,
.. 1 , ; .Rezulta sistemul

=
= =
1
0
.. 1 ,
n
k
ni k ki
n i x p x .Daca acest
sistem are solutie unica,atunci aceasta reprezinta coeficientii polinomului caracteristic.


Pasi in realizarea algoritmului:
1. Se ia matricea A;
2. Generam un vector arbitrar X.i cu proprietatea ca vectorul are un numar de N elemente,toate
nule, cu exceptia primului element a carui valoare este 1:



3. Utilizam relatia de recurenta:

4. Generam o noua matrice M, prin alaturarea matricilor intermediare X.i

5. Consideram o matrice intermediara B astfel incat M*P=B


6. Cu ajutorul functiei predefinite in mathcad "lsolve" vom afisa valorile vectorului polinom P dupa
care generam vectorul coeficientilor polinomului caracteristic: (acelasi cu vectoul P.i doar ca mai
contine si coeficientul lui
N
X .
7. Utilizam functia predefinita "polyroots" pentru extragerarea radacinilor ecuatiei caracteristice

obtinand astfel vectorul care reprezinta setul de valori proprii pe care il are matricea A.

II.Metoda Leverrier
Se bazeaza pe formula lui Newton pentru suma de puteri a radacinilor unei ecuatii.
Pasii in realizarea algoritmului:
1. Se introduce matricea A de la tastatura;
2. Cu ajutorul intructiunii rows(A) se calculeaza nr n pana la care va merge contorul i;

3
M
i
A
i
:=
S
i
tr A
i
( )
:=
P
n i
if i 1 S
1
.
1
i
|

\
|
|
.
S
i
1
i 1
k
S
i k
P
n k

=
+
|

\
|
|
|
.
.

:=
polyroots P ( ) :=
F
F
k
( ,
A F
k 1
( ,

break
F
k
( ,
( )
0
F
k 1
( ,
( )
0
F
k
( ,
( )
n 1
F
k 1
( ,
( )
n 1
er < if
k 1 m .. e for :=
Y
i
if i 0 ( ) 1 . 0 . [ ] :=
3. Se calculeaza puterile matricii A cu relatia de mai jos:


4. Calculam urmele matricii A si a matricilor putere
i
A



5. Ecuatia caracteristica va avea coeficintii elementele matricii P obtinuta mai jos


6. Generam vectorul coeficientilor polinomului caracteristic: (acelasi cu vectoul
i
P doar ca mai
contine si coeficientul lui
N
X .
7. Radacinile ecuatiei caracteristice se obtin cu ajutorul intructiunii polyroots din Mathcad :

Metoda Leverrier este destul de laborioasa deoarece trebuie calculate puterile matricii A dar
algoritmul este foarte simplu si usor de transpus intr-un limbaj de programare. De asemmenea sunt
evitate cazurile speciale datorita absentei operatiilor de impartire in cursul evaluarii coeficientilor
polinomului characteristic
III.Metoda Puterii Directe
Aceasta metoda este partiala,de tip iterativ fiind utilizabila pentru determinarea unei singure valori
proprii si a vectorului propriu corespunzator.Rapiditatea convergentei metodei depinde de o serie de
factori evidentiati in aplicatia prezentata.
Pasii in realizarea algoritmului:
1. Introducem matricea A;
2. Cu ajutorul intructiunii rows(A) se calculeaza nr n pana la care va merge contorul i;
3. Generam vectorul arbitrar
i
Y



4. Dupa ce am introdus conditia initiala a procesului iterativ, intr-un ciclu for scriem relatia de
baza a procesului iterativ care contine si conditia de oprire a procesului atunci cand
eroarea este mai mica decat o valoare data la inceputul programului,valoare data in functie
de precizia in zecimale pe care dorim sa o obtinem:




4
r rows F
T
( )
1 :=

F
r
( ,
( )
n 1
F
r 1
( ,
( )
n 1
:=
F
k
( ,
A q I ( )
1
F
k 1
( ,

f x ( )
F
p
( ,
( )
n 1
F
p 1
( ,
( )
n 1
x
F
p
( ,
( )
n 1
F
p 1
( ,
( )
n 1
q 1 :=
p rows F
T
( )
1 :=
Nota:Cu cat crestem valoare lui er (
5 4
10 , 10

) s.a.m.d. creste nr de iteratii.
Cu relatia notata cu () obtinem o valoare proprie

()

unde r reprezinta nr de iteratii pe care il executa programul pt. determinarea valorii proprii si l-am obtinut
cu relatia urmatoare
IV.Metoda Puterii Inverse
Aceasta metoda este utila pentru determinarea unei valori proprii a matricei A cea mai
apropiata de o valoare data q.
Pasii in realizarea algoritmului:
Etapele in rezolvarea programului au logica pe care au avut-o si la metoda puterii
directe,instructiunile sunt aproape identice cu urmatoarele specificatii:
1. Relatia de recurenta este inlocuita cu urmatoarea :



2. Valoare proprie se obtine de data aceasta folosind functia din predefinita Mathcad
root(f(x),x) unde:

iar,










5
|
|
|
.
|

\
|
=
9 8 7
6 5 4
3 2 1
: A
Pentru exemplificare luam urmatoarea matrice:
Notam cu
-
i
c - diferenta dintre valoarea proprie obtinuta cu functia predefinita EIGENVALS si
valoare proprie obinuta prin cele 4 metode,unde i:=0..n si n este ordinul matricii;
Tabelul 1




Tabelul 2





In cazul Metodei Puterii Inverse precizia o stabilim initial,aceasta mentinandu-se pt la
15
10

(in
cazul nostru),ceea ce variaza de data aceasta este numarul de iteratii,in functie de valoare pe
care o dam lui q.In tabelul de mai jos sunt prezentate:
q valoare introdusa de la tastatura
k nr de iteratii

i
- valoare proprie care trebuie obtinuta,unde i:=1..n;

Tabelul 3









1

2

3

Eigenvals 16.116843969807 -1.116843969807 0
Kralov 16.116843969807043 -1.116843969807043 6.31593542897867E-
15
Leverrier 16.116843969807043 -1.116843969807043 0
Puterii directe 16.116843969807043 - -

1
c
2
c
3
c
Kralov -4.263E-14 4.285E-14 -6.316E-15
Leverrier -4.263E-14 4.285E-14 0
Puterii Directe -4.263E-14 - -
3

q k


0

1 97
2 159
3 220
4 281
5 347
1

q k
16.116843969807 16 12
17 13
18 16
19 18
100 163
2

q k


-1.116843969807
-1 11
-2 14
-3 17
-4 20
-100 150
6
In continuare vom testa algoritmii pe 9 matrici de diferite dimensiuni,insa in proiect vom desena
doar un tabel in care vom trece ordinul matricii si ordinul erorii;


Nota:
Cazul matricii cu 4 linii si 4 coloane pa care am introdus-o este un caz mai special deoarece in
Mathcad nu i se poate calcula valoare proprie maxima cu Metoda Puterii Directe deoarece in ciclul for
pe care il folosim in algoritm in urma executarii iteratiilor corespunzatoare apar numere mai mari decat
307
10 ,numere pe care Mathcad-ul nu le poate evalua.
Observatii:
- Nr maxim de zecimale a fost ales nr maxim pe care il poate calcula Mathcad-ul 10^ 15.


A fost ales softul Mathcad datorita usurintei de implemenatare a metodelor date precum si
datorita faptului ca acest utilitar permite vizualizarea pas cu pas a algoritmilor.
Algortimii prezentati isi vor gasi aplicabilitatea in orele de laborator a disciplinei de Metode
Numerice in Electrotehnica,precum si in activitatea de cercetare a grupului de M.N.E.Pe de alta parte
contribuie la dezvoltarea materialului de studiu al catedrei de M.N.E.
Metoda
Ordin matrice
Kralov Leverrier Puterii Directe
2 0 0 0
3
14
10


15
10


15
10


4
8
10


8
10


-
5
8
10


8
10


13
10


6
9
10


9
10


0
7
7
10


7
10


12
10


8
8
10


9
10


12
10


9
8
10


8
10


13
10


10
6
10


6
10


13
10


7
Bibliografie:
1. Micu Dan Doru, Cziker Andrei Aplicatii ale metodelor numerice in electrotehnica .Casa
cartii de stiinta Cluj-Napoca 2002
2. Dan Micu, Adriana Micu Elemente de sinteza campului electromagnetic Ed. Dacia,Cluj
Napoca 2005
3. Dan Doru Micu, Andrei Ceclan Caiet de laborator Metode Numerice in Electrotehnica,
(uz intern) 2006
4. Dan Doru Micu, Denisa Duma, Laura Cret Teoria circuitelor electrice Culegere de
Probleme

S-ar putea să vă placă și