Top Banner
ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΠΟΛΙΤΙΚΩΝ ΜΗΧΑΝΙΚΩΝ - ΤΟΜΕΑΣ ΚΑΤΑΣΚΕΥΩΝ ΑΡΙΘΜΗΤΙΚΕΣ ΜΕΘΟ∆ΟΙ Μανόλης Γ. Σφακιανάκης Επίκουρος Καθηγητής Σημειώσεις ΠΑΤΡΑ 2005
49

SHMEIWSEIS

Sep 08, 2014

Download

Documents

vector_control
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: SHMEIWSEIS

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΠΟΛΙΤΙΚΩΝ ΜΗΧΑΝΙΚΩΝ - ΤΟΜΕΑΣ ΚΑΤΑΣΚΕΥΩΝ

ΑΡΙΘΜΗΤΙΚΕΣ ΜΕΘΟ∆ΟΙ Μανόλης Γ. Σφακιανάκης Επίκουρος Καθηγητής

Σηµειώσεις

ΠΑΤΡΑ 2005

Page 2: SHMEIWSEIS

1

ΑΝΤΙ ΠΡΟΛΟΓΟΥ

Οι σηµειώσεις που περιέχονται στο τεύχος αυτό αποτελούν συνέχεια της ύλης του 1ου και 2ου

Κεφαλαίου του βιβλίου Αριθµητικές Μέθοδοι του Καθηγητή του Γενικού Τµήµατος του Παν/µίου

Πατρών, κ. Β. Β. Μάρκελλου.

Περιγράφονται αναλυτικά τα ακόλουθα:

η µέθοδος Bairstow, για την εύρεση όλων των ριζών (πραγµατικών και µιγαδικών)

κανονικών πολυωνύµων n-στού βαθµού,

οι µέθοδοι Crout και Cholesky, για την επίλυση συστήµατος γραµµικών εξισώσεων, και

η µέθοδος Krylov, για την εύρεση των συντελεστών του χαρακτηριστικού πολυωνύµου

καθώς καί του συνόλου των ιδιοδιανυσµάτων ενός τετραγωνικού πίνακα αναφορικά µε το

θεµελιώδες πρόβληµα ιδιοτιµών.

Παρατίθεται πίνακας σηµείων ολοκλήρωσης & αντίστοιχων βαρών για ολοκλήρωση κατά

Gauss.

Ολα τα παραπάνω συνοδεύονται από αντίστοιχες υπορουτίνες σε FORTRAN 90/95.

Μανόλης Γ. Σφακιανάκης

Επίκουρος Καθηγητής

Πάτρα 2005

Page 3: SHMEIWSEIS

2

1. Η ΜΕΘΟ∆ΟΣ Bairstow

Η µέθοδος του Bairstow αναφέρεται στο πρόβληµα της εύρεσης όλων των ριζών µίας εξίσωσης η

οποία έχει τη µορφή κανονικού πολυωνύµου n-στού βαθµού µε γενικό τύπο

0.....)( 012

22

21

1 =++++++= −−

−− axaxaxaxaxaxf n

nn

nn

n (1.1)

Στη γενική περίπτωση, η πολυωνυµική εξίσωση (1.1) δύναται να έχει πραγµατικές αλλά, ίσως,

και µιγαδικές ρίζες. Ως γνωστόν, εάν µία ρίζα είναι µιγαδική τότε ρίζα θα είναι και η συζυγής της.

Εποµέ-νως, εάν οι συζυγείς µιγαδικοί αριθµοί

ziy +== ρρ1 , ziy −== ρρ2 (1.2) είναι ρίζες της (1.1), τότε το τριώνυµο

ρρρρρρ ++−=−−= xxxxxg )())(()( 2 (1.3) θα είναι τέλειος διαιρέτης του πολυωνύµου f(x). Με βάση αυτό, η (1.1) ξαναγράφεται ως

).....()()()()( 012

23

32

2 bxbxbxbxbxgxbxgxf nn

nn +++++⋅=⋅= −

−−

− (1.4) όπου το πηλίκο b(x) θα είναι πολυώνυµο n-2 βαθµού και το υπόλοιπο θα προκύπτει µηδέν, λόγω της

θεώρησης ότι το g(x) είναι τέλειος διαιρέτης. Κρίνεται εποµένως σκόπιµο να αναζητούνται οι ρίζες

της (1.1) ανά ζεύγη, ως ρίζες τριωνύµων-τέλειων διαιρετών της µορφής g(x). Αναζητούνται δηλαδή

όλα τα δυνατά τριώνυµα g(x) τα οποία είναι τέλειοι διαιρέτες του f(x). Eτσι, µετά την εύρεση του

πρώτου διαιρέτη, έστω g1(x), η διαδικασία θα επαναληφθεί µε την αναζήτηση του δευτέρου διαιρέτη,

g2(x), ως διαιρέτη του πηλίκου b1(x) στη θέση του f(x). Ο τρίτος διαιρέτης, g3(x), θα αναζητηθεί ως

διαιρέτης του νέου πηλίκου b2(x), κ.ο.κ. ∆ηλαδή

[ ] [ ]

[ ] [ ]

)()()()()(..............................................................................................................................................................................................................................................................................................................

).....(

)()()()()()()()()()()().....(

)()()()()()()()().....()()()()(

21

0,31,32

2,37

7,36

6,3

3213321221

0,21,22

2,25

5,24

4,2

2122111

0,11,12

2,13

3,12

2,1111

xbxgxgxgxf

bxbxbxbxb

xgxgxgxbxgxgxgxbxgxgxfbxbxbxbxb

xgxgxbxgxgxbxgxfbxbxbxbxbxgxbxgxf

kk

nn

nn

nn

nn

nn

nn

⋅⋅⋅⋅⋅⋅⋅=

+++++⋅

⋅⋅⋅=⋅⋅⋅=⋅⋅=

+++++⋅

⋅⋅=⋅⋅=⋅=

+++++⋅=⋅=

−−

−−

−−

−−

−−

−−

(1.5)

όπου 2nk = και 1)( =xbk εάν το n είναι άρτιος, ή, 2)1( −= nk και baxxbk +=)( εάν το n

είναι περιττός. Από τα παραπάνω είναι προφανές ότι όποτε η διακρίνουσα του τριωνύµου της (1.3)

προκύπτει µηδέν ή θετική, τότε θα λαµβάνονται πραγµατικές ρίζες. Ετσι, η ιδέα του να διαιρείται

διαδοχικά το f(x) µε τριώνυµα της µορφής g(x) παρέχει, επί το γενικότερον, τη δυνατότητα απόκτησης

όλων των ριζών, πραγµατικών και µιγαδικών.

Page 4: SHMEIWSEIS

3

Η αντικατάσταση των (1.2) στην (1.3), µετά την εκτέλεση των σχετικών πράξεων, δίνει

22

2

, 2, )(

zyqypqpxxxg+=−=

++= (1.6)

Το αρχικό πρόβληµα λοιπόν ανάγεται στην αναζήτηση κατάλληλων συντελεστών pk και qk τέτοιων

ώστε τα τριώνυµα gk(x) να προκύπτουν τέλειοι διαιρέτες του f(x), βάσει των (1.5). Στα επόµενα οι

δείκτες k θα παραλείπονται χάριν εποπτικής απλότητας των σχέσεων.

Προς το σκοπό αυτό, αρχικά υποτίθενται κάποιες αυθαίρετες προσεγγίσεις των p και q, µε στόχο στη

συνέχεια να αναζητηθούν κατάλληλες διορθώσεις τους, ∆p και ∆q, µέσω κάποιας επαναληπτικής

διαδικασίας που θα προκύψει. Οσο τα p και q δεν είναι τα κατάλληλα (µε την έννοια που

αναφέρθηκε) από τη διαίρεση )()( xgxf θα προκύπτει και υπόλοιπο, έστω r(x). Ετσι η (1.4)

ξαναγράφεται, επί το γενικότερον, ως

)().....()(

)()()()(

012

23

32

22 SRxbxbxbxbxbqpxx

xrxbxgxfn

nn

n +++++++⋅++=

=+⋅=−

−−

(1.7)

όπου r(x) = Rx + S είναι το πιθανό υπόλοιπο (προφανώς, κατά µέγιστον, ενός βαθµού µικρότερου του

διαιρέτη g(x), άρα πρωτοβάθµιο). Θεωρώντας τώρα ότι οι τιµές των p και q (µέσω της επαναληπτικής

διαδικασίας που θα επακολουθήσει) βελτιώνονται, τείνοντας προς τις σωστές, είναι προφανές ότι η

τιµή του υπολοίπου r(x) θα πρέπει και αυτή να τείνει σταδιακά προς το µηδέν. Προκύπτει δηλαδή η

απαίτηση ικανοποίησης της συνθήκης

εε ≤≤⇒→+= SRSRxxr , 0)( (1.8) όπου ε είναι πολύ µικρός αριθµός (π.χ. 10-7 ή και αρκετά µικρότερος). Η (1.8) µπορεί να

χρησιµοποιηθεί ως «πιθανώς» κατάλληλο κριτήριο τερµατισµού της επαναληπτικής διαδικασίας

υπολογισµού των p και q.

H εκτέλεση των πράξεων στην (1.7) δίνει

)( )( )(

)( ....................................... )(

)(

)(

)(

0

10

2210

3321

3345

2234

123

2

SqbxRqbpbxqbpbb

xqbpbb

xqbpbb

xqbpbb

xpbb

xbxf

nnnn

nnnn

nnn

nn

++++++++++

++++

++++++

++++

+++

+=

−−−−

−−−−

−−−

(1.9)

Η εξίσωση των συντελεστών των δυνάµεων του x των (1.1) και (1.9) δίνει

Page 5: SHMEIWSEIS

4

0 ,

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

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

*1

*

00

101

2120

3231

3435

2324

*1213

**12

00

101

2102

3213

3453

2342

231

2

==

⎪⎪⎪⎪⎪⎪

⎪⎪⎪⎪⎪⎪

⎪⎪⎪⎪⎪⎪

⎪⎪⎪⎪⎪⎪

−=−−=−−=−−=

−−=−−=

−−=

−−=

⎪⎪⎪⎪⎪⎪

⎪⎪⎪⎪⎪⎪

+=++=

++=++=

++=++=

+==

−−−−

−−−−

−−−−

−−

−−−−

−−−−

−−−

nn

nnnn

nnnn

nnnn

nnnn

nnnn

nnnn

nnn

nn

bb

qbaSqbpbaRqbpbabqbpbab

qbpbabqbpbabqbpbab

qbpbab

SqbaRqbpba

qbpbbaqbpbba

qbpbbaqbpbba

pbbaba

(1.10)

Οι σχέσεις (1.10) αποτελούν ένα γραµµικό σύστηµα n+1 εξισώσεων µε n+3 αγνώστους τα R, S, p, q

και τους n-1συντελεστές bi του πηλίκου b(x). Mε τη συµπλήρωση των εκφράσεων των bn-2 και bn-3 µε

τους µηδενικούς όρους *nb και *

1−nb , οι πρώτες n-1 σχέσεις περιγράφονται τελικά από την

ακολουθία

0,1,2),.....,3(),2( ,

0

212

1

−−=−−===

+++

nnkqbpbabbb

kkkk

nn (1.11)

Οι όροι R και S του υπολοίπου παραµένουν ως έχουν, δηλαδή

00

101

qbaSqbpbaR

−=−−=

(1.12)

Με δεδοµένα p και q, το σύστηµα των (1.10), ή ισοδύναµα των (1.11) και (1.12), µπορεί να επιλυθεί

ως προς τα R, S και bi, αρχίζοντας από k = n – 2 για τα τελευταία. Οσο όµως οι τιµές των p και q δεν

είναι κατάλληλες (υπό την έννοια που έχει προαναφερθεί), οι όροι R και S στη γενική περίπτωση θα

είναι µή µηδενικοί, δηλαδή

0),(0),(

≠=≠=

qpSSqpRR

(1.13)

Προκειµένου να υπάρξει τέλεια ικανοποίηση του κριτηρίου (1.8), µε ε = 0, αναζητούνται κατάλληλες

διορθώσεις ∆p και ∆q, των p και q αντίστοιχα, τέτοιες ώστε

0),(0),(

=∆+∆+==∆+∆+=

qqppSSqqppRR

(1.14)

Η ανάπτυξη των (1.14) σε σειρές Taylor, παραλείποντας τους όρους δευτέρας τάξεως και άνω, οδηγεί

στις προσεγγιστικές σχέσεις

q

qSp

pSqpSqqppS

qqRp

pRqpRqqppR

∆∂∂

+∆∂∂

+≅=∆+∆+

∆∂∂

+∆∂∂

+≅=∆+∆+

),(0),(

),(0),( (1.15)

Page 6: SHMEIWSEIS

5

Οι (1.15) αποτελούν ένα γραµµικό σύστηµα ως προς τις διορθώσεις ∆p και ∆q. Ετσι ξαναγράφονται

σε µητρωϊκή µορφή, ως

⇔⎥⎦

⎤⎢⎣

⎡−≅⎥

⎤⎢⎣

⎡∆∆

⎥⎥⎥⎥

⎢⎢⎢⎢

∂∂

∂∂

∂∂

∂∂

),(),(

qpSqpR

qp

qS

pS

qR

pR

⎥⎦

⎤⎢⎣

⎡⋅−=⎥

⎤⎢⎣

⎡⋅

⎥⎥⎥⎥

⎢⎢⎢⎢

∂∂

∂∂

∂∂

∂∂

−≅⎥⎦

⎤⎢⎣

⎡∆∆

⇔ −

),(),(

][),(),(

1

1

qpSqpR

AqpSqpR

qS

pS

qR

pR

qp (1.16)

Οι τιµές των διορθώσεων ∆p και ∆q που θα προκύψουν από τις (1.16) θα αναπροσαρµόσουν τις

υποτεθείσες τιµές των p και q, λαµβάνοντας έτσι τις επόµενες προσεγγίσεις τους

qqqppp

ii

ii

∆+=∆+=

+

+

1

1 (1.17)

όπου i είναι ο αριθµός της επανάληψης. Η διαδικασία επαναλαµβάνεται µε τις νέες τιµές των p και q.

Είναι προφανές ότι ένα δεύτερο κριτήριο τερµατισµού της διαδικασίας, εκτός αυτού της (1.8), µπορεί

να είναι και το ακόλουθο εε ≤∆≤∆⇒→∆→∆ qpqp , 0 , 0 (1.18) Τελικά, προκειµένου να είναι δυνατή η επίλυση των (1.16), αποµένει ο υπολογισµός των µερικών

παραγώγων

, , , qS

pS

qR

pR

∂∂

∂∂

∂∂

∂∂

Η µερική παραγώγιση των (1.12) ως προς p και q , λαµβάνοντας υπ’ όψη από τις (1.11) ότι

bi = bi(p,q), δίνει

qbqb

qS

pbq

pS

qbq

qbpb

qR

pbq

pbpb

pR

∂∂

−−=∂∂

∂∂

−=∂∂

∂∂

−∂∂

−−=∂∂

∂∂

−∂∂

−−=∂∂

00

0

101

100

,

, (1.19)

Από τις (1.19) φαίνεται ότι προκειµένου να υπολογισθούν οι µερικές παράγωγοι των R και S ως προς

p και q, αρκεί να υπολογισθούν οι τιµές των µερικών παραγώγων των b0 και b1 ως προς p και q. Για το

σκοπό αυτό, η µερική παραγώγιση της (1.11) ως προς p και q δίνει

q

bqq

bpbqb

pbq

pbpb

pb kk

kkkk

kk

∂∂

−∂∂

−−=∂∂

∂∂

−∂∂

−−=∂∂ ++

+++

+21

221

1 , (1.20)

Page 7: SHMEIWSEIS

6

όπου 0,1,2),.....,3(),2( −−= nnk . Θέτοντας τώρα pbc ∂∂= και qbd ∂∂= προκύπτουν οι παρα-

κάτω ακολουθίες που δίνουν τις τιµές των µερικών παραγώγων

0,1,2),.....,3(),2( , 212

211

−−=

⎪⎪⎭

⎪⎪⎬

⎪⎪⎩

⎪⎪⎨

−−−==∂∂

−−−==∂∂

+++

+++

nnkqdpdbd

qb

qcpcbcpb

kkkkk

kkkkk

(1.21)

Η προσεκτική παρατήρηση των (1.21) προδίδει πιθανή συχέτιση µεταξύ των ακολουθιών ck και dk. Οι

ανωτέρω δύο ακολουθίες ck και dk, µε εξαίρεση τους όρους bk+1 και bk+2, έχουν όρους εκκίνησης

κοινούς σε δείκτες. Προκειµένου να υπολογισθούν οι τιµές αυτών των όρων, υπολογίζονται οι πρώτοι

όροι των ακολουθιών, για k = n – 2:

nnnn

n

nnnnn

qdpdbdq

b

qcpcbcp

b

−−−==∂∂

−−−==∂∂

−−−

−−−−

122

1122

(1.22)

Οµως από τις (1.11) προκύπτει ότι οι προηγούµενοι (προαπαιτούµενοι) όροι cn, cn-1, dn, dn-1 από τους

οποίους εξαρτώνται τα cn-2 και dn-2 είναι µηδενικοί. Πράγµατι, είναι

000 1111

1 ====⇔=∂∂

=∂∂

=∂∂

=∂∂

⇒== −−−−

− nnnnnnnn

nn ddccq

bqb

pb

pbbb (1.23)

Από τις (1.22) λοιπόν, λόγω των (1.11) και (1.23), προκύπτει τελικά ότι

022 == −− nn dc (1.24) Βάσει των (1.21), οι διαδοχικοί όροι ck+1 και dk, των δύο ακολουθιών ck και dk αντίστοιχα, είναι

0,1,2),.....,4(),3( , 212

32211

−−=

⎪⎪⎭

⎪⎪⎬

⎪⎪⎩

⎪⎪⎨

−−−==∂∂

−−−==∂∂

+++

+++++

nnkqdpdbd

qb

qcpcbcp

b

kkkkk

kkkkk

(1.25)

Τώρα, οι ακολουθίες ck+1 και dk µε εξαίρεση τον όρο bk+2 διαφέρουν σε δείκτες ως προς τους προαπαι-

τούµενους όρους εκκίνησης ck+2, ck+3, dk+1, dk+2. Οι πρώτοι όροι των ακολουθιών (1.25), για k = n – 3,

προκύπτουν:

1213

3

1122

−−−−−

−−−−

−−−==∂∂

−−−==∂∂

nnnnn

nnnnn

qdpdbdq

b

qcpcbcp

b

(1.26)

Page 8: SHMEIWSEIS

7

Λόγω όµως των (1.23) και (1.24) προκύπτει ότι cn-2 = dn-3 και κατ’ επέκταση

0,1,2),.....,4(),3( , 1 −−== + nnkcd kk (1.27) Ετσι οι (1.21), (1.23) και (1.27) ξαναγράφονται στην τελική µορφή

0,1,2),.....,3(),2( ,

0

1

211

11

−−=

⎪⎪⎪

⎪⎪⎪

⎪⎪⎪

⎪⎪⎪

==∂∂

−−−==∂∂

===∂∂

=∂∂

+

+++

−−

nnk

cdqb

qcpcbcpb

ccp

bpb

kkk

kkkkk

nnnn

(1.28)

Βάσει λοιπόν των (1.28), οι σχέσεις (1.19) των µερικών παραγώγων των R και S ως προς p και q

δίνονται στην τελική τους µορφή

100

211100

,

,

qcbqSqc

pS

qcpcbqRqcpcb

pR

−−=∂∂

−=∂∂

−−−=∂∂

−−−=∂∂

(1.29)

Οι όροι c0, c1 και c2 θα υπολογισθούν ως οι τελευταίοι τρείς όροι τής ακολουθίας ck των (28),

αρχίζοντας τους υπολογισµούς από k = n - 2. Ετσι, οι διορθώσεις ∆p και ∆q των p και q αντίστοιχα,

µπορούν πλέον να υπολογισθούν από τις (1.16).

Eίναι προφανές ότι όσο τα αρχικά p και q είναι πιό κοντά στις πραγµατικές τους τιµές (οι οποίες

αντιστοιχούν σε ένα ζεύγος ριζών) τόσο λιγότερες επαναλήψεις απαιτούνται για τον πιό ακριβή

προσδιορισµό τους. Αυτό οδηγεί στο συµπέρασµα ότι εάν υπάρχουν καλές εκτιµήσεις για δύο ρίζες

της (1.1) (π.χ. µέσω µεθόδου Newton-Raphson, η οποία όµως και αυτή απαιτεί ενίοτε καλή αρχική

εκτίµησης της ρίζας) ή είναι όντως γνωστές δύο ρίζες της (1.1), τότε είναι σκόπιµο να «καθοδηγηθεί»

ασφαλέστερα η σύγκλιση της µεθόδου ξεκινώντας µε αρχικές εκτιµήσεις τα p και q που αντιστοιχούν

στις ρίζες αυτές. Ωστόσο, στη γενική περίπτωση όπου αυτό είναι ανέφικτο, τότε υποτίθενται κάποια

αυθαίρετα αρχικά p και q (συνήθως λαµβάνονται ως εκκίνηση οι τιµές p = q = 0).

Iδιαίτερη προσοχή χρήζει το γεγονός ότι ενδέχεται, και µάλιστα µε πιθανότητα όχι ευκαταφρόνητη,

λόγω σφαλµάτων στρογγύλευσης του Η/Υ (round off errors) η µέθοδος να µήν οδηγήσει στις ακριβείς

τιµές των ριζών (τόσο των πραγµατικών όσο και των πιθανών µιγαδικών) αλλά σε κάποιες αρκετά

καλές προσεγγίσεις τους. ∆ηλαδή τουλάχιστον ένα από τα κριτήρια (1.8) ή (1.18), µετά το τέλος ενός

προκαθορισµένου µέγιστου αριθµού επαναλήψεων, να µην ικανοποιούνται. Αυτό οφείλεται στις

πιθανώς κακές αρχικές εκτιµήσεις των p και q αφ’ ενός, και στην αδυναµία λόγω στρογγύλευσης στην

επίλυση του συστήµατος των (1.16), αφ’ ετέρου. Η διάγνωση αυτού του προβλήµατος µπορεί να γίνει

µε αντικατάσταση όλων των ριζών και υπολογισµό της τιµής της f(x) για κάθε µία ξεχωριστά.

Page 9: SHMEIWSEIS

8

Προκειµένου να αποφασισθεί εάν η συνολική λύση (εύρεση όλων των ριζών) είναι αποδεκτή, αρκεί

για όλες τις ρίζες να ικανοποιείται το κριτήριο nif i ,.....,3,2,1 , )( =≤ ερ (1.30) όπου ρi είναι ρίζα της (1.1) και ε πολύ µικρός αριθµός. Σε περίπτωση όπου το κριτήριο της (1.30) δεν

ικανοποιείται, τότε είναι σκόπιµη µία δεύτερη επανάληψη του συνολικού αλγορίθµου µε τιµές

εκκίνησης p και q αυτές οι οποίες θα αντιστοιχούν σε δύο ρίζες ρi και ρj οι οποίες ικανοποιούν

καλύτερα το κριτήριο της (1.30). Η περίπτωση µή ικανοποίησης και πάλι του κριτηρίου της (1.30)

είναι εξαιρετικά σπάνια και οφείλεται συνήθως σε µεγάλες διαφορές των τάξεων µεγέθους των

συντελεστών ai της (1.1). Πιθανώς, επόµενοι κύκλοι επανάληψης, ή, αύξηση του αριθµού των

επαναλήψεων για τον υπολογισµό των ∆p και ∆q ίσως λύσει το πρόβληµα.

Θεσπίζεται λοιπόν ως κύκλος υπολογισµού, η επανάληψη της συνολικής διαδικασίας σε περίπτωση

µη ικανοποίησης του κριτηρίου της (1.30) αφού πρώτα έχει εξαντληθεί ο µέγιστος επιτρεπόµενος

αριθµός επαναλήψεων υπολογισµού των ∆p και ∆q, κοινός για όλα τα ζεύγη ριζών.

Είναι επίσης προφανές ότι καθ’ όσον τα R και S είναι συναρτήσεις των p και q, η ικανοποίηση του

κριτηρίου της (1.8) θα υφίσταται µόνο για σχεδόν άριστες τιµές των p και q, οπότε η επαναληπτική

διαδικασία υπολογισµού των διορθώσεων ∆p και ∆q µπορεί να παρακάµπτεται θεωρώντας τα

συγκεκριµένα p και q ως άριστα. Αυτό σηµαίνει ότι το όριο ε του κριτηρίου της (1.8) θα πρέπει να

είναι πολύ µικρό (π.χ. ε ≤ 10-12 ή και µικρότερο). Ανάλογοι συλλογισµοί ισχύουν και για το όριο ε του

κριτηρίου της (1.18). Είναι προφανές, λόγων των (1.14), ότι η ικανοποίηση του κριτηρίου της (1.18)

συνεπάγεται αυτόµατη ικανοποίηση του κριτηρίου της (1.8).

Τέλος, σε επίπεδο υλοποίησης της µεθόδου σε Η/Υ, θεσπίζονται και τα ακόλουθα κριτήρια

προκειµένου να λαµβάνονται υπ’ όψη τα σχετικά σφάλµατα στρογγύλευσης.

1. Κριτήριο αδύνατης επίλυσης των (1.16)

εάν 0]det[ ]det[0 =⇒≤≠ AA ε (1.31) 2. Οριο µηδενικής διακρίνουσας του τριωνύµου της (1.6)

εάν 04 40 22 =−⇒≤−≠ qpqp ε (1.32) 3. Οριο µηδενικού φανταστικού µέρους µιγαδικής ρίζας της µορφής των (1.2)

εάν 0 0 =⇒≤≠ zz ε (1.33) Ακολούθως ανακεφαλαιώνονται τα βήµατα του αλγορίθµου, όπως αυτά υλοποιούνται στην

υπορουτίνα BAIRSTOW (σε FORTRAN 90/95) η οποία ακολουθεί παρακάτω.

Page 10: SHMEIWSEIS

9

Βήµατα Αλγορίθµου Μεθόδου Bairstow Βήµα 1: Αρχική επιλογή των p και q.

Βήµα 2: Υπολογισµός των συντελεστών bk του πηλίκου b(x), βάσει των (1.11).

Βήµα 3: Υπολογισµός των συντελεστών R και S του υπολοίπου r(x), βάσει των (1.12).

Βήµα 4: Ελεγχος ικανοποίησης του κριτηρίου της (1.8). Εάν ικανοποιείται, ο υπολογισµός

µεταφέρεται στο Βήµα 11.

Βήµα 5: Υπολογισµός των c0, c1 και c2 βάσει της (1.28).

Βήµα 6: Υπολογισµός των µερικών παραγώγων των R και S ως προς p και q βάσει των (1.29).

Βήµα 7: Υπολογισµός της τιµής της ορίζουσας της (1.16) και έλεγχος του κριτηρίου της (1.31).

Εάν προκύπτει ορίζουσα µηδενική ο υπολογισµός σταµατά µε εκτύπωση σχετικού

µηνύµατος.

Βήµα 8: Υπολογισµός των διορθώσεων ∆p και ∆q βάσει των (1.16).

Βήµα 9: Αναπροσαρµογή των τιµών των p και q βάσει των (1.17).

Βήµα 10: Ελεγχος ικανοποίησης του κριτηρίου της (1.18). Εάν δεν ικανοποιείται, ο υπολογισµός

µεταφέρεται στο Βήµα 2 για τα τρέχοντα p και q του Βήµατος 9.

Βήµα 11: Υπολογισµός της διακρίνουσας του τριωνύµου της (1.6) και έλεγχος του κριτηρίου

(1.32).

Βήµα 12: Υπολογισµός των ριζών του τριωνύµου της (1.6).

Βήµα 13: Ελεγχος του κριτηρίου της (1.33) σε περίπτωση ύπαρξης µιγαδικών ριζών.

Βήµα 14: Εφ’ όσον το προκύπτον πηλίκο b(x) είναι τουλάχιστον 3ου βαθµού, ο υπολογισµός

µεταφέρεται στο Βήµα 2 µε το τρέχον πολυώνυµο-πηλίκο b(x) στη θέση του αρχικού

πολυωνύµου f(x) και µείωση του βαθµού του νέου προβλήµατος (πολυωνύµου-πηλίκου)

κατά 2. Τα p και q θα είναι αυτά του Βήµατος 9. Εάν το πηλίκο προκύψει 2ου ή 1ου

βαθµού βρίσκονται οι ρίζες/ζα του και ο υπολογισµός µεταφέρεται στο Βήµα 15.

Βήµα 15: Ελεγχος του κριτηρίου της (1.30) για κάθε µία ρίζα ξεχωριστά. Σε περίπτωση µη

ικανοποίησης, και εφ’ όσον δεν έχει εξαντληθεί ο µέγιστος επιτρεπόµενος κύκλος

επαναϋπολογισµών, ο αλγόριθµος επαναλαµβάνεται από το Βήµα 1 µε p και q αυτά που

αντιστοιχούν σε δύο ρίζες οι οποίες ικανοποιούν καλύτερα το κριτήριο (1.30). Προφανώς,

επιλέγεται ένα ζεύγος πραγµατικών ή ένα ζεύγος συζυγών µιγαδικών από τις έως τώρα

ευρεθείσες.

Παράδειγµα

Να επιλυθεί η πολυωνυµική εξίσωση

0875103550812417)( 2345 =−+−+−= xxxxxxf

λαµβάνοντας ως αρχική προσέγγιση τις τιµές: p0 = q0 = 0. Για το κριτήριο σύγκλισης της (1.18) να

θεωρηθεί 1414 10 , 10 −− =≤∆=≤∆ εε qp .

Page 11: SHMEIWSEIS

10

Για την πρώτη διαίρεση, τα αποτελέσµατα κάθε επανάληψης διαµορφώνονται ως ακολούθως

Επανάληψη Νο. 1 Επανάληψη Νο. 2 Επανάληψη Νο. 3

n a b c b c b c 5 1 0.00000 0.00000 0.00000 0.00000 0.00000 0.000004 -17 0.00000 0.00000 0.00000 0.00000 0.00000 0.000003 124 1.00000 0.00000 1.00000 0.00000 1.00000 0.000002 -508 -17.00000 -1.00000 -15.38304 -1.00000 -14.13201 -1.000001 1035 124.00000 17.00000 97.40375 13.76607 80.16487 11.264020 -875 -508.00000 -124.00000 -324.00534 -73.42208 -231.38640 -44.55511

p1 = -1.61696 q1 = 1.72244

p2 = -2.86799 q2 = 3.30466

p3 = -3.67811 q3 = 4.48732

……………………………………………………………………………………………………………

Επαναλήψεις Νο. 7 & 8

n a b c 5 1 0.00000 0.000004 -17 0.00000 0.000003 124 1.00000 0.000002 -508 -13.00000 -1.000001 1035 67.00000 9.000000 -875 -175.00000 -26.00000

p7,8 = -4.00000 q7,8 = 5.00000

Τα αποτελέσµατα των επαναλήψεων 4, 5 και 6 αφήνονται ως άσκηση στον αναγνώστη.

Aρα από την πρώτη διαίρεση προκύπτει τελικά p = -4 και q = 5. Εποµένως ο πρώτος διαιρέτης g(x)

και οι αντίστοιχες ρίζες του είναι

ixxxqpxxxg ±=⇔=+−=++= 2 054)( 2,122

H διαδικασία επαναλαµβάνεται επί της πολυωνυµικής εξίσωσης του πηλίκου

01756713)( 23 =−+−= xxxxb στη θέση τής αρχικής εξίσωσης f(x). Ως αρχικές προσεγγίσεις των p, q λαµβάνονται οι τελευταίες

προκύπτουσες τιµές από την πρώτη διαίρεση, δηλαδή p = -4 και q = 5.

Για την δεύτερη διαίρεση που ακολουθεί, τα αποτελέσµατα κάθε επανάληψης διαµορφώνονται ως

ακολούθως

Page 12: SHMEIWSEIS

11

Επανάληψη Νο. 1 Επανάληψη Νο. 2 Επανάληψη Νο. 3

n a b c b c b c 3 1 0.00000 0.00000 0.00000 0.00000 0.00000 0.000002 -13 0.00000 0.00000 0.00000 0.00000 0.00000 0.000001 67 1.00000 0.00000 1.00000 0.00000 1.00000 0.000000 -175 -9.00000 -1.00000 -6.92000 -1.00000 -7.01500 -1.00000

p1 = -6.08000 q1 = 20.60000

p2 = -5.98500 q2 = 25.00620

p3 = -5.99995 q3 = 24.99983

……………………………………………………………………………………………………………

Επαναλήψεις Νο. 5 & 6

n a b c 3 1 0.00000 0.000002 -13 0.00000 0.000001 67 1.00000 0.000000 -175 -7.00000 -1.00000

p5,6 = -6.00000 q5,6 = 25.00000

Τα αποτελέσµατα της 4ης επανάληψης αφήνονται ως άσκηση στον αναγνώστη.

Ετσι, από τη δεύτερη διαίρεση προκύπτει τελικά p = -6 και q = 25. Eποµένως ο δεύτερος διαιρέτης

g(x) και οι αντίστοιχες ρίζες του θα είναι

ixxxqpxxxg 43 0256)( 4,322 ±=⇔=+−=++=

Το τελικό πηλίκο που αποµένει θα είναι πρώτου βαθµού, µε ρίζα

7 07)( 5 =⇔=−= xxxb

Ετσι, το αρχικό πολυώνυµο µπορεί πλέον να γραφεί στην παραγοντοποιηµένη µορφή 0)43)(43)(2)(2)(7()( =+−−−+−−−−= ixixixixxxf

Υπορουτίνα Μεθόδου Bairstow σε FORTRAN 90/95

Η υπορουτίνα BAIRSTOW είναι γραµµένη σε FORTRAN 90/95. Ολες οι πραγµατικές

µεταβλητές, όπως και ο συντελεστής του φανταστικού µέρους των µιγαδικών ριζών, είναι διπλής

ακρίβειας (8 bytes).

H υπορουτίνα απαιτεί ως δεδοµένες τις τιµές των παρακάτω µεταβλητών:

NDEG : Βαθµός n του πολυωνύµου.

[A]0:NDEG : Μονοδιάστατος πίνακας των συντελεστών a0, a1, a2, ….., an του πολυωνύµου.

Προσοχή: στην υπορουτίνα ισχύει ότι:

Α(0) = a0, Α(1) = a1, Α(2) = a2, ….., A(NDEG) = an.

Page 13: SHMEIWSEIS

12

P : Αρχική τιµή του p.

Q : Αρχική τιµή του q.

TOLPQRS : Κοινό όριο ε των κριτηρίων των σχέσεων (1.8) και (1.18).

TOLDETS : Οριο ε του κριτηρίου της σχέσης (1.31).

TOLDETR : Οριο ε του κριτηρίου της σχέσης (1.32).

TOLC : Οριο ε του κριτηρίου της σχέσης (1.33).

TOLFX : Οριο ε του κριτηρίου της σχέσης (1.30).

NITMAX : Μax. αριθµός επαναλήψεων για τον υπολογισµό των ∆p και ∆q.

NCYCMAX : Μax. αριθµός κύκλων επαναϋπολογισµού.

ISORT : Κωδικός ταξινόµησης ριζών:

1 = αύξουσα σειρά, 2 = φθίνουσα σειρά.

IPRINT1 : Κωδικός εκτύπωσης ενδιάµεσων αποτελεσµάτων:

0 = όχι, -1 =περιληπτική εκτύπωση, 1=πλήρης εκτύπωση.

IPRINT2 : Κωδικός εκτύπωσης τελικών αποτελεσµάτων:

0 = όχι, 1 = ναί.

H υπορουτίνα επιστρέφει τις τιµές των παρακάτω µεταβλητών:

NREAL : Συνολικός αριθµός υπολογισθέντων πραγµατικών ριζών.

NCOMPL : Συνολικός αριθµός υπολογισθέντων µιγαδικών ριζών.

Ισχύει ότι: NREAL + NCOMPL = n.

[XR]NDEG : Μονοδιάστατος πίνακας πραγµατικών ριζών ή του πραγµατικού µέρους y των

µιγαδικών ριζών (βάσει της (1.2) ). Οι NREAL πραγµατικές ρίζες περιέχονται στις

NREAL πρώτες θέσεις του πίνακα. Μάλιστα δε παρέχονται κατά αύξουσα ή

φθίνουσα σειρά, αναλόγως της τιµής της µεταβλητής ISORT.

Οι NCOMPL τελευταίες θέσεις του πίνακα περιέχουν το πραγµατικό µέρος y των

µιγαδικών ριζών. Οι µιγαδικές ρίζες παρέχονται κατά αύξουσα ή φθίνουσα σειρά

της ποσότητας y2 + z2, όπου z είναι ο συντελεστής του φανταστικού µέρους, βάσει

των (1.2). Οι ρίζες παρέχονται ταξινοµηµένες µόνο κατά την τελευταία επίλυση.

[XIM]NDEG : Μονοδιάστατος πίνακας πραγµατικού συντελεστή z του φανταστικού µέρους των

µιγαδικών ριζών (βάσει της (1.2) ). Οι NREAL πρώτες θέσεις του πίνακα περιέχουν

την τιµή µηδέν. Οι NCOMPL τελευταίες θέσεις του πίνακα περιέχουν τον

συντελεστή z του φανταστικού µέρους. Για την ταξινόµηση ισχύουν τα αναφερόµε-

να για τη µεταβλητή [XR]NDEG.

[FXR]NDEG : Μονοδιάστατος πίνακας µε την τιµή της f(ρ) στις NREAL πρώτες θέσεις λόγω της

αντικατάστασης πραγµατικών ριζών. Στις NCOMPL τελευταίες θέσεις περιέχονται

οι τιµές του πραγµατικού µέρους της τελικής τιµής της f(ρ) µετά την αντικατάσταση

µιγαδικής ρίζας, για την περίπτωση όπου το f(ρ) πιθανόν να προκύψει µιγαδικός

Page 14: SHMEIWSEIS

13

αριθµός.

[FXIM]NDEG : Μονοδιάστατος πίνακας µε την τιµή του συντελεστή του τυχόν προκύπτοντος

φανταστικού µέρους της τιµής της f(ρ) λόγω της αντικατάστασης µιγαδικών ριζών.

Στις NREAL πρώτες θέσεις περιέχεται η τιµή µηδέν.

KSOLVE : Κωδικός ικανοποίησης του κριτηρίου της σχέσης (1.30):

0 = ικανοποιείται, 1 = δεν ικανοποιείται.

Περαιτέρω, η υπορουτίνα BAIRSTOW καλεί τις υπορουτίνες POLYR και POLYC για τον

υπολογισµό της τιµής της f(ρ) λόγω της αντικατάστασης πραγµατικής ή µιγαδικής ρίζας, αντίστοιχα.

Επί πλέον καλεί και τις υπορουτίνες SORTR και SORTC για την ταξινόµηση πραγµατικών ή

µιγαδικών ριζών αντίστοιχα, βάσει των προαναφεροµένων.

Το πρόγραµµα που ακολουθεί, καλεί την εν λόγω υπορουτίνα για τον υπολογισµό των

ριζών του πολυωνύµου του προηγουµένου παραδείγµατος.

PROGRAM TEST ! ! ================================================================== ! | ROOTS OF POLYNOMIALS | ! ================================================================== ! IMPLICIT REAL*8 (A-H,O-Z) DIMENSION A(0:100),XR(100),XIM(100),FXR(100),FXIM(100) ! ! ------------------------------------------------------------------ ! READ FROM FILE DEGREE & COEFFICIENTS OF POLYNOMIAL. ALSO, INITIAL ! GUESSES FOR p & q, tolerances, solution & print parameters ! ------------------------------------------------------------------ ! OPEN (1,FILE='DATA',FORM='FORMATTED') ! READ (1,*) NDEG DO I=NDEG,0,-1 READ (1,*) A(I) END DO READ (1,*) P,Q READ (1,*) TOLPQRS,TOLDETS,TOLDETR,TOLC,TOLFX READ (1,*) NITMAX,NCYCMAX,ISORT,IPRINT1,IPRINT2 ! ! ------------------------------------------------------------------ ! CALL SUBROUTINE BAIRSTOW TO FIND THE ROOTS OF THE POLYNOMIAL ! ------------------------------------------------------------------ ! CALL BAIRSTOW (NDEG,A,P,Q,TOLPQRS,TOLDETS,TOLDETR,TOLC, & & TOLFX,NITMAX,NCYCMAX,ISORT,IPRINT1,IPRINT2, & & NREAL,NCOMPL,XR,XIM,FXR,FXIM,KSOLVE) ! END !

Το σχετικό αρχείο δεδοµένων είναι

DATA 5 1.00 -17.00 124.00 -508.00 1035.00 -875.00 0.00 0.00 1.00D-14 1.00D-80 1.00D-07 1.00D-07 1.00D-07 100 3 1 -1 1

Page 15: SHMEIWSEIS

14

Tα αποτελέσµατα της εκτέλεσης έχουν ως ακολούθως

Παρακάτω δίνονται οι λίστες των εντολών των υπορουτινών BAIRSTOW, POLYR,

POLYC, SORTR και SORTC. ! ================================================================== ! | SUBROUTINE TO FIND ALL REAL & COMPLEX ROOTS | ! | OF AN n-th DEGREE POLYNOMIAL EQUATION | ! | | ! | f(X) = anX**n + an-1X**n-1 + ..... + a2X**2 + a1X + ao = 0, | ! | | ! | where: n > 2 | ! | | ! | BAIRSTOW METHOD | ! | | ! | Developed by M. G. Sfakianakis | ! | University of Patras, 2001 | ! | | ! ================================================================== ! ! ------------------------------------------------------------------ ! Variable Description ! -------------------- ! ! NDEG : Polynomial Degree, n. ! [A]ndeg : Matrix of polynomial coefficients ao,a1,a2,..,an-1,an ! Note that: ! A(0)=ao, A(1)=a1,..., A(NDEG-1)=an-1, A(NDEG)=an. ! [AA]ndeg : A copy of the original coefficients ao,a1,a2,...,an ! P : Initial estimation for p. ! Q : Initial estimation for q. ! [B]ndeg : Matrix of polynomial coefficients ! bo,b1,b2,..,bn-1,bn. Note that: ! B(0)=Bo, B(1)=B1,..., B(NDEG-1)=Bn-1, B(NDEG)=Bn. ! [C]ndeg : Matrix of sequence ck terms ! co,c1,c2,..,cn-1,cn. Note that: ! C(0)=co, C(1)=c1,..., C(NDEG-1)=cn-1, C(NDEG)=cn. ! TOLPQRS : Tolerance ε to check if |∆p|<= ε & |∆q|<= ε, or, if ! |R|<= ε & |S|<= ε. ! TOLDETS : Tolerance ε to check if system determinant |a| <= ε. ! TOLDETR : Tolerance ε to check if determinant |p**2-4q| <= ε. ! TOLC : Tolerance ε to check for y+zi if |z|<= ε. ! TOLFX : Tolerance to check if |f(ρ)|<= ε. ! NITMAX : Max. permissible no. of iterations within a solytion ! cycle. ! NCYCMAX : Max. permissible no. of solution cycles. ! ISORT : Code for sorting (1=ascending order, 2=descending ! order). ! IPRINT1 : Print code for printing intermidiate results ! (0=No print, -1=partial print, 1=full print). ! IPRINT2 : Print code for printing final results

! (0=No print, 1=print). ! NREAL : Total number of computed real roots. ! NCOMPL : Total number of computed complex roots. ! [XR]ndeg : Matrix of computed real roots. Also, contains the ! real part of complex roots (if any). Note that matrix ! contains the real roots in a specified order ! according to the value of ISORT. The real roots are ! placed in the first NREAL positions of the matrix. ! The real parts of any complex roots (also in an order ! according to the magnitude of y**2+z**2, for y+zi) ! are placed in the last NCOMPL positions of the ! matrix. ! [XIM]ndeg : Matrix of the imaginary part z of complex roots (if ! any). Note that matrix contains the imaginary part of ! the roots in the last NCOMPL positions. ! [FXR]ndeg : Matrix of computed f(ρ) in its first NREAL positions, ! if ρ=real root. Also, in the last NCOMPL positions it ! contains the real part of f(ρ), if f(ρ) is a complex ! number. ! [FXIM]ndeg : Matrix of computed image part of f(ρ), if f(ρ) is a ! complex number. ! KSOLVE : Solution code (0=Not Very Good Solution, 1=Excellent ! Solution) ! ------------------------------------------------------------------ ! SUBROUTINE BAIRSTOW (NDEG,A,P,Q,TOLPQRS,TOLDETS,TOLDETR,TOLC, & & TOLFX,NITMAX,NCYCMAX,ISORT,IPRINT1,IPRINT2, & & NREAL,NCOMPL,XR,XIM,FXR,FXIM,KSOLVE) ! IMPLICIT REAL*8 (A-H,O-Z) ! DIMENSION A(0:NDEG),AA(0:NDEG),B(0:NDEG),C(0:NDEG),XR(NDEG), & & XIM(NDEG),FXR(NDEG),FXIM(NDEG) COMPLEX*16 ZROOT ! ! ------------------------------------------------------------------ ! PRINT A MESSAGE IF ORDER NDEG<=2. THEN RETURN ! ------------------------------------------------------------------ ! IF (NDEG<=2) WRITE (*,"(/'***** Problem is of order n<=2'/)") IF (NDEG<=2) RETURN ! ! ------------------------------------------------------------------ ! PRINT ALL DATA

f(X) = 0.100000E+01 X** 5 + + -.170000E+02 X** 4 + + 0.124000E+03 X** 3 + + -.508000E+03 X** 2 + + 0.103500E+04 X** 1 + + -.875000E+03 Cycle No. 1 - Division No. 1 - Total Iterations 8 Cycle No. 1 - Division No. 2 - Total Iterations 6 ========================================================== Real Roots (Unsorted) ========================================================== Root No. 1 ¨ = 0.700000E+01 f(¨) = -.284217E-11 ========================================================== Complex Roots (Unsorted) ========================================================== Root No. 1 ρ = 0.200000E+01 + f(ρ) = 0.227374E-12 + 0.100000E+01 i -.568434E-13 i Root No. 2 ρ = 0.200000E+01 + f(ρ) = 0.227374E-12 + -.100000E+01 i 0.568434E-13 i Root No. 3 ρ = 0.300000E+01 + f(ρ) = 0.454747E-12 + 0.400000E+01 i 0.852651E-12 i Root No. 4 ρ = 0.300000E+01 + f(ρ) = 0.454747E-12 + -.400000E+01 i -.852651E-12 i ========================================================== Real Roots (Sorted) ========================================================== Root No. 1 ¨ = 0.700000E+01 f(¨) = -.284217E-11 ========================================================== Complex Roots (Sorted) ========================================================== Root No. 1 ρ = 0.200000E+01 + f(ρ) = 0.227374E-12 + 0.100000E+01 i -.568434E-13 i Root No. 2 ρ = 0.200000E+01 + f(ρ) = 0.227374E-12 + -.100000E+01 i 0.568434E-13 i Root No. 3 ρ = 0.300000E+01 + f(ρ) = 0.454747E-12 + -.400000E+01 i -.852651E-12 i Root No. 4 ρ = 0.300000E+01 + f(ρ) = 0.454747E-12 + 0.400000E+01 i 0.852651E-12 i

Page 16: SHMEIWSEIS

15

! ------------------------------------------------------------------ ! IF (IPRINT1==0) GO TO 10 ! WRITE (*,"(' f(X) = ',E12.6,' X**',I3,' +')") A(NDEG),NDEG DO I=NDEG-1,1,-1 WRITE (*,"(' + ',E12.6,' X**',I3,' +')") A(I),I END DO WRITE (*,"(' + ',E12.6/)") A(0) ! ! ------------------------------------------------------------------ ! INITIALIZE VARIABLES ! ------------------------------------------------------------------ ! 10 DO I=0,NDEG AA(I) = A(I) END DO ! NCYCLE = 0 3000 NCYCLE = NCYCLE + 1 KSOLVE = 1 ! N = NDEG NREAL = 0 NCOMPL = 0 DO I=1,NDEG FXR(I) = 1.00D+99 ; FXIM(I) = 1.00D+99 END DO ! ! ------------------------------------------------------------------ ! START A DIVISION OF f(x) BY (x**2+px+q) ! ------------------------------------------------------------------ ! NDIV = 0 2000 NDIV = NDIV + 1 ! B(N) = 0.00D+00 ; B(N-1) = 0.00D+00 C(N) = 0.00D+00 ; C(N-1) = 0.00D+00 ! NIT = 0 1000 NIT = NIT + 1 ! IF (IPRINT1==1) WRITE (*, & & "(/52(1H=)/'Cycle No. ',I3,' - Division No. ',I3, & & ' - Iteration No. ',I3/52(1H-)// & & 'Start with: p = ',E12.6,' q = ',E12.6)") & & NCYCLE,NDIV,NIT,P,Q ! ! ------------------------------------------------------------------ ! COMPUTE bo, b1, b2,..., bn-3, bn-2 COEFFICIENTS OF THE QUOTIENT ! POLYNOMIAL b(x). ! ------------------------------------------------------------------ ! DO I=N-2,0,-1 B(I) = A(I+2) - P*B(I+1) - Q*B(I+2) END DO ! ! ------------------------------------------------------------------ ! CHECK IF REMAINDER Rx+S=0 (INITIAL GUESSES FOR p & q CORRECT) ! ------------------------------------------------------------------ ! R = A(1) - P*B(0) - Q*B(1) S = A(0) - Q*B(0) ! IF (DABS(R)<=TOLPQRS.AND.DABS(S)<=TOLPQRS.AND.IPRINT1==1) & & WRITE (*,"(/'R = ',E12.6,' S = ',E12.6// & & 'Remainder Rx+S -> 0')") R,S ! IF (DABS(R)<=TOLPQRS.AND.DABS(S)<=TOLPQRS) GO TO 20 ! ! ------------------------------------------------------------------ ! COMPUTE TERMS ci of ck sequence. ! ------------------------------------------------------------------ ! DO I=N-2,0,-1 C(I) = -B(I+1) - P*C(I+1) - Q*C(I+2) END DO ! IF (IPRINT1==1) WRITE (*, & & "(/'--- ------------ ------------ ------------'/ & & ' n a b c '/ & & '--- ------------ ------------ ------------')") IF (IPRINT1<=0) GO TO 101 ! DO I=N,0,-1 WRITE (*,'(I3,3(2X,E12.6))') I,A(I),B(I),C(I) END DO ! ! ------------------------------------------------------------------ ! COMPUTE PARTIAL DERIVATIVES θR/dp, θR/θq, θS/θp, θS/θq ! ------------------------------------------------------------------ ! 101 DRDP = -B(0) - P*C(0) - Q*C(1) ; A11 = DRDP DRDQ = -B(1) - P*C(1) - Q*C(2) ; A12 = DRDQ DSDP = -Q*C(0) ; A21 = DSDP DSDQ = -B(0) - Q*C(1) ; A22 = DSDQ ! ! ------------------------------------------------------------------ ! SOLVE LINEAR SYSTEM FOR ∆p & ∆q: [∆p ∆q]T = [A]-1[R S]T ! ------------------------------------------------------------------ ! DET = A12*A21 - A11*A22 IF (DABS(DET)<=TOLDETS) DET = 0.00D+00 ! IF (DET==0.00) & & WRITE (*,"(/'***** Error in Subroutine Bairstow *****'/ & & '***** System for ∆p & ∆q: det = 0 *****')") IF (DET==0.00) STOP ! DP = (A22*R - A12*S)/DET DQ = -(A21*R - A11*S)/DET ! ! ------------------------------------------------------------------ ! UPDATE p & q ! ------------------------------------------------------------------ ! P = P + DP Q = Q + DQ ! IF (IPRINT1==1) & & WRITE (*,"(/' End with: p = ',E12.6,' q = ',E12.6)") P,Q ! ! ------------------------------------------------------------------ ! CHECK, FOR THE UPDATED p & q, IF |∆p| <= ε & |∆q| <= ε. ! ALTERNATIVELY, CHECK IF THE REMAINDER TERMS |R| <= ε & |S| <= ε ! (Uncomment the criterion you want to use) ! ------------------------------------------------------------------ ! !+++++ IF (IPRINT1==1) WRITE (*,"(/52(1H=))") IF ((DABS(DP)>TOLPQRS.OR.DABS(DQ)>TOLPQRS).AND.NIT<NITMAX) & & GO TO 1000 !+++++ ! R = A(1) - P*B(0) - Q*B(1) ! S = A(0) - Q*B(0) ! IF (IPRINT1==1) WRITE (*,"(/52(1H=))") ! IF ((DABS(R)>TOLPQRS.OR.DABS(S)>TOLPQRS).AND.NIT<NITMAX) & ! & GO TO 1000 !+++++ ! ! ------------------------------------------------------------------ ! FOR THE LAST UPDATED p & q, CALCULATE THE TWO ROOTS OF ! x**2+px+q = 0. FOR THESE ROOTS COMPUTE THE VALUE OF f(x) ! ------------------------------------------------------------------ ! 20 FXR1 = 0.00D+00 FXR2 = 0.00D+00 FXZR1 = 0.00D+00 FXZR2 = 0.00D+00 FXZIM1 = 0.00D+00 FXZIM2 = 0.00D+00 ! DET = P**2 - 4.00*Q

IF (DABS(DET)<=TOLDETR) DET = 0.00D+00 ! IF (DET) 21,22,22 ! 21 DET = DSQRT(-DET) ! NCOMPL = NCOMPL + 1 XR(NDEG+1-NCOMPL) = -0.50*P XIM(NDEG+1-NCOMPL) = 0.50*DET IF (DABS(XR(NDEG+1-NCOMPL))<=TOLC) XR(NDEG+1-NCOMPL) = 0.00D+00 IF (DABS(XIM(NDEG+1-NCOMPL))<=TOLC) XIM(NDEG+1-NCOMPL) = 0.00D+00 ZROOT = DCMPLX(XR(NDEG+1-NCOMPL),XIM(NDEG+1-NCOMPL)) ! CALL POLYC (AA,NDEG,ZROOT,FXZR1,FXZIM1) FXR(NDEG+1-NCOMPL) = FXZR1 FXIM(NDEG+1-NCOMPL) = FXZIM1 ! NCOMPL = NCOMPL + 1 XR(NDEG+1-NCOMPL) = -0.50*P XIM(NDEG+1-NCOMPL) = -0.50*DET IF (DABS(XR(NDEG+1-NCOMPL))<=TOLC) XR(NDEG+1-NCOMPL) = 0.00D+00 IF (DABS(XIM(NDEG+1-NCOMPL))<=TOLC) XIM(NDEG+1-NCOMPL) = 0.00D+00 ZROOT = DCMPLX(XR(NDEG+1-NCOMPL),XIM(NDEG+1-NCOMPL)) ! CALL POLYC (AA,NDEG,ZROOT,FXZR2,FXZIM2) FXR(NDEG+1-NCOMPL) = FXZR2 FXIM(NDEG+1-NCOMPL) = FXZIM2 GO TO 25 ! 22 NREAL = NREAL + 1 DET = DSQRT(DET) XR(NREAL) = 0.50*(-P+DET) ; ROOT = XR(NREAL) ! CALL POLYR (AA,NDEG,ROOT,FXR1) FXR(NREAL) = FXR1 FXIM(NREAL) = 0.00D+00 ! NREAL = NREAL + 1 XR(NREAL) = 0.50*(-P-DET) ; ROOT = XR(NREAL) ! CALL POLYR (AA,NDEG,ROOT,FXR2) FXR(NREAL) = FXR2 FXIM(NREAL) = 0.00D+00 ! ! ------------------------------------------------------------------ ! CHECK IF THIS PAIR OF ROOTS SATISFIES THE CONDITION f(ρ) <= ε. ! ------------------------------------------------------------------ ! 25 IF (DABS(FXR1)>TOLFX.OR.DABS(FXR2)>TOLFX.OR. & & DABS(FXZR1)>TOLFX.OR.DABS(FXZR2)>TOLFX.OR. & & DABS(FXZIM1)>TOLFX.OR.DABS(FXZIM2)>TOLFX) KSOLVE = 0 ! ! ------------------------------------------------------------------ ! SET THE QUOTIENT POLYNOMIAL OF DEGREE n-2 AS A NEW POLYNOMIAL OF ! DEGREE N = n - 2. ! IF N>=3 REPEAT THE PROCEDURE WITH THIS POLYNOMIAL. ! IF N<=2 CALCULATE ROOTS DIRECTLY. ! ------------------------------------------------------------------ ! FXR1 = 0.00D+00 FXR2 = 0.00D+00 FXZR1 = 0.00D+00 FXZR2 = 0.00D+00 FXZIM1 = 0.00D+00 FXZIM2 = 0.00D+00 ! KOD = 0 N = N - 2 ! IF (IPRINT1==-1) & & WRITE (*,"('Cycle No. ',I3,' - Division No. ',I3, & & ' - Total Iterations ',I3)") NCYCLE,NDIV,NIT ! GO TO (31,32), N ! DO I=N,0,-1 A(I) = B(I) END DO ! GO TO 2000 ! 31 KOD = 1 NREAL = NREAL + 1 XR(NREAL) = -B(0)/B(1) ; ROOT = XR(NREAL) ! CALL POLYR (AA,NDEG,ROOT,FXR1) FXR(NREAL) = FXR1 FXIM(NREAL) = 0.00D+00 GO TO 30 ! 32 DET = B(1)**2 - 4.00*B(2)*B(0) IF (DABS(DET)<=TOLDETR) DET = 0.00D+00 ! IF (DET) 41,42,42 ! 41 DET = DSQRT(-DET) ! NCOMPL = NCOMPL + 1 XR(NDEG+1-NCOMPL) = -0.50*B(1)/B(2) XIM(NDEG+1-NCOMPL) = 0.50*DET/B(2) IF (DABS(XR(NDEG+1-NCOMPL))<=TOLC) XR(NDEG+1-NCOMPL) = 0.00D+00 IF (DABS(XIM(NDEG+1-NCOMPL))<=TOLC) XIM(NDEG+1-NCOMPL) = 0.00D+00 ZROOT = DCMPLX(XR(NDEG+1-NCOMPL),XIM(NDEG+1-NCOMPL)) ! CALL POLYC (AA,NDEG,ZROOT,FXZR1,FXZIM1) FXR(NDEG+1-NCOMPL) = FXZR1 FXIM(NDEG+1-NCOMPL) = FXZIM1 ! NCOMPL = NCOMPL + 1 XR(NDEG+1-NCOMPL) = -0.50*B(1)/B(2) XIM(NDEG+1-NCOMPL) = -0.50*DET/B(2) IF (DABS(XR(NDEG+1-NCOMPL))<=TOLC) XR(NDEG+1-NCOMPL) = 0.00D+00 IF (DABS(XIM(NDEG+1-NCOMPL))<=TOLC) XIM(NDEG+1-NCOMPL) = 0.00D+00 ZROOT = DCMPLX(XR(NDEG+1-NCOMPL),XIM(NDEG+1-NCOMPL)) ! CALL POLYC (AA,NDEG,ZROOT,FXZR2,FXZIM2) FXR(NDEG+1-NCOMPL) = FXZR2 FXIM(NDEG+1-NCOMPL) = FXZIM2 GO TO 30 ! 42 DET = DSQRT(DET) ! NREAL = NREAL + 1 XR(NREAL) = 0.50*(-B(1)+DET)/B(2) ; ROOT = XR(NREAL) ! CALL POLYR (AA,NDEG,ROOT,FXR1) FXR(NREAL) = FXR1 FXIM(NREAL) = 0.00D+00 ! NREAL = NREAL + 1 XR(NREAL) = 0.50*(-B(1)-DET)/B(2) ; ROOT = XR(NREAL) ! CALL POLYR (AA,NDEG,ROOT,FXR2) FXR(NREAL) = FXR2 FXIM(NREAL) = 0.00D+00 ! ! ------------------------------------------------------------------ ! CHECK IF THESE LAST ROOTS SATISFY THE CONDITION f(ρ) <= ε. ! ------------------------------------------------------------------ ! 30 IF (DABS(FXR1)>TOLFX.OR.DABS(FXR2)>TOLFX.OR. & & DABS(FXZR1)>TOLFX.OR.DABS(FXZR2)>TOLFX.OR. & & DABS(FXZIM1)>TOLFX.OR.DABS(FXZIM2)>TOLFX) KSOLVE = 0 ! ! ------------------------------------------------------------------ ! PRINT THIS SET OF ROOTS (UNSORTED) ! ------------------------------------------------------------------ ! IF (IPRINT1==0) GO TO 40 ! WRITE (*,"(/58(1H=)/'Real Roots (Unsorted)'/58(1H=))") DO I=1,NREAL WRITE (*,"('Root No. ',I3,' ρ = ',E12.6,' f(ρ) = ', &

Page 17: SHMEIWSEIS

16

& E12.6)") I,XR(I),FXR(I) END DO ! WRITE (*,"(/58(1H=)/'Complex Roots (Unsorted)'/58(1H=))") DO I=NDEG,NREAL+1,-1 WRITE (*,"('Root No. ',I3,' ρ = ',E12.6,' + f(ρ) = ', & & E12.6,' +'/19X,E12.6,' i',11X,E12.6,' i')") & & NDEG+1-I,XR(I),FXR(I),XIM(I),FXIM(I) END DO ! ! ------------------------------------------------------------------ ! TRY A NEXT SOLUTION CYCLE WITH BETTER INITIAL APPROXIMATIONS FOR ! p & q. COMPUTE THESE APPROXIMATIONS USING THE "BEST" TWO REAL ! ROOTS OR COMPLEX CONJUGATE PAIR OF ROOTS, UP TO NOW. ! ------------------------------------------------------------------ ! 40 DO I=0,NDEG A(I) = AA(I) END DO ! INDEXR1 = 0 FXMINR1 = 1.00D+99 DO I=1,NREAL IF (DABS(FXR(I))<=FXMINR1) INDEXR1 = I IF (DABS(FXR(I))<=FXMINR1) FXMINR1 = DABS(FXR(I)) END DO ! INDEXR2 = 0 FXMINR2 = 1.00D+99 DO I=1,NREAL IF (I==INDEXR1) GO TO 45 IF (DABS(FXR(I))<=FXMINR2) INDEXR2 = I IF (DABS(FXR(I))<=FXMINR2) FXMINR2 = DABS(FXR(I)) 45 CONTINUE END DO ! INDEXC = 0 FXMINC = 1.00D+99 DO I=NREAL+1,NDEG FX = 0.50*(DABS(FXR(I)) + DABS(FXIM(I))) IF (FX<=FXMINC) INDEXC = I IF (FX<=FXMINC) FXMINC = FX END DO ! IF ((NREAL>1.AND.(INDEXR1==0.OR.INDEXR2==0)).OR.(NCOMPL>1.AND. & & INDEXC==0)) & & WRITE (*,"(/'***** ERROR: Cannot find a best pair of roots'/)") ! IF ((NREAL>1.AND.(INDEXR1==0.OR.INDEXR2==0)).OR.(NCOMPL>1.AND. & & INDEXC==0)) STOP ! KOD = 1 IF (FXMINC<FXMINR1.AND.FXMINC<FXMINR2) KOD = 2 GO TO (51,52), KOD ! 51 P = -(XR(INDEXR1)+XR(INDEXR2)) Q = XR(INDEXR1)*XR(INDEXR2) GO TO 60 ! 52 P = -2.00*XR(INDEXC) Q = (XR(INDEXC)**2) + (XIM(INDEXC)**2) ! 60 IF (NCYCLE<NCYCMAX.AND.KSOLVE==0) GO TO 3000 ! ! ------------------------------------------------------------------ ! SORT FINAL ROOTS ! ------------------------------------------------------------------ ! IF (NREAL>1) CALL SORTR (XR,FXR,NREAL,ISORT) IF (NCOMPL>1) CALL SORTC (XR(NREAL+1),XIM(NREAL+1),FXR(NREAL+1), & & FXIM(NREAL+1),NCOMPL,ISORT) ! ! ------------------------------------------------------------------ ! PRINT FINAL (SORTED) ROOTS ! ------------------------------------------------------------------ ! IF (IPRINT2==0) GO TO 70 ! WRITE (*,"(/58(1H=)/'Real Roots (Sorted)'/58(1H=))") DO I=1,NREAL WRITE (*,"('Root No. ',I3,' ρ = ',E12.6,' f(ρ) = ', & & E12.6)") I,XR(I),FXR(I) END DO ! WRITE (*,"(/58(1H=)/'Complex Roots (Sorted)'/58(1H=))") DO I=NREAL+1,NDEG WRITE (*,"('Root No. ',I3,' ρ = ',E12.6,' + f(ρ) = ', & & E12.6,' +'/19X,E12.6,' i',11X,E12.6,' i')") & & I-NREAL,XR(I),FXR(I),XIM(I),FXIM(I) END DO ! IF (NCYCLE==NCYCMAX.AND.KSOLVE==0) & & WRITE (*,"(/'***** Not very good solution *****'/)") ! 70 RETURN END ! ! ================================================================== ! | SUBROUTINE TO COMPUTE THE POLYNOMIAL VALUE FOR A | ! | REAL VARIABLE | ! | | ! | f(X) = anX**n + an-1X**n-1 + ..... + a2X**2 + a1X + ao = 0, | ! | | ! | Developed by M. G. Sfakianakis | ! | University of Patras, 2001 | ! | | ! ================================================================== ! SUBROUTINE POLYR (A,N,X,FX) ! IMPLICIT REAL*8 (A-H,O-Z) ! DIMENSION A(0:N) ! FX = A(N) DO I=N,1,-1 FX = FX*X + A(I-1) END DO ! RETURN END !

! ================================================================== ! | SUBROUTINE TO COMPUTE THE POLYNOMIAL VALUE FOR A | ! | COMPLEX VARIABLE | ! | | ! | f(X) = anX**n + an-1X**n-1 + ..... + a2X**2 + a1X + ao = 0, | ! | | ! | where: X = Z = a + bi | ! | | ! | Developed by M. G. Sfakianakis | ! | University of Patras, 2001 | ! | | ! ================================================================== ! SUBROUTINE POLYC (A,N,Z,FXZR,FXZIM) ! IMPLICIT REAL*8 (A-H,O-Z) ! DIMENSION A(0:N) COMPLEX*16 Z,FZ,TERM ! DUM = 0.00D+00 ! FZ = DCMPLX(A(N),DUM) DO I=N,1,-1 TERM = DCMPLX(A(I-1),DUM) FZ = FZ*Z + TERM END DO ! FXZR = DREAL(FZ) FXZIM = DIMAG(FZ) ! RETURN END ! ! ================================================================== ! | SUBROUTINE TO SORT THE ELEMENTS OF AN ARRAY [X] IN | ! | ASCENDING OR DESCENDING ORDER. | ! | A SECOND ARRAY [FX] (DEPENDED ON [X]) IS ALSO REARRANGED | ! | | ! | Developed by M. G. Sfakianakis | ! | University of Patras, 2001 | ! | | ! ================================================================== ! ! ------------------------------------------------------------------ ! Variable Description ! -------------------- ! ! [X]n : Array of dimension n for ordering. ! [FX]n : Array of dimension n for rearrangement. It depends on [X]. ! N : Array dimension. ! KORD : Sort order code: (1=ascending, 2=descending) ! ------------------------------------------------------------------ ! SUBROUTINE SORTR (X,FX,N,KORD) ! IMPLICIT REAL*8 (A-H,O-Z) ! DIMENSION X(N),FX(N) ! DO I=1,N-1 DO J=I+1,N GO TO (1,2), KORD 1 IF (X(I)-X(J)) 20,20,30 2 IF (X(I)-X(J)) 30,20,20 ! 30 TEMPX = X(I) X(I) = X(J) X(J) = TEMPX ! TEMPFX = FX(I) FX(I) = FX(J) FX(J) = TEMPFX ! 20 CONTINUE END DO END DO ! RETURN END ! ! ================================================================== ! | SUBROUTINE TO SORT THE ELEMENTS OF ARRAYS [X1] & [X2] IN | ! | ASCENDING OR DESCENDING ORDER ACCORDING TO THE MODULE | ! | mod = Sqrt[x1**2 + x2**2] | ! | ARRAYs [FX1] & [FX2] (DEPENDED ON [X1] & [X2] RESPECTIVELY) | ! | ARE ALSO REARRANGED | ! | | ! | Developed by M. G. Sfakianakis | ! | University of Patras, 2001 | ! | | ! ================================================================== ! ! ------------------------------------------------------------------ ! Variable Description ! -------------------- ! ! [X1]n : Array of dimension n for rearrangement. ! [X2]n : Array of dimension n for rearrangement. ! [FX1]n : Array of dimension n for rearrangement. It depends on ! [X1]. ! [FX2]n : Array of dimension n for rearrangement. It depends on ! [X2]. ! N : Array dimension. ! KORD : Sort order code: (1=ascending, 2=descending) ! ------------------------------------------------------------------ ! SUBROUTINE SORTC (X1,X2,FX1,FX2,N,KORD) ! IMPLICIT REAL*8 (A-H,O-Z) ! DIMENSION X1(N),X2(N),FX1(N),FX2(N) ! DO I=1,N-1 XXI = DSQRT((X1(I)**2)+(X2(I)**2)) DO J=I+1,N XXJ = DSQRT((X1(J)**2)+(X2(J)**2)) GO TO (1,2), KORD 1 IF (XXI-XXJ) 20,20,30 2 IF (XXI-XXJ) 30,20,20 ! 30 TEMPX1 = X1(I) X1(I) = X1(J) X1(J) = TEMPX1 ! TEMPX2 = X2(I) X2(I) = X2(J) X2(J) = TEMPX2 ! TEMPFX1 = FX1(I) FX1(I) = FX1(J) FX1(J) = TEMPFX1 ! TEMPFX2 = FX2(I) FX2(I) = FX2(J) FX2(J) = TEMPFX2 ! 20 CONTINUE END DO END DO ! RETURN END !

Page 18: SHMEIWSEIS

17

2.1 Η ΜΕΘΟ∆ΟΣ Crout Τα προβλήµατα της επίλυσης ενός συστήµατος γραµµικών εξισώσεων, της αντιστροφής ενός

τετραγωνικού πίνακα και της εύρεσης της τιµής της ορίζουσάς του, καθίστανται ιδιαιτέρως εύκολα µε

χρήση της µεθοδολογία του Crout βάσει της οποίας ένας τετραγωνικός πίνακας διασπάται σε γινόµενο

δύο ίσων διαστάσεων πινάκων, ενός κάτω (Lower) και ενός άνω (Upper) τριγωνικού (LU-

Decomposition). Η µεθοδολογία αυτή θεωρείται από τις πλέον αξιόπιστες για τους προηγούµενους

σκοπούς. Ο αλγόριθµος της διαδικασίας έχει ως εξής:

Κάθε τετραγωνικός πίνακας [Α]nxn µπορεί να γραφεί στη µορφή

⎥⎥⎥⎥

⎢⎢⎢⎢

⎥⎥⎥⎥

⎢⎢⎢⎢

=

⎥⎥⎥⎥

⎢⎢⎢⎢

⇔⋅=

nn

n

n

nnnnnnnn

n

n

nxnnxnnxn

u

uuuuu

lll

lll

aaa

aaaaaa

ULA

...00............

...0

...

...............0...0...0

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

...

...

][][][ 222

11211

21

2221

11

21

22221

11211

2.1.1)

Mία τέτοια διάσπαση µπορεί να χρησιµοποιηθεί για την επίλυση του γραµµικού συστήµατος

( ) ( ) nnnxnnxnnnxnnxnnnnxn bxULxU LbxA ][][][][][][][][][][ =⋅⋅=⋅⋅⇔=⋅ (2.1.2)

Προς το σκοπό αυτό τίθεται

nnxnn xUy ][][][ ⋅= (2.1.3)

οπότε επιλύεται ως προς τον πίνακα [y]n το σύστηµα

nnnxn byL ][][][ =⋅ (2.1.4)

και στη συνέχεια ως προς τον πίνακα [x]n το σύστηµα

nnnxn yxU ][][][ =⋅ (2.1.5)

Το πλεονέκτηµα της διάσπασης του αρχικού συστήµατος σε δύο τριγωνικά είναι ότι η επίλυση µε

τέτοιους πίνακες συντελεστών είναι εξαιρετικά εύκολη διαδικασία. Ετσι, το σύστηµα των εξισώσεων

(2.1.4) µπορεί να επιλυθεί µε προς τα εµπρός αντικατάσταση βάσει των γνωστών τύπων

niylb

ly

lby

i

jjiji

iii ,...,3,2 , 1 1

1

11

11

=⎥⎦

⎤⎢⎣

⎡−=

=

∑−

=

(2.1.6)

και το σύστηµα των εξισώσεων (2.1.5) µε προς τα πίσω αντικατάσταση βάσει των τύπων

Page 19: SHMEIWSEIS

18

1,...,2,1 , 1

1

−−=⎥⎦

⎤⎢⎣

⎡−=

=

∑+=

nnixuyu

x

uyx

n

ijjiji

iii

nn

nn

(2.1.7)

Ο καθορισµός των στοιχείων των πινάκων [L]nxn και [U]nxn προκύπτει από το σύστηµα στο οποίο

καταλήγει η σχέση (2.1.1), µετά τις πράξεις, για κάθε στοιχείο αij του αρχικού πίνακα [Α]nxn. Κάθε

στοιχείο aij προκύπτει από τα αθροίσµατα των γινοµένων των στοιχείων της i-στής γραµµής του [L]nxn

µε αυτά της j-στής στήλης του [U]nxn. Ετσι είναι

njiululula njinjijiij ,.....,3,2,1, , .....2211 =+++= (2.1.8)

Η σχέση (2.1.8) αφορά σύστηµα n2 εξισώσεων µε n2 + n αγνώστους, lij και uij, καθόσον τα στοιχεία

της κύριας διαγωνίου προσµετρώνται δύο φορές λόγω του ότι και οι δύο πίνακες [L]nxn και [U]nxn

έχουν στοιχεία επάνω της. Προκειµένου λοιπόν να επιλυθεί το σύστηµα των εξισώσεων (2.1.8) ως

προς τους αγνώστους lij και uij, θα πρέπει οι τιµές κάποιων n αγνώστων να ορισθούν αυθαίρετα.

Επί του θέµατος αυτού η µεθοδολογία του Crout ορίζει ότι η επίλυση των n2 εξισώσεων θα γίνεται

τµηµατικά, θέτοντας κατ’ αρχήν τους n αγνώστους lii ίσους µε τη µονάδα

nilii ,.....,3,2,1 , 1 == (2.1.9)

(εναλλακτικά, θα µπορούσαν να τεθούν τα uii ίσα µε τη µονάδα, αντί των lii). Ετσι, το αποτέλεσµα της

ανάπτυξης µέρους του συστήµατος των (2.1.8), αναφορικά µε τα στοιχεία a1j της πρώτης γραµµής του

πίνακα [Α]nxn (λαµβάνοντας υπ’ όψη τις (2.1.1) και (2.1.9) ) παίρνει τη µορφή

[ ] [ ]nn uuuuaaaa 11312111131211 .......... = (2.1.10)

∆ηλαδή, τα στοιχεία της πρώτης γραµµής του πίνακα [U]nxn ταυτίζονται µε αυτά της πρώτης γραµµής

του πίνακα [Α]nxn. Aκολούθως αναπτύσσεται το µέρος του συστήµατος των (2.1.8) αναφορικά µε τα

στοιχεία ai1 µε i > 1, δηλαδή της πρώτης στήλης του πίνακα [Α]nxn (εξαιρουµένου του στοιχείου a11 το

οποίο έχει ήδη ληφθεί υπ’ όψη στην (2.1.10) ), οπότε προκύπτει η µορφή

⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢

⋅=

⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢

=

⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢

1

41

31

21

11

1

41

31

21

111

1141

1131

1121

1

41

31

21

.....

1

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

nnnn a

aaa

u

l

lll

ul

ululul

a

aaa

(2.1.11)

Ετσι λοιπόν, έχουν προσδιορισθεί µέχρι στιγµής τα στοιχεία της πρώτης γραµµής του πίνακα [U]nxn

και αυτά της πρώτης στήλης του πίνακα [L]nxn, λαµβάνοντας αντίστοιχα υπ’ όψη την πρώτη γραµµή

και την πρώτη στήλη του πίνακα [Α]nxn.

Page 20: SHMEIWSEIS

19

Η διαδικασία συνεχίζεται λαµβάνοντας υπ’ όψη το µέρος των εξισώσεων (2.1.8) που αναφέρεται στα

στοιχεία a2j µε j > 1, δηλαδή αυτά της δεύτερης γραµµής του πίνακα [Α]nxn (εξαιρουµένου του

στοιχείου a21 το οποίο έχει ήδη ληφθεί υπ’ όψη στην (2.1.11) ), και ακολούθως µε το µέρος των

εξισώσεων (2.1.8) που αναφέρεται στα στοιχεία ai2 µε i > 2, δηλαδή αυτά της δεύτερης στήλης του

πίνακα [Α]nxn (εξαιρουµένου του στοιχείου a22 το οποίο έχει ήδη ληφθεί υπ’ όψη αµέσως

προηγούµενα). Ετσι προκύπτουν τα συστήµατα των σχέσεων

T

nn

T

n

T

nn

T

n ula

ulaula

u

uu

uul

uuluul

a

aa

⎥⎥⎥⎥

⎢⎢⎢⎢

−−

=

⎥⎥⎥⎥

⎢⎢⎢⎢

⎥⎥⎥⎥

⎢⎢⎢⎢

+

++

=

⎥⎥⎥⎥

⎢⎢⎢⎢

1212

132123

122122

2

23

22

2121

231321

221221

2

23

22

............................................ (2.1.12)

⎥⎥⎥⎥

⎢⎢⎢⎢

−−

⋅=

⎥⎥⎥⎥

⎢⎢⎢⎢

⎥⎥⎥⎥

⎢⎢⎢⎢

+

++

=

⎥⎥⎥⎥

⎢⎢⎢⎢

1212

124142

123132

22

2

42

32

222121

22421241

22321231

2

42

32

.................1

..............................ula

ulaula

ul

ll

ulul

ulululul

a

aa

nnnnnn

(2.1.13)

Σχηµατικά λοιπόν, η «σάρωση» των στοιχείων των τριών πινάκων γίνεται κατά περιοχές βάσει της

ιεράρχησης που φαίνεται κατωτέρω.

...000...............

...00

...0

...

,

1..................0...10...010...001

,

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

...

...

...

333

22322

1131211

321

3231

21

321

3333231

2232221

1131211

⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢

nn

n

n

n

nnnnnnnn

n

n

n

u

uuuuuuuuu

lll

lll

aaaa

aaaaaaaaaaaa

Συνοψίζοντας, η επίλυση του συστήµατος των n2 σε αριθµό εξισώσεων (2.1.8), ανάγεται στην

επίλυση των συνολικά 2n-1 συστηµάτων που αντιστοιχούν στα πλαίσια του ανωτέρω σχήµατος µε τη

σειρά που αναφέρονται.Ετσι, το σύστηµα των εξισώσεων των πλαισίων 1 δίνει τα uij της πρώτης

γραµµής, των πλαισίων 2 δίνει τα lij της πρώτης στήλης, των πλαισίων 3 τα uij της δεύτερης γραµµής,

κ.ο.κ.

1 3 5 … 2n-1 1 3 5 … 2n-1

2 4 6 2n-2 2 4 6 2n-2

Page 21: SHMEIWSEIS

20

Επαληθεύοντας, τα n οριζόντια πλαίσια µε αρίθµηση 1, 3, 5,…, 2n-1 περιέχουν αντίστοιχα n, n-1, n-2,

..., n-(n-1) στοιχεία. Αθροίζοντας, προκύπτουν n2-(1+2+3+…..+n-1) στοιχεία. Tα n-1 κατακόρυφα

πλαίσια µε αρίθµηση 2, 4, 6,...,2n-2 περιέχουν αντίστοιχα n-1, n-2, n-3, …,n-(n-1) στοιχεία.

Αθροίζοντας, προκύπτουν n(n-1)-(1+2+3+…..+n-1). Αρα συνολικά όλα τα πλαίσια περιέχουν

2222

)1(2

2

1

1

)1.....321(2)1( nnnnnnnnnn

nnkn

k

=+−−+=

−++++−−+

−=−

=

4444 34444 21

στοιχεία, όπως και έπρεπε.

Η παραπάνω διαδικασία υπολογισµού των uij και lij γενικεύεται υπολογίζοντας τα στοιχεία urj της r

γραµµής του πίνακα [U]nxn εφαρµόζοντας τον τύπο

∑−

=

+=−=1

1,.....,1, ,

r

kkjrkrjrj nrrjulau (2.1.14)

και αµέσως µετά υπολογίζοντας τα στοιχεία lir της r στήλης του πίνακα [L]nxn εφαρµόζοντας τον τύπο

nrriulau

lr

kkrikir

rrir ,.....,2,1 , 1 1

1++=⎟

⎞⎜⎝

⎛−= ∑

= (2.1.15)

Οι σχέσεις (2.1.14) και (2.1.15) πρέπει να εφαρµόζονται διαδοχικά για κάθε τιµή του r, µε r =

1,2,…..,n. Στiς σχέσεις αυτές όταν r = 1 οι όροι µε τα αθροίσµατα είναι µηδενικοί (γιατί;).

Εύκολα διαφαίνεται ότι οι προαπαιτούµενες τιµές των u και l που υπεισέρχονται στις σχέσεις (2.1.14)

και (2.1.15), προκειµένου να υπολογισθούν επόµενα στοιχεία urj και lir για µία συγκεκριµένη τιµή του

r, έχουν υπολογισθεί σε προηγούµενα στάδια για προηγούµενες τιµές του r.

Προκειµένου να προγραµµατισθεί η ανωτέρω διαδικασία διάσπασης σε Η/Υ, µπορεί να γίνει

εκµετάλευση του γεγονότος ότι κάθε στοιχείο αij χρειάζεται από τις (2.1.14) και (2.1.15) µόνο µία

φορά, οπότε στη θέση του µπορεί να εγγράφεται κατάλληλα το στοιχείο lij ή το uij. Συνεπώς δεν

απαιτείται ορισµός ξεχωριστών πινάκων [L]nxn και [U]nxn στη µνήµη του Η/Υ. Στην υπορουτίνα

LUDCMP που ακολουθεί γίνεται εκµετάλευση αυτού του γεγονότος, οπότε µετά το τέλος της

διαδικασίας διάσπασης ο αρχικός πίνακας [Α]nxn επιστρέφει από την υπορουτίνα µε τη µορφή

⎥⎥⎥⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢⎢⎢⎢

=

−−−−−−−

nnnnnnnn

nnnnnnnn

nn

nn

nn

nn

nxn

ullllluullll

uuullluuuulluuuuuluuuuuu

A

1,4321

,11,14,13,12,11,1

41,444434241

31,334333231

21,224232221

11,114131211

...

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

...

...

...

...

][ (2.1.16)

Page 22: SHMEIWSEIS

21

∆ηλαδή αποτελείται από µία υπέρθεση των πινάκων [L]nxn και [U]nxn, εξαιρουµένων των στοιχείων

lii = 1, i = 1,2,…,n.

Παράδειγµα 2.1.1

Να επιλυθεί το σύστηµα

⎥⎥⎥

⎢⎢⎢

−=

⎥⎥⎥

⎢⎢⎢

⎡⋅

⎥⎥⎥

⎢⎢⎢

−−

5147

122321213

3

2

1

xxx

Κατ’ αρχήν διασπάται ο πίνακας των [Α]3x3 των συντελεστών των αγνώστων βάσει της µεθοδολογίας

του Crout. Εφαρµόζονται οι τύποι (14) και (15) µε την παρακάτω ιεράρχηση.

⎥⎥⎥

⎢⎢⎢

−−

−=

122321213

][ 33xA

⎪⎩

⎪⎨

=⇒=−=⇒=

=⇒=⇒===⇒=→

2 3123 1

3,2,1 , 0-1)14.1.2(

13

12

11

111

ujujuj

jaaur jjj

( )⎪⎪⎩

⎪⎪⎨

=⇒=

=⇒=⇒==−=⇒=→

323

312

3,2 , 011)15.1.2(

31

21

11

11

111

li

lii

uaa

ulr i

ii

⎪⎪⎩

⎪⎪⎨

=⇒⋅−=−=⇒=

=⇒−−=−=⇒=⇒

⇒==−=⇒=→ ∑=−

=

37 2

3133

37)1(

3122

32 , 2)14.1.2(

2313212323

2212212222

112

11212222

uulauj

uulauj

,ju-l aulaurk

jjkjkjj

( ) =−=⇒=⎟⎠

⎞⎜⎝

⎛−=⇒=→ ∑

=−

=123132

2232

112

122

222

13 , 12)15.1.2( ulau

liulau

lrk

kikii

(1) - r = 1

(3) - r = 2

(5) - r = 3

(2) (4) r = 1 r = 2

Page 23: SHMEIWSEIS

22

74)1(

322

73 32 −=⇒⎟

⎠⎞

⎜⎝⎛ −−−= l

( ) 137

742

321

3 , 3)14.1.2(

332332133133

2

133

213

13333333

−=⇒⎥⎦

⎤⎢⎣

⎡⋅⎟⎠⎞

⎜⎝⎛−+⋅−−=+−=

=−=⇒=−=⇒=→ ∑∑=

=−

=

uulula

ulaujulaurk

kkk

kjkjj

Αρα είναι

⎥⎥⎥

⎢⎢⎢

−=

⎥⎥⎥

⎢⎢⎢

−=

10037370

213][ ,

174320131001

][ 3333 xx UL

Το γινόµενο [L]3x3[U]3x3 πράγµατι επαληθεύει τη σχέση (2.1.1).

Εν συνεχεία εφαρµόζονται οι σχέσεις (2.1.6) για την επίλυση του συστήµατος (2.1.4).

( )

( )[ ]

⎪⎪⎪⎪

⎪⎪⎪⎪

−=⇒

⇒⎭⎬⎫

⎩⎨⎧

⎥⎦

⎤⎢⎣

⎡⎟⎠⎞

⎜⎝⎛−+⋅−−=+−=⎥

⎤⎢⎣

⎡−=⇒=

=⇒⎟⎠⎞

⎜⎝⎛ ⋅−=−=⎥

⎤⎢⎣

⎡−=⇒=

⇒=⎥⎦

⎤⎢⎣

⎡−=

=⇒==

=−

=

=−

=

=

3

335

747

325

11113

3357

3114

11112

,...,3,2 , 1

717

3

232131333

213

133

333

2121222

112

122

222

1

1

111

11

y

ylylbl

ylbl

yi

yylbl

ylbl

yi

niylbl

y

ylby

jjj

jjj

i

jjiji

iii

Τέλος εφαρµόζονται οι σχέσεις (2.1.7) για την επίλυση του συστήµατος (2.1.5).

( )

( )[ ] ( )[ ] ⎪⎪

⎪⎪

=⇒⋅+⋅−−=+−=⎥⎦

⎤⎢⎣

⎡−=⇒=

=⇒⎟⎠⎞

⎜⎝⎛ ⋅−=−=⎥

⎤⎢⎣

⎡−=⇒=

⇒=⎥⎦

⎤⎢⎣

⎡−=

=⇒−−

==

=

=+=

=

=+=

=

+=

13221731111

2337

335

73112

1,2 , 1

313

1313212111

3

21111

111

2323222

3

31222

222

3

1

333

33

xxuxuyu

xuyu

xi

xxuyu

xuyu

xi

ixuyu

x

xuyx

n

jjj

n

jjj

n

ijjiji

iii

Ετσι, η τελική λύση του συστήµατος είναι

Page 24: SHMEIWSEIS

23

⎥⎥⎥

⎢⎢⎢

⎡=

⎥⎥⎥

⎢⎢⎢

⎡=

321

][

3

2

1

13

xxx

x x

Εύρεση αντιστρόφου πίνακα

Ο αντίστροφος πίνακας ενός τετραγωνικού πίνακα [Α]nxn µπορεί να προκύψει στήλη-στήλη σαν

επίλυση διαδοχικών συστηµάτων του τύπου [Α][x]=[b], θεωρώντας ότι σε κάθε επίλυση οι

συντελεστές [b] θα είναι τα στοιχεία µιάς στήλης του µοναδιαίου πίνακα και οι άγνωστοι [x] θα είναι

τα στοιχεία της αντίστοιχης στήλης του ζητούµενου αντιστρόφου πίνακα. ∆ηλαδή, εάν *ija είναι τα

στοιχεία του ζητουµένου αντιστρόφου πίνακα, αρκεί η επίλυση των n συστηµάτων

⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢

=

⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢

=

⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢

=

⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢

=

⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢

1...000

......

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

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

0...010

......

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

0...001

......

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

1...000...............0...1000...0100...001

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

...

...

...

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

...

...

...

*

*3

*2

*1

321

3333231

2232221

1131211

*2

*32

*22

*12

321

3333231

2232221

1131211

*1

*31

*21

*11

321

3333231

2232221

1131211

][][

**3

*2

*1

*3

*33

*32

*31

*2

*23

*22

*21

*1

*13

*12

*11

][

321

3333231

2232221

1131211

1

nn

n

n

n

nnnnn

n

n

n

nnnnnn

n

n

n

nnnnnn

n

n

n

IA

nnnnn

n

n

n

A

nnnnn

n

n

n

a

aaa

aaaa

aaaaaaaaaaaa

a

aaa

aaaa

aaaaaaaaaaaa

a

aaa

aaaa

aaaaaaaaaaaa

aaaa

aaaaaaaaaaaa

aaaa

aaaaaaaaaaaa

nxnnxnnxn

444 3444 214444 34444 214444 34444 21

(2.1.17)

Page 25: SHMEIWSEIS

24

Παράδειγµα 2.1.2

Να ευρεθεί ο αντίστροφος του πίνακα των συντελεστών των αγνώστων του παραδείγµατος 2.1.1.

Βάσει των σχέσεων (2.1.17) αρκεί η επίλυση των τριών συστηµάτων

⎥⎥⎥

⎢⎢⎢

⎡=

⎥⎥⎥

⎢⎢⎢

⋅⎥⎥⎥

⎢⎢⎢

−−

⎥⎥⎥

⎢⎢⎢

⎡=

⎥⎥⎥

⎢⎢⎢

⋅⎥⎥⎥

⎢⎢⎢

−−

⎥⎥⎥

⎢⎢⎢

⎡=

⎥⎥⎥

⎢⎢⎢

⋅⎥⎥⎥

⎢⎢⎢

−−

100

122321213

, 010

122321213

, 001

122321213

*33

*23

*13

*32

*22

*12

*31

*21

*11

aaa

aaa

aaa

Η επίλυση των τριών συστηµάτων γίνεται µε τη µέθοδο Crout όπως ακριβώς στο παράδειγµα 2.1.1.

Τελικά προκύπτει

⎥⎥⎥

⎢⎢⎢

−−−

−=−

17/47/611117/57/4

][ 133xA

Οι πράξεις αφήνονται ως άσκηση στον αναγνώστη.

Εύρεση ορίζουσας πίνακα

Εύκολα µπορεί να αποδειχθεί ότι η ορίζουσα ενός διασπασµένου τετραγωνικού πίνακα κατά το

σχήµα L-U δίνεται από τη σχέση

∏=

==n

jjjnxnnxn uAA

1

]det[ (2.1.18)

Παράδειγµα 2.1.3

Η ορίζουσα του πίνακα των συντελεστών των αγνώστων του παραδείγµατος 2.1.1 θα είναι

7)1(373

33−=−⋅⋅=

xA

Υπορουτίνα Μεθόδου Crout σε FORTRAN 90/95 Η υπορουτίνα LUDCMP είναι γραµµένη σε FORTRAN 90/95. Ολες οι πραγµατικές µεταβλητές

είναι διπλής ακρίβειας (8 bytes). Στην υπορουτίνα εισάγεται η µεταβλητή-πίνακας [Α]nxn και

εκτελείται η διάσπασή του βάσει των σχέσεων (2.1.14-16), τροποποιηµένων καθ’ όσον ακολουθείται

διαφορετική σειρά «σάρωσης» γραµµών και στηλών από την προαναφερθείσα. Ο πίνακας εισάγεται

µε τη µορφή της (2.1.1) και επιστρέφει µε τη µορφή της (2.1.16), οπότε οι αρχικές τιµές του θα έχουν

χαθεί.

Στην υπορουτίνα εισάγονται και επιστρέφουν οι παρακάτω µεταβλητές:

[Α]NPxNP : Ο προς διάσπασιν πίνακας [Α] διαστάσεων nxn.

N, NP : Μεταβλητές ίσες µε τη διάσταση n του πίνακα [Α].

Page 26: SHMEIWSEIS

25

[INDX]NP : Mονοδιάστατος πίνακας που κρατά την ιστορία των αντιµεταθέσεων των γραµµών,

λόγω της έρευνας για κατάλληλο διαιρέτη της (2.1.15) (τροποποιηµένης).

D : Μεταβλητή που επιστρέφει µε την τιµή ±1 το πρόσηµο της οποίας εξαρτάται από το

αν ο αριθµός των αντιµεταθέσεων των γραµµών είναι άρτιος ή περιττός αντίστοιχα.

Υπορουτίνα για την Προς τα Πίσω Αντικατάσταση σε FORTRAN 90/95 Η υπορουτίνα LUBKSB είναι γραµµένη σε FORTRAN 90/95. Ολες οι πραγµατικές µεταβλητές

είναι διπλής ακρίβειας (8 bytes). Η υπορουτίνα εκτελεί την τελική επίλυση του συστήµατος (2.1.2)

βάσει των σχέσεων (2.1.3)-(2.1.7). Στην υπορουτίνα εισάγεται η µεταβλητή-πίνακας [Α]nxn µε τη

µορφή της (2.1.16) η οποία θα έχει προκύψει από ενωρίτερη κλήση της υπορουτίνας LUDCMP.

Στην υπορουτίνα εισάγονται και επιστρέφουν οι παρακάτω µεταβλητές:

[Α]NPxNP : Ο ήδη διασπασµένος πίνακας [Α] διαστάσεων nxn.

N, NP : Οπως στην υπορουτίνα LUDCMP.

[INDX]NP : Οπως στην υπορουτίνα LUDCMP.

[B]NP : Μονοδιάστατος πίνακας όπου αρχικά περιέχει τους συντελεστές bi του συστήµατος

(2.1.2). Μετά την εκτέλεση της υπορουτίνας, ο πίνακας [Β]NP επιστρέφει µε τις

τιµές των αγνώστων [x]n, οπότε οι αρχικές τιµές του bi θα έχουν χαθεί.

Συνοψίζοντας, το σετ των δύο αυτών υπορουτινών µπορεί να χρησιµοποιηθεί για τους παρακάτω

σκοπούς µε τους τρόπους που αναφέρονται:

• Επίλυση συστήµατος γραµµικών εξισώσεων: [Α]nxn[x]n = [b]n

Aρκεί η κλήση των δύο υπορουτινών: ............................. CALL LUDCMP (A,N,NP,INDX,D) CALL LUBKSB (A,N,NP,INDX,B) .............................

Για µετέπειτα επίλυση του ιδίου συστήµατος αλλά µε διαφορετικούς συντελεστές bi αρκεί να

καλείται µόνον η LUBKSB µε τους συντελεστές αυτούς στη θέση του πίνακα [Β]n.

• Εύρεση αντιστρόφου πίνακα: [Α]-1nxn

Το ακόλουθο σέτ εντολών υλοποιεί τη διαδικασία επίλυσης των συστηµάτων (2.1.17).

...................................... DIMENSION A(NP,NP),A1(NP,NP),INDX(NP) ...................................... N = NP DO I=1,N DO J=1,N A1(I,J) = 0.00 END DO A1(I,I) = 1.00

END DO

Page 27: SHMEIWSEIS

26

CALL LUDCMP (A,N,NP,INDX,D) DO 30 J=1,N CALL LUBKSB (A,N,NP,INDX,A1(1,J))

END DO ................................

Η µεταβλητή-πίνακας [Α1]nxn αναφέρεται στον ζητούµενο αντίστροφο πίνακα και εισάγεται στην

υπορουτίνα LUBKSB τµηµατικά κατά στήλες.

• Εύρεση ορίζουσας πίνακα [Α]nxn

Το ακόλουθο σέτ αντολών υλοποιεί τη διαδικασία της σχέσης (2.1.18). ............................... CALL LUDCMP (A,N,NP,INDX,D) DET = 1.00D+00 DO J=1,N DET = DET*A(J,J)

END DO ...............................

Η τιµή της ορίζουσας εµπεριέχεται στη µεταβλητή DET.

Ακολουθούν οι λίστες των εντολών των δύο υπορουτινών LUDCMP και LUBKSB.

! ================================================================== ! | SUBROUTINE TO PERFORM THE L-U DECOMPOSITION ON A REAL MATRIX | ! | | ! | CROUT METHOD | ! | | ! | Original routine from the book: | ! | Numerical Recipes, The Art of Scientific Computing (FORTRAN | ! | Version). By: W.H. Press, et al, 1992 ed. | ! | | ! | FORTRAN 90/95 modification by: M. G. Sfakianakis | ! | M.G. Sfakianakis, University of Patras, 2001 | ! | | ! ================================================================== ! ! ------------------------------------------------------------------ ! Variable Description ! -------------------- ! ! [A]NPxNP : Matrix to be decomposed. ! NP, N : Physical matrix dimension, n. ! [INDX]NP : Records the row permutation effected by the partial ! pivoting. ! D : Output as +1 or –1 depending on whether the number of ! row interchanges is even or odd, respectively. ! ------------------------------------------------------------------ ! SUBROUTINE LUDCMP (A,N,NP,INDX,D) ! IMPLICIT REAL*8 (A-H,O-Z) ! PARAMETER (NMAX=10000,TINY=1.00D-20) ! DIMENSION A(NP,NP),INDX(NP),VV(NMAX) ! D = 1.00D+00 ! DO 12 I=1,N AAMAX = 0.00D+00 ! DO 11 J=1,N IF (DABS(A(I,J))>AAMAX) AAMAX = DABS(A(I,J)) 11 CONTINUE ! IF (AAMAX==0.00D+00) WRITE (*,"(/2(/A)/A,I5)") & & ' *************** ERROR ***************', & & ' SUBROUTINE LUDCMP : Singular Matrix', & & ' ROW No. : ',I ! IF (AAMAX==0.00) STOP ! VV(I)=1.00/AAMAX 12 CONTINUE ! DO 19 J=1,N ! DO 14 I=1,J-1 SUM = A(I,J) ! DO 13 K=1,I-1 SUM = SUM - A(I,K)*A(K,J) 13 CONTINUE ! A(I,J) = SUM 14 CONTINUE ! AAMAX = 0.00D+00 ! DO 16 I=J,N SUM = A(I,J) ! DO 15 K=1,J-1 SUM = SUM - A(I,K)*A(K,J) 15 CONTINUE ! A(I,J) = SUM DUM = VV(I)*DABS(SUM) IF (DUM>=AAMAX) THEN IMAX = I AAMAX = DUM ENDIF ! 16 CONTINUE ! IF (J/=IMAX) THEN !

DO 17 K=1,N DUM = A(IMAX,K) A(IMAX,K) = A(J,K) A(J,K) = DUM 17 CONTINUE ! D = -D VV(IMAX) = VV(J) ENDIF ! INDX(J) = IMAX IF (A(J,J)==0.00) A(J,J) = TINY IF (J/=N) THEN DUM = 1.00/A(J,J) ! DO 18 I=J+1,N A(I,J) = A(I,J)*DUM 18 CONTINUE ! ENDIF ! 19 CONTINUE ! RETURN END !

Page 28: SHMEIWSEIS

27

! ================================================================== ! | SUBROUTINE TO SOLVE A SET OF N LINEAR EQUATIONS [A][X]=[B] | ! | WHERE [A] IS IN DECOMPOSED FORM OF THE TYPE L-U | ! | | ! | CROUT METHOD (continued for system solution) | ! | | ! | Original routine from the book: | ! | Numerical Recipes, The Art of Scientific Computing (FORTRAN | ! | Version). By: W.H. Press, et al, 1992 ed. | ! | | ! | FORTRAN 90/95 modification by: M. G. Sfakianakis | ! | M.G. Sfakianakis, University of Patras, 2001 | ! | | ! ================================================================== ! ! ------------------------------------------------------------------ ! Variable Description ! -------------------- ! ! [A]NPxNP : Decomposed matrix [A]. ! NP, N : Physical matrix dimension, n. ! [INDX]NP : Records the row permutation effected by the partial ! pivoting. ! [B]NP : Input as the right-hand side vector [B] and returns ! with the solution [X]. ! ------------------------------------------------------------------ ! SUBROUTINE LUBKSB (A,N,NP,INDX,B) ! IMPLICIT REAL*8 (A-H,O-Z) ! DIMENSION A(NP,NP),INDX(NP),B(NP) !

II = 0 ! DO 12 I=1,N LL = INDX(I) SUM = B(LL) B(LL) = B(I) IF (II/=0) THEN ! DO 11 J=II,I-1 SUM = SUM - A(I,J)*B(J) 11 CONTINUE ! ELSE IF (SUM/=0.00) THEN II = I ENDIF B(I) = SUM 12 CONTINUE ! DO 14 I=N,1,-1 SUM = B(I) ! DO 13 J=I+1,N SUM = SUM - A(I,J)*B(J) 13 CONTINUE ! B(I) = SUM/A(I,I) 14 CONTINUE ! RETURN END !

2.2 Η ΜΕΘΟ∆ΟΣ Cholesky H µέθοδος Cholesky αναφέρεται στην εύρεση του αντιστρόφου ενός πίνακα [Α]nxn θεωρώντας ότι

αυτός είναι συµµετρικός και θετικά ορισµένος. Υπενθυµίζεται ότι ένας πίνακας θεωρείται θετικά

ορισµένος εάν ισχύει η συνθήκη

0][][][ >⋅⋅ nnxnTnxn XAX (2.2.1)

για κάθε µη µηδενικό διάνυσµα [Χ]n.

Γραµµικά συστήµατα της µορφής

nnxnnnnnxn bAxbxA ][][][][][][ 1 ⋅=⇔=⋅ − (2.2.2)

όπου ο πίνακας [Α]nxn των συντελεστών των αγνώστων πληρεί τις παραπάνω ιδιότητες απαντώνται µε

ιδιαίτερη συχνότητα σε προβλήµατα Μηχανικής.

Ο αλγόριθµος βασίζεται στην ιδιότητα βάσει της οποίας ένας συµµετρικός πίνακας µπορεί να

διασπασθεί κατά το σχήµα

⎥⎥⎥⎥

⎢⎢⎢⎢

⎥⎥⎥⎥

⎢⎢⎢⎢

=

⎥⎥⎥⎥

⎢⎢⎢⎢

⇔⋅=

nn

n

n

nnnnnnnn

n

n

Tnxnnxnnxn

l

lllll

lll

lll

aaa

aaaaaa

LLA

...00............

...0

...

...............0...0...0

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

...

...

][][][ 222

12111

21

2221

11

21

22221

11211

(2.2.3)

Προκειµένου να υπολογισθούν οι όροι lij του πίνακα [L]nxn, εκτελούνται οι πράξεις της (2.2.3) οπότε

προκύπτει το ακόλουθο σύστηµα προσδιορισµού των όρων αυτών

Page 29: SHMEIWSEIS

28

( )

⎪⎪⎪⎪⎪⎪⎪⎪

⎪⎪⎪⎪⎪⎪⎪⎪

−=

−=

−=

=

=

=

⎪⎪⎪⎪⎪⎪

⎪⎪⎪⎪⎪⎪

=+++

=+

=+

=

==

∑−

=

1

1

2

2212122

2212222

1111

111221

1111

222

21

2222121

22222

221

1111

122111

112

11

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

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

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

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

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

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

n

jnjnnnn

nnn

nn

nnnnnn

nnn

nn

lal

lllal

lal

lal

lalal

alll

allll

all

all

allal

(2.2.4)

Εύκολα προκύπτει ότι οι σχέσεις (2.2.4) µπορούν να γενικευθούν στις σχέσεις

1,.....,2,1 ,

1

1 −=−

=∑−

= kil

llal

ii

i

jkjijki

ki (2.2.5α)

∑−

=

−=1

1

2k

jkjkkkk lal (2.2.5β)

Οι σχέσεις (2.2.5) εκτελούνται για k=1,2,…..,n. Για µία συγκεκριµένη γραµµή k >1 εκτελείται πρώτα

η (2.2.5α) και µετά η (2.2.5β). Ειδικά για την πρώτη γραµµή, k =1, η (2.2.5α) παραλείπεται. Βάσει

λοιπόν αυτής της ιεράρχησης, τα στοιχεία του πίνακα [L]nxn υπολογίζονται κατά γραµµές.

Είναι προφανές ότι η υπόριζος ποσότητα της (2.2.5β) θα πρέπει να προκύπτει θετική. Η απαίτηση

αυτή ικανοποιείται από την ιδιότητα του θετικά ορισµένου πίνακα.

Εν συνεχεία, από τη σχέση (2.2.3) προκύπτει ότι για την εύρεση του αντιστρόφου του πίνακα [Α]nxn

ισχύει

( ) ( ) ( ) 111111 ][][][][][][][][][][ −−−−−− ⋅=⋅=⋅=⇔⋅= nxnT

nxnnxnTnxn

Tnxnnxnnxn

Tnxnnxnnxn LLLLLLALLA (2.2.6)

Εποµένως για την εύρεση του αντιστρόφου του πίνακα [Α]nxn απαιτείται η εύρεση του αντιστρόφου

του πίνακα [L]nxn ο οποίος θα είναι επίσης κάτω τριγωνικός (γιατί;). Eάν λοιπόν [Χ]nxn είναι ο

αντίστροφος του [L]nxn τότε είναι

⎥⎥⎥⎥

⎢⎢⎢⎢

=

⎥⎥⎥⎥

⎢⎢⎢⎢

⎥⎥⎥⎥

⎢⎢⎢⎢

⇔=⋅

1...00............0...100...01

...............0...0...0

...............0...0...0

][][][

21

2221

11

21

2221

11

nnnnnnnn

nxnnxnnxn

xxx

xxx

lll

lll

IXL (2.2.7)

Page 30: SHMEIWSEIS

29

Για την επίλυση του συστήµατος (2.2.7) υιοθετείται η λογική της κατά στήλες επίλυσης των

αγνώστων του πίνακα [Χ]nxn, κατ’ αναλογίαν µε το σύστηµα (2.1.17). Ετσι προκύπτουν n γραµµικά

συστήµατα της µορφής (2.1.4), η συνολική λύση των οποίων περιγράφεται από τις σχέσεις

⎩⎨⎧

=≠

=

=⎥⎦

⎤⎢⎣

⎡−=

=

∑−

=

kiki

b

nixlbl

x

lb

x

ik

i

jjkijik

iiik

kk

, 1 , 0

,...,3,2 , 1 1

1

11

11

(2.2.8)

Οι σχέσεις (2.2.8) έχουν προκύψει από γενίκευση-προσαρµογή των σχέσεων (2.1.6) στο εν λόγω

σύστηµα (2.2.7) και εφαρµόζονται για k =1,2,…..,n. Oι µηδενικοί όροι των στηλών του πίνακα [Χ]nxn

µπορούν να προκύπτουν από την εφαρµογή των (2.2.8). Ωστόσο, ο υπολογισµός των µηδενικών όρων

µπορεί να αποφεύγεται εάν η δεύτερη σχέση των (2.2.8) εφαρµόζεται για i=k,k+1,…..,n. Οι τελευταίοι

συλλογισµοί µπορούν να ενσωµατωθούν στις σχέσεις (2.2.8) οπότε προκύπτει η τελική µορφή

επίλυσης του συστήµατος (2.2.7) ως

⎪⎪⎪⎪

⎪⎪⎪⎪

++=⎥⎦

⎤⎢⎣

⎡−

=⎥⎦

⎤⎢⎣

⎡−

−=

=

⎩⎨⎧

==

=

∑−

=

=

nkkixll

kixll

ki

x

nkkl

x

i

jjkij

ii

i

jjkij

iiik

k

,...,2,1 , 1

, 11

1,...,3,2 , 0

,.....,3,2 , 01 , 1

1

1

1

1

111

(2.2.9)

Παράδειγµα 2.2.1

Να επιλυθεί µε τη µέθοδο Cholesky το σύστηµα

⎥⎥⎥⎥

⎢⎢⎢⎢

=

⎥⎥⎥⎥

⎢⎢⎢⎢

⎥⎥⎥⎥

⎢⎢⎢⎢

1452906340

30

246126434126109363

43362924321

4

3

2

1

xxxx

Κατ’ αρχήν εφαρµόζονται οι σχέσεις (2.2.5) για την εύρεση του πίνακα [L]4x4.

(2.2.5β) 111 111111 =⇒==⇒=→ lalk

Page 31: SHMEIWSEIS

30

(2.2.5α) 2121 , 2 21

11

2121

22 =⇒==⇒==⇒=→ l

la

lila

lkii

ii

(2.2.5β) 52292 2222

212222 =⇒−=−=⇒=→ llalk

(2.2.5α)

⎪⎪⎩

⎪⎪⎨

=⇒⋅−

=−

=

=⇒==⇒=

−=⇒=→

∑−

=

65

3236

313

2,1 , 3

3222

31213232

3111

3131

1

133

3

ll

llal

lla

li

l

llalk

ii

i

jjiji

i

(2.2.5β) 8631093 33222

3223133

2

1

233333 =⇒−−=−−=−=⇒=→ ∑

=

lllalalkj

j

⎪⎪⎪⎪⎪

⎪⎪⎪⎪⎪

=⇒⋅−⋅−

=−−

=−

=

=⇒⋅−

=−

=

=⇒==

⇒=−

=⇒=→

=

=

98

7643126

75

4243

414

3,2,1 , 4)α5.2.2(

4333

4232413143

33

2

14343

43

4222

41214242

4111

4141

1

144

4

ll

llllal

llal

ll

llal

lla

l

il

llalk

jjj

ii

i

jjiji

i

10

9742464)β5.2.2(

44

222243

242

24144

3

1

244444

=⇒

⇒−−−=−−−=−=⇒=→ ∑=

l

lllalalkj

j

Τελικά είναι

⎥⎥⎥⎥

⎢⎢⎢⎢

=

10974086300520001

][ 44xL

Εν συνεχεία εφαρµόζονται οι σχέσεις (2.2.9) για την εύρεση του αντιστρόφου του πίνακα [L]4x4.

11111 11

1111 =⇒==⇒= x

lxk

Page 32: SHMEIWSEIS

31

( )

( )

⎪⎪⎪⎪⎪⎪⎪

⎪⎪⎪⎪⎪⎪⎪

−=⇒⎥⎦

⎤⎢⎣

⎡⎟⎠⎞

⎜⎝⎛−⋅+⎟

⎠⎞

⎜⎝⎛−⋅+⋅−=

=++−=−=⇒==+=

−=⇒⎥⎦

⎤⎢⎣

⎡⎟⎠⎞

⎜⎝⎛−⋅+⋅−=

=+−=−=⇒=+=

−=⇒⋅⋅−=−=⇒=+=

⇒=

=

=

40021

4039

52714

101

1143

403

52613

81

1132

5212

51121

1

41

3

1314321421141

4414

4441

31

2132113133

2

113

3331

21112122

21

x

xlxlxll

xll

xnki

x

xlxll

xll

xki

xxll

xki

k

jjj

jjj

02 12 =⇒= xk

[ ] ( )

( )

( )

⎪⎪⎪⎪⎪⎪⎪

⎪⎪⎪⎪⎪⎪⎪

−=⇒⎥⎦

⎤⎢⎣

⎡⎟⎠⎞

⎜⎝⎛−⋅+⋅+⋅−=

=++−=−=⇒==+=

−=⇒

⇒⎟⎠⎞

⎜⎝⎛ ⋅+⋅−=+−=−=⇒=+=

=⇒⋅−=−=⇒==

⇒=

=

=

2001

2039

51704

101

1142

203

51603

811131

51021

51112

2

42

32432242124144

3

124

4442

32

2232123133

2

123

3332

22122122

22

x

xlxlxll

xll

xnki

x

xlxll

xll

xki

xxll

xki

k

jjj

jjj

03 13 =⇒= xk

( ) ( )

( )

⎪⎪⎪⎪⎪⎪⎪

⎪⎪⎪⎪⎪⎪⎪

−=⇒⎟⎠⎞

⎜⎝⎛ ⋅+⋅+⋅−=

=++−=⎥⎦

⎤⎢⎣

⎡−=⇒==+=

=⇒

⇒⋅−⋅−=−−=⎥⎦

⎤⎢⎣

⎡−=⇒==

=⇒=

⇒=

=

=

809

8190704

101

1141

81

060318111113

02

3

43

33432342134144

3

134

4443

33

2332133133

2

133

3333

23

x

xlxlxll

xll

xnki

x

xlxll

xll

xki

xi

k

jjj

jjj

04 14 =⇒= xk

Page 33: SHMEIWSEIS

32

( )

( )⎪⎪⎪⎪

⎪⎪⎪⎪

=⇒⋅−⋅−⋅−=

=−−−=⎥⎦

⎤⎢⎣

⎡−=⇒==

=⇒==⇒=

⇒= ∑=

1010907041

101

11114

0302

4

44

34432442144144

3

144

4444

34

24

x

xlxlxll

xll

xki

xixi

kj

jj

Τελικά δηλαδή είναι

⎥⎥⎥⎥

⎢⎢⎢⎢

−−−−−

−==−

1018092001400210812034030051520001

][][ 441

44 xx XL

Οπότε βάσει της (2.2.9) ο αντίστροφος του [Α]4x4 θα είναι

( )

⎥⎥⎥⎥

⎢⎢⎢⎢

−−−−−−−−−

−−−

=⇒

⎥⎥⎥⎥

⎢⎢⎢⎢

−−−−−

⎥⎥⎥⎥

⎢⎢⎢⎢

−−−

−−−

=⋅=

−−−

0101080902001040021800964001811600029132000111

200011600029140000250180000547940002132000111800005479160000186941

][

1018092001400210812034030051520001

.

1010008098100

200120351040021403521

][][][

144

144

144

144

x

xT

xx

A

LLA

Τελικά η λύση του ζητουµένου συστήµατος προκύπτει

⎥⎥⎥⎥

⎢⎢⎢⎢

=

⎥⎥⎥⎥

⎢⎢⎢⎢

⎥⎥⎥⎥

⎢⎢⎢⎢

⎥⎥⎥⎥

⎢⎢⎢⎢

−−−−−−−−−

−−−

=

⎥⎥⎥⎥

⎢⎢⎢⎢

⋅=

⎥⎥⎥⎥

⎢⎢⎢⎢

4321

1452906340

30

0101080902001040021800964001811600029132000111

200011600029140000250180000547940002132000111800005479160000186941

1452906340

30

][

4

3

2

1

144

4

3

2

1

xxxx

A

xxxx

x

Page 34: SHMEIWSEIS

33

2.3 Η ΜΕΘΟ∆ΟΣ krylov

Στην παράγραφο αυτή, οι όροι µε την «περισπωµένη» θα συµβολίζουν πίνακες, π.χ.: ][~ AA =

H µέθοδος Krylov αναφέρεται στην εύρεση των συντελεστών του χαρακτηριστικού πολυωνύµου

καθώς και στην εύρεση όλων των ιδιοδιανυσµάτων ενός πίνακα [Α]nxn, των σχετικών µε το θεµελιώδες

πρόβληµα ιδιοτιµών

( ) 0

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

...

...

...

~~0 0~~~~~~

321

3333231

2232221

1131211

=

−−

=−⇒⎭⎬⎫

≠=⋅−⇒=⋅

λ

λλ

λ

λλλ

nnnnn

n

n

n

aaaa

aaaaaaaaaaaa

IAXXIAXXA

(2.3.1)

Εύρεση Συντελεστών Χαρακτηριστικού Πολυωνύµου µε τη µέθοδο Krylov Η ανάπτυξη της ορίζουσας (2.3.1) οδηγεί στο χαρακτηριστικό πολυώνυµο-εξίσωση ως προς τις

ιδιοτιµές λ που έχει τη µορφή

1 , 0.....)( 012

22

21

1 ==++++++= −−

−− n

nn

nn

nn pppppppP λλλλλλ (2.3.2)

Οι συντελεστές pi του χαρακτηριστικού πολυωνύµου είναι συναρτήσεις των όρων aij του πίνακα [A]nxn

και µπορούν, εναλλακτικά, να προσδιορισθούν και µε τη µέθοδο Leverrier.

Bάσει του θεωρήµατος των Cayley-Hamilton κάθε τετραγωνικός πίνακας, άρα και ο A~ , είναι

ρίζα του χαρακτηριστικού πολυωνύµου. ∆ηλαδή ισχύει η σχέση

0~~.....~~~)~( 012

22

21

1 =++++++= −−

−− pApApApApAAP n

nn

nn (2.3.3)

Εστω τώρα ένα αυθαίρετο αλλά µη µηδενικό διάνυσµα )0(~Y µε συνιστώσες

0.....

~

)0(

)0(2

)0(1

)0( ≠

⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢

=

ny

yy

Y (2.3.4)

Ο πολλαπλασιασµός της (2.3.3) µε το διάνυσµα )0(~Y δίνει

0~~~~~.....~~~~~~ )0(0

)0(1

)0(22

)0(22

)0(11

)0( =+⋅+⋅++⋅+⋅+⋅ −−

−− YpYApYApYApYApYA n

nn

nn (2.3.5)

Ακολούθως, ορίζεται η ακολουθία διανυσµάτων )(~ kY ως

Page 35: SHMEIWSEIS

34

nkYAY kk ,.....,2,1 , ~~~ )0()( =⋅= (2.3.6)

∆ηλαδή, κάθε διάνυσµα )(~ kY προκύπτει από το διάνυσµα )0(~Y πολλαπλασιασµένο επί τον πίνακα A~

υψωµένο εις την k-στή δύναµη.

Λόγω λοιπόν της (2.3.6) η (2.3.5) καθίσταται

)()0(

0)1(

1)2(

2)2(

2)1(

1

)0(0

)1(1

)2(2

)2(2

)1(1

)(

~~~~.....~~

0~~~.....~~~

nnn

nn

nn

nn

n

YYpYpYpYpYp

YpYpYpYpYpY

−=+++++⇔

⇔=++++++

−−

−−

−−

−−

(2.3.7)

Η ανάπτυξη της (2.3.7) ως προς τις συνιστώσες των διανυσµάτων )(~ mY , m=0,1,2,…..,n καταλήγει

στο σύστηµα

⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢

−=

⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢

−−−

−−−

−−−

−−−

)(

)(3

)(2

)(1

0

3

2

1

)0()3()2()1(

)0(3

)3(3

)2(3

)1(3

)0(2

)3(2

)2(2

)1(2

)0(1

)3(1

)2(1

)1(1

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

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

nn

n

n

n

n

n

n

nn

nn

nn

n

nnn

nnn

nnn

y

yyy

p

ppp

yyyy

yyyyyyyyyyyy

(2.3.8)

από το οποίο µπορούν να υπολογισθούν οι συντελεστές pm , m=0,1,2,…..,n-1 του χαρακτηριστικού

πολυωνύµου (2.3.2). Το µόνο που απαιτείται πριν την επίλυση του συστήµατος (2.3.8) είναι ο

υπολογισµός των διανυσµάτων )(~ kY βάσει της (2.3.6). Ο υπολογισµός αυτός εµπεριέχει την ύψωση

του πίνακα A~ σε δυνάµεις, διαδικασία πoυ υπολογιστικά (προγραµµατιστικά) είναι απλή. Περαιτέρω,

προκειµένου η επίλυση του συστήµατος (2.3.8) να είναι εφικτή, αρκεί η ορίζουσα των συντελεστών

των αγνώστων pm να είναι µη µηδενική. Εις περίπτωσιν όπου προκύψει µηδενική, αρκεί η εκλογή ενός

διαφορετικού-καταλληλότερου αρχικού-αυθαιρέτου διανύσµατος )0(~Y .

Συµπερασµατικά, θα πρέπει να σηµειωθεί ότι για τον προσδιορισµό των συντελεστών του

χαρακτηριστικού πολυωνύµου η µέθοδος Krylov εµπεριέχει υπολογιστικό φόρτο εν πολλοίς παρόµοιο

µε αυτόν της µεθόδου Leverrier.

Εύρεση του Συνόλου τών Ιδιοδιανυσµάτων µε τη µέθοδο Krylov Για την εύρεση του συνόλου των ιδιοδιανυσµάτων µε τη µέθοδο Krylov θα απαιτηθούν οι

ακόλουθες σχέσεις (2.3.9) και (2.3.10).

Η ανάπτυξη της ακολουθίας (2.3.6) για διάφορες τιµές του k οδηγεί στις σχέσεις

( )( ) )2()0()0(3)3(

)1()0()0(2)2(

)0()1(

~~ ~~~~~~~ 3

~~ ~~~~~~ 2

~~ ~ 1

YAYAAAYAYk

YAYAAYAYk

YAYk

⋅=⋅⋅⋅=⋅=→=

⋅=⋅⋅=⋅=→=

⋅=→=

(2.3.9)

Page 36: SHMEIWSEIS

35

)1()0(

1

)0()( ~~~~~~~~~~

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

⋅=⎟⎟⎠

⎞⎜⎜⎝

⎛⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅=⋅=→= k

k

kk YAYAAAAYAYkk 4434421 (2.3.9)

Από το θεµελιώδες πρόβληµα ιδιοτιµών (2.3.1) για κάθε ιδιοτιµή λi και αντίστοιχο ιδιοδιάνυσµα )(~ iX µε i=1,2,…..,n, προκύπτει η ακολουθία

( )( )

( ) )()(1)(1)(

)(3)(2)(2)(3

)(2)()()(2

)()(

~~~~~~..................................................................

~ ~~~~~

~ ~~~~~

~ ~~

iki

ii

ki

iki

ik

ii

iii

ii

i

ii

iii

ii

i

ii

i

XXXAXA

XXXAXA

XXXAXA

XXA

λλλλ

λλλλ

λλλλ

λ

==⋅=⋅

==⋅=⋅

==⋅=⋅

=⋅

−−

(2.3.10)

Εάν )(~ mX , m=1,2,…..,n είναι τα n ζητούµενα ιδιοδιανύσµατα του θεµελιώδους προβλήµατος

ιδιοτιµών (2.3.1), τότε κάθε διάνυσµα, άρα και το εκλεγέν αυθαίρετο )0(~Y της µεθόδου Krylov,

µπορεί να εκφρασθεί ως γραµµικός συνδυασµός των ιδιοδιανυσµάτων αυτών. Προκειµένου λοιπόν

για το )0(~Y θα είναι

)()1(1

)2(2

)1(1

)0( ~~.....~~~ nn

nn XcXcXcXcY ++++= −− (2.3.11α)

όπου τα ci, i=1,2,…..,n είναι πραγµατικοί συντελεστές και θα πρέπει να έχουν κατάλληλες

αριθµητικές τιµές προκειµένου να ισχύει η (2.3.11α).

Πολλαπλασιάζοντας τώρα την (2.3.11α) µε τον πίνακα A~ προκύπτει

)()1(1

)2(2

)1(1

)0( ~~~~.....~~~~~~ nn

nn XAcXAcXAcXAcYA ⋅+⋅++⋅+⋅=⋅ −− (2.3.12)

Λαµβάνοντας υπ’ όψιν τις (2.3.9) και (2.3.10) η (2.3.12) καθίσταται

)()1(11

)2(22

)1(11

)1( ~~.....~~~ nnn

nnn XcXcXcXcY λλλλ ++++= −−− (2.3.11β)

Καθ’ όµοιον τρόπο, πολλαπλασιάζεται τώρα η (2.3.11β) µε τον πίνακα A~ και λαµβάνοντας υπ’ όψιν

τις (2.3.9) και (2.3.10) προκύπτει

⇒⋅+⋅++⋅+⋅=⋅ −−−

)()1(11

)2(22

)1(11

)1( ~~~~.....~~~~~~ nnn

nnn XAcXAcXAcXAcYA λλλλ

)(2)1(211

)2(222

)1(211

)2( ~~.....~~~ nnn

nnn XcXcXcXcY λλλλ ++++=⇒ −−− (2.3.11γ)

Η διαδικασία των πολλαπλασιασµών του κάθε προκύπτοντος διανύσµατος )(~ mY , µε m < n-1, µε τον

πίνακα A~ , συνεχίζεται έως και n-1 φορές οπότε τελικά προκύπτει

Page 37: SHMEIWSEIS

36

)(1)1(111

)2(122

)1(111

)1( ~~.....~~~ nnnn

nnnn

nnn XcXcXcXcY −−−−−

−−− ++++= λλλλ (2.3.11δ)

Εστω τώρα το ακόλουθο αυθαίρετο σέτ πολυωνύµων

nnnn

nnn

nnn

n

nn

nn

n

nn

nn

n

qqqqq

qqqqq

qqqqq

,0,12

,23

,32

,21

2,02,12

2,23

2,32

2,21

2

1,01,12

1,23

1,32

1,21

1

.....)(....................................................................................................

.....)(

..... )(

++++++=

++++++=

++++++=

−−

−−

−−

−−

−−

−−

λλλλλλφ

λλλλλλφ

λλλλλλφ

(2.3.13α)

µε γενικό τύπο

niqqqqq iiin

inn

inn

i ,.....,2,1 , .....)( ,0,12

,23

,32

,21 =++++++= −

−−

−− λλλλλλφ (2.3.13β)

Ορίζεται ως L~ ο γραµµικός συνδυασµός των διανυσµάτων )(~ mY µε τους συντελεστές imq , των

πολυωνύµων της (2.3.13β) για m=n-1,n-2,…..,2,1,0 και λαµβάνοντας υπ’ όψιν ότι 1,1 =− inq

)0(,0

)1(,1

)2(,2

)3(,3

)2(,2

)1( ~~~.....~~~~ YqYqYqYqYqYL iiin

inn

inn ++++++= −

−−

−− (2.3.14)

Ακολούθως, αντικαθίστανται στην (2.3.14) οι εκφράσεις των διανυσµάτων )(~ mY , για

m=n-1,n-2,…..,2,1,0, από τις (2.3.11) και µετά την εκτέλεση των πράξεων προκύπτει ότι

)()1(

11)2(

22)1(

11

)0(,0

)1(,1

)2(,2

)3(,3

)2(,2

)1(

~)(~)(.....~)(~)(

~~~.....~~~~

nnin

nninii

iiin

inn

inn

XcXcXcXc

YqYqYqYqYqYL

λφλφλφλφ ++++=

=++++++=−

−−

−−

−−

(2.3.15)

Εάν τώρα τα αυθαίρετα πολυώνυµα )(λφ i επιλεγούν ως

niP

ii ,.....,2,1 , )()( =

−=

λλλλφ (2.3.16α)

όπου P(λ) είναι το χαρακτηριστικό πολυώνυµο της (2.3.2), τότε προφανώς θα ισχύει ότι

ijji ≠= , 0)(λφ (2.3.16β)

Επίσης, θα ισχύει ότι

⇒′−+=′⇒

⇒′−+=′−′+=′⇒

⇒−=−=

)()()()(

)()()()()()()(

)()()()()(

λφλλλφλ

λφλλλφλφλλφλλφλ

λφλλλφλφλλλ

iiiiii

iiiiiii

iiiii

P

P

P

)()( iii P λλφ ′=⇒ (2.3.16γ)

Page 38: SHMEIWSEIS

37

Λόγω λοιπόν των (2.3.16β,γ) η (2.3.15) δίνει

⇒=++++++= −−

−−

− )()0(,0

)1(,1

)2(,2

)3(,3

)2(,2

)1( ~)(~~~.....~~~~ iiiiiii

nin

nin

n XcYqYqYqYqYqYL λφ

[ ]ni

YqYqYqYqYqYP

Xc iiin

inn

inn

i

ii

,.....,2,1

~~~.....~~~)(

1~ )0(,0

)1(,1

)2(,2

)3(,3

)2(,2

)1()(

=

++++++′

=⇒ −−

−−

λ (2.3.17)

Εποµένως, κάθε ζητούµενο ιδιοδιάνυσµα )(~ iX που αντιστοιχεί στην ιδιοτιµή λi θα προκύπτει από τη

σχέση (2.3.17) πολλαπλασιασµένο µε ένα συντελεστή ci. Ο συντελεστής αυτός θα απαλοιφθεί στη

συνέχεια µετά από κανονικοποίηση των τιµών των συνιστωσών των ιδιοδιανυσµάτων. Τα

διανύσµατα )(~ mY , m=n-1,n-2,…,2,1,0, προκύπτουν από τις σχέσεις (2.3.6) ή ευκολότερα και

ταχύτερα από τις (2.3.9), ενώ η παράγωγος )( iP λ′ προκύπτει µετά από παραγώγιση της σχέσης

(2.3.2) ως προς λ=λi.

Αποµένει ο προσδιορισµός των συντελεστών qm,i µε m=n-2,n-3,…,2,1,0 και i=1,2,…,n. Η σχέση

(2.3.16α) σε συνδυασµό µε τις (2.3.2) και (2.3.13β) δίνει

( )

⎪⎪⎪⎪

⎪⎪⎪⎪

⎪⎪⎪

⎪⎪⎪

⎪⎪⎪

⎪⎪⎪

=+=

+=

+=

+=

⎪⎪⎪

⎪⎪⎪

−=

−=

−=

−=

−=

⇒−−+

+−++−+−+=

==

=++++++−=

=++++++⇒−=

−−−−

−−−

−−

−−−

−−−

−−

−−

−−

−−

−−

−−

1 ,

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

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

)(

)(.....)()( ..................................................................................................

.....)(

.....)()()(

,11,1,2

2,2,3

2,2,1

1,1,0

,21

,2,32

,2,12

,1,01

,00

,0,1,0

2,2,1

2,2,3

1,2

,0,12

,23

,32

,21

012

22

21

1

01

221

inniniin

niniin

iii

iii

iinn

iniinn

iii

iii

ii

p

ii

p

iii

p

iiin

p

iniinn

p

iinn

iiin

inn

inn

i

nn

nn

nii

qpqqpqq

pqqpqq

qpqqp

qqpqqp

qp

qqq

qqqqq

qqqqq

pppppP

nn

λ

λ

λ

λ

λ

λ

λ

λ

λ

λλλ

λλλλλλλ

λλλλλλλ

λλλλλλφλλλ

32143421

4342144 344 2143421

⎪⎩

⎪⎨

=−−=

+=

++

10,1,2),.....,3(),2(

,1

1,1,

in

kikiik

qnnk

pqq λ (2.3.18)

Ετσι, η προσδιορισµός των συντελεστών qm,i , m=n-2,n-3,…,2,1,0 θα γίνεται από την ακολουθία

(2.3.18) για κάθε ιδιοτιµή λi, i=1,2,…..,n.

Page 39: SHMEIWSEIS

38

Κανονικοποίηση των Ιδιοδιανυσµάτων

Οι τιµές των συνιστωσών κάθε ιδιοδιανύσµατος )(~ ii Xc που προκύπτει από τη σχέση (2.3.17)

είθισται να παρουσιάζονται κανονικοποιηµένες µε δύο τρόπους.

1. ∆ιαιρούνται µε την τιµή του µέτρου του ιδιοδιανύσµατος η οποία ορίζεται ως

( ) ( ) ( ) ( )( ) ( ) ( ) ( )2)(2)(

12)(

22)(

1

2)(2)(1

2)(2

2)(1

)(

.....

.....~

in

in

iii

ini

ini

ii

ii

ii

xxxxc

xcxcxcxcXc

++++=

=++++=

− (2.3.19)

Εποµένως

⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢

⋅=⋅=

⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢

=

)(

)(2

)(1

)()(

)(

)(

)(2

)(1

)(

.......~1~

~1

.....~

ini

ii

ii

ii

iii

ii

n

i

i

i

xc

xcxc

XcXc

Xcx

xx

X (2.3.20)

2. ∆ιαιρούνται µε τη µέγιστη, κατ’ απόλυτη τιµή, συνιστώσα έτσι ώστε η µέγιστη συνιστώσα του

προκύπτοντος κανονικοποιηµένου ιδιοδιανύσµατος να προκύπτει ίση µε +1.

[ ][ ] ⎪⎩

⎪⎨⎧

≥=⇒

⎪⎭

⎪⎬⎫

=

=

)(min

)(max

)(min

)(min

)(max

)(max)(

max,)()(1

)(2

)(1

)(min

)()(1

)(2

)(1

)(max

,

,

,,.....,,min

,,.....,,maxiii

iii

iabsi

ni

niii

in

in

iii

xxx

xxxx

xxxxx

xxxxx (2.3.21)

Οπότε

⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢

⋅=⋅=

⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢

=

)(

)(2

)(1

)(max,

)()(

max,)(

)(2

)(1

)(

.......1~1

.....~

ini

ii

ii

iabs

iii

absi

n

i

i

i

xc

xcxc

xXc

xx

xx

X (2.3.22)

Από τις (2.3.20) και (2.3.22) είναι φανερό ότι και στις δύο αυτές περιπτώσεις κανονικοποίησης ο

πολλαπλασιαστικός συντελεστής ci του κάθε ιδιοδιανύσµατος )(~ ii Xc , όπως αυτό προκύπτει από τη

σχέση (2.3.17), τελικώς απαλοίφεται.

Συνθήκη Ορθογωνικότητας των Ιδιοδιανυσµάτων

Στην ειδική περίπτωση όπου ο πίνακας nxnA~ είναι συµµετρικός, τότε για οποιοδήποτε ζεύγος ιδιο-

διανυσµάτων [ ])()( ~,~ mk XX , µε k ≠ m και 1 ≤ (k,m) ≤ n, από τα τα n προκύπτοντα ιδιοδιανύσµατα, θα

ισχύει η σχέση

( ) nmnkmkXX mTk ≤≤≤≤≠=⋅ 1 , 1 , , 0~~ )()( (2.3.23)

Page 40: SHMEIWSEIS

39

Η σχέση αυτή αποτελεί τη λεγόµενη ιδιότητα ορθογωνικότητας µεταξύ δύο ιδιοδιανυσµάτων και

ισχύει για όλα τα δυνατά ζεύγη (m,n). Είναι προφανές ότι η σχέση (2.3.23) µπορεί να εφαρµοσθεί και

στη µή κανονικοποιηµένη µορφή των ιδιοδιανυσµάτων όπως αυτά προκύπτουν απ’ ευθείας από τη

σχέση (2.3.17).

Παράδειγµα 2.3.1

Να εφαρµοσθεί η µέθοδος Krylov για να ευρεθούν οι συντελεστές του χαρακτηριστικού

πολυωνύµου καθώς και όλα τα ιδιοδιανύσµατα του παρακάτω πίνακα 44~

xA αναφορικά µε το

θεµελιώδες πρόβληµα ιδιοτιµών που περιγράφεται από τη σχέση (2.3.1).

⎥⎥⎥⎥

⎢⎢⎢⎢

=

1234212332124321

~44xA

Βάσει της (2.3.4) επιλέγεται το αυθαίρετο διάνυσµα

⎥⎥⎥⎥

⎢⎢⎢⎢

=

0001

~ )0(Y

Η εφαρµογή των (2.3.9) δίνει

⎥⎥⎥⎥

⎢⎢⎢⎢

=

⎥⎥⎥⎥

⎢⎢⎢⎢

⎥⎥⎥⎥

⎢⎢⎢⎢

=⋅=

⎥⎥⎥⎥

⎢⎢⎢⎢

=

⎥⎥⎥⎥

⎢⎢⎢⎢

⎥⎥⎥⎥

⎢⎢⎢⎢

=⋅=

⎥⎥⎥⎥

⎢⎢⎢⎢

=

⎥⎥⎥⎥

⎢⎢⎢⎢

⎥⎥⎥⎥

⎢⎢⎢⎢

=⋅=

⎥⎥⎥⎥

⎢⎢⎢⎢

=

⎥⎥⎥⎥

⎢⎢⎢⎢

⎥⎥⎥⎥

⎢⎢⎢⎢

=⋅=

1992165617042108

242192178208

1234212332124321

~~~ ,

242192178208

20182230

1234212332124321

~~~

20182230

4321

1234212332124321

~~~ ,

4321

0001

1234212332124321

~~~

)3()4()2()3(

)1()2()0()1(

YAYYAY

YAYYAY

Σχηµατίζεται το σύστηµα (2.3.8)

⎥⎥⎥⎥

⎢⎢⎢⎢

−=

⎥⎥⎥⎥

⎢⎢⎢⎢

⎥⎥⎥⎥

⎢⎢⎢⎢

1992165617042108

0420242031819202221781130208

0

1

2

3

pppp

Page 41: SHMEIWSEIS

40

η επίλυση του οποίου δίνει:

20 , 56 , 40 , 4 0123 −=−=−=−= pppp

Εποµένως, το χαρακτηριστικό πολυώνυµο-εξίσωση της (2.3.2) θα είναι

02056404)( 234 =−−−−= λλλλλP

Η επίλυση ως προς λ της πολυωνυµικής αυτής εξίσωσης (π.χ. µε τη µέθοδο Bairstow) δίνει τις

τέσσερις ρίζες-ιδιοτιµές

414213.3 , 099019.1 , 585786.0 , 099019.9 4321 −=−=−== λλλλ

Στη συνέχεια εφαρµόζεται η σχέση (2.3.18) για τον προσδιορισµό των συντελεστών q. Για i=1,

δηλαδή για την πρώτη ιδιοτιµή λ1, θα είναι

138039.2)56(396078.6099019.9 0 44 4396078.6)40(09902.5099019.9 1 34 3

099019.5)4(1099019.9 22421 3 14 1

11,111,0

21,211,1

31,311,2

1,3

=−+⋅=+=→=−=−=

=−+⋅=+=→=−=−=

=−+⋅=+=→=−=−=

=→=−=−=

pqqnkpqqnkpqqnk

qnk

λλλ

Η παράγωγος ως προς λ του χαρακτηριστικού πολυωνύµου είναι

881984.1235)099019.9(5680124)( 123 ==′⇒−−−=′ λλλλλ PP

Αρα το πρώτο ιδιοδιάνυσµα )1(1

~Xc µπορεί πλέον να υπολογισθεί από την (2.3.17) και προκύπτει ίσο

µε

[ ]

⎥⎥⎥⎥

⎢⎢⎢⎢

=

⎪⎪⎭

⎪⎪⎬

⎪⎪⎩

⎪⎪⎨

⎥⎥⎥⎥

⎢⎢⎢⎢

⋅+

⎥⎥⎥⎥

⎢⎢⎢⎢

⋅+

⎥⎥⎥⎥

⎢⎢⎢⎢

⋅+

⎥⎥⎥⎥

⎢⎢⎢⎢

⋅=

=+++′

=

299029.0245145.0245145.0299029.0

0001

138039.2

4321

396078.6

20182230

099019.5

242192178208

881984.12351

~~~~)(

1~ )0(1,0

)1(1,1

)2(1,2

)3(

1

)1(1 YqYqYqY

PXc

λ

Η ανωτέρω διαδικασία για i=1 επαναλαµβάνεται καθ’ όµοιο τρόπο και για i=2,3,4 οπότε λαµβάνονται

και τα λοιπά ιδιοδιανύσµατα

⎥⎥⎥⎥

⎢⎢⎢⎢

−−

=

⎥⎥⎥⎥

⎢⎢⎢⎢

−−

=

⎥⎥⎥⎥

⎢⎢⎢⎢

−=

426777.0176777.0176777.0426777.0

~ ,

200971.0245145.0245145.0200971.0

~ ,

073223.0176777.0176777.0073223.0

~ )4(4

)3(3

)2(2 XcXcXc

Page 42: SHMEIWSEIS

41

Η κανονικοποίηση των τεσσάρων ιδιοδιανυσµάτων )(~ ii Xc ως προς το µέτρο τους, βάσει των

σχέσεων (2.3.19) και (2.3.10) δίνει

⎥⎥⎥⎥

⎢⎢⎢⎢

−−

=

⎥⎥⎥⎥

⎢⎢⎢⎢

−−

=

⎥⎥⎥⎥

⎢⎢⎢⎢

−=

⎥⎥⎥⎥

⎢⎢⎢⎢

=

653281.0270598.0270598.0653281.0

~ ,

448298.0546835.0546835.0448298.0

~ ,

270598.0653281.0653281.0270598.0

~ ,

546835.0448298.0448298.0546835.0

~ )4()3()2()1( XXXX

ενώ η κανονικοποίηση ως προς την µονάδα, βάσει των (2.3.21) και (2.3.22) δίνει

⎥⎥⎥⎥

⎢⎢⎢⎢

−−

=

⎥⎥⎥⎥

⎢⎢⎢⎢

=

⎥⎥⎥⎥

⎢⎢⎢⎢

=

⎥⎥⎥⎥

⎢⎢⎢⎢

=

1414214.0414214.0

1~ ,

819804.011

819804.0~ ,

414214.011

414214.0~ ,

1819804.0819804.0

1~ )4()3()2()1( XXXX

Περαιτέρω, καθ’ όσον ο πίνακας 44~

xA είναι συµµετρικός θα ισχύει η συνθήκη ορθογωνικότητας

(2.3.23) για οποιοδήποτε τυχαίο ζεύγος ιδιοδιανυσµάτων. Π.χ., λαµβάνοντας τα )2(~X και )4(~X προκύπτει

( ) [ ] 0

1414214.0414214.0

1

414214.011414214.0~~ )4()2( =

⎥⎥⎥⎥

⎢⎢⎢⎢

−−

⋅−−=⋅ XXT

Η επαλήθευση των ανωτέρω αριθµητικών αποτελεσµάτων, οι πράξεις και οι απαιτούµενοι έλεγχοι

αφήνονται ως άσκηση στον αναγνώστη.

Υπορουτίνες Προβληµάτων Ιδιοτιµών σε FORTRAN 90/95

Περιγράφεται µία σειρά υπορουτινών γραµµένων σε FORTRAN 90/95 για τη συνολική

αντιµετώπιση του θεµελιώδους προβλήµατος ιδιοτιµών της σχέσης (2.3.1). Ολες οι πραγµατικές

µεταβλητές των παρακάτω αναφερόµενων υπορουτινών είναι διπλής ακρίβειας (8 bytes).

Υπορουτίνα EIGENR Η υπορουτίνα αυτή εκτελεί τα ακόλουθα µε τη σειρά που αναφέρονται:

(α) υπολογίζει µε τη µέθοδο Leverrier τους συντελεστές του χαρακτηριστικού πολυωνύµου. Για το

σκοπό αυτό καλεί την υπορουτίνα LEVERRIER (βλ. παρακάτω),

(β) υπολογίζει µε τη µέθοδο Bairstow όλες τις ρίζες-ιδιοτιµές του χαρακτηριστικού πολυωνύµου. Για

το σκοπό αυτό καλεί την υπορουτίνα BAIRSTOW. Eάν οι ρίζες προκύψουν από την υπορουτίνα

BAIRSTOW µε σειρά |λ1|< |λ2|< .....< |λn|, τότε καλεί εν συνεχεία την υπορουτίνα SORTR

προκειµένου να αναστραφεί η σειρά, και

Page 43: SHMEIWSEIS

42

(γ) υπολογίζει όλα τα ιδιοδιανύσµατα µε τη µέθοδο Krylov. Για το σκοπό αυτό καλεί την υπορουτίνα

KRYLOV (βλ. παρακάτω). Η υπορουτίνα EIGENR καθώς και η KRYLOV δεν υπολογίζουν τους

συντελεστές του χαρακτηριστικού πολυωνύµου µε τη µέθοδο Krylov.

Στην υπορουτίνα εισάγονται και επιστρέφουν οι παρακάτω µεταβλητές:

N : Η διάσταση n του πίνακα nxnA~ .

[Α]NxΝ : Ο πίνακας nxnA~ της σχέσης (2.3.1).

[L]N : Πίνακας διάστασης n που επιστρέφει µε τις ιδιοτιµές λ1, λ2, ..., λn.

[Υ0]N : Το αρχικό-αυθαίρετο διάνυσµα )0(~Y της µεθόδου Krylov.

[Χ]NxΝ : Πίνακας διαστάσεων nxn όπου επιστρέφει µε τα ιδιοδιανύσµατα )(~ iX . Κάθε στήλη

του πίνακα είναι και ένα ιδιοδιάνυσµα. Η πρώτη στήλη αντιστοιχεί στο πρώτο

ιδιοδιάνυσµα, η δεύτερη στο δεύτερο, κ.ο.κ.

TOLLX : Οριο ε<< για έλεγχο αποδεκτής λύσης: ( ) ελ <⋅− XIA ~~~

KSOLVEL : Επιστρέφει µε τις τιµές 0 και 1 για θεώρηση όχι πολύ καλής ή άριστης επίλυσης

αντίστοιχα, αναφορικά µε την εύρεση των ιδιοτιµών λ.

KSOLVEΧ : Επιστρέφει µε τις τιµές 0 και 1 για θεώρηση όχι πολύ καλής ή άριστης επίλυσης

αντίστοιχα, αναφορικά µε την εύρεση των ιδιοδιανυσµάτων )(~ iX .

KODLX : Κωδικός απαιτούµενων υπολογισµών, ως εξής:

1= υπολογισµός µόνο ιδιοτιµών

2= υπολογισµός ιδιοτιµών και µή κανονικοποιηµένων ιδιοδιανυσµάτων )(~ ii Xc

3= υπολογισµός ιδιοτιµών και κανονικοποιηµένων ιδιοδιανυσµάτων )(~ iX βάσει του

µέτρου τους.

4= υπολογισµός ιδιοτιµών και κανονικοποιηµένων ιδιοδιανυσµάτων )(~ iX βάσει της

µονάδος.

IPRINTLX : Kωδικός εκτυπώσεων αποτελεσµάτων, ως εξής:

0= καµµία εκτύπωση

1= εκτύπωση µόνο ιδιοτιµών

2= εκτύπωση ιδιοτιµών και µή κανονικοποιηµένων ιδιοδιανυσµάτων )(~ ii Xc

3= εκτύπωση ιδιοτιµών και κανονικοποιηµένων ιδιοδιανυσµάτων )(~ iX βάσει του

µέτρου τους.

4= εκτύπωση ιδιοτιµών και κανονικοποιηµένων ιδιοδιανυσµάτων )(~ iX βάσει της

µονάδος.

Page 44: SHMEIWSEIS

43

Οι λοιπές µεταβλητές P, Q, TOLPQRS, TOLDETS, TOLDETR, TOLC, TOLFX, NITMAX,

NCYCMAX, ISORT, IPRINT1, IPRINT2 είναι αυτές της υπορουτίνας BAIRSTOW.

Ακολουθεί η λίστα των εντολών της υπορουτίνας EIGENR.

! ================================================================== ! | SUBROUTINE TO FIND ALL REAL EIGENVALUES & EIGENVECTORS | ! | OF A REAL MATRIX [A]nxn | ! | | ! | 1. Characteristic Polynomial by the Leverrier Method | ! | 2. Eigenvalues (roots) of the Characteristic Polynomial by the | ! | Bairstow Method | ! | 3. Eigenvectors by the Krylov Method | ! | | ! | Developed by M. G. Sfakianakis | ! | University of Patras, 2001 | ! | | ! ================================================================== ! ! ------------------------------------------------------------------ ! Variable Description ! -------------------- ! ! N : Matrix [A] dimension, n. ! [A]nxn : Matrix [A]nxn ! [L]n : Eigenvalues ¢1,¢2,.....,¢n. ! [Y0]n : Inital guess of vector y0 of Krylov's Method. ! [X]nxn : Eigenvectors. 1st column is the eigenvector of ¢1, ! 2nd column is the eigenvector of ¢2, etc. ! TOLLX : Tolerance to check if [A-¢I][X]<=œ. Same as TOLFX. ! KSOLVEL : Solution code for Eigenvalues ! (0=Not Very Good Solution, 1=Excellent Solution) ! Same as KSOLVE ! KSOLVEX : Solution code for Eigenvectors ! (0=Not Very Good Solution, 1=Excellent Solution) ! KODLX : Computation code ! (1=only eigenvalues, ! 2=eigenvalues & non-normalized eigenvectors ! 3=eigenvalues & normalized eigenvectors by length ! 4=eigenvalues & normalized eigenvectors by unity) ! IPRINTLX : Print out code ! (0=no print at all, ! 1=only eigenvalues, ! 2=eigenvalues & non-normalized eigenvectors ! 3=eigenvalues & normalized eigenvectors by length ! 4=eigenvalues & normalized eigenvectors by unity) ! ! ............................................................ ! All the following variables are those of the Bairstow Method ! ............................................................ ! ! P : Initial estimation for p. ! Q : Initial estimation for q. ! TOLPQRS : Tolerance œ to check if |ƒp|<= œ & |ƒq|<= œ, or, if ! |R|<= œ & |S|<= œ. ! TOLDETS : Tolerance œ to check if system determinant |a| <= œ. ! TOLDETR : Tolerance œ to check if determinant |p**2-4q| <= œ. ! TOLC : Tolerance œ to check for y+zi if |z|<= œ. ! TOLFX : Tolerance to check if |f(¨)|<= œ. ! NITMAX : Max. permissible no. of iterations within a solytion ! cycle. ! NCYCMAX : Max. permissible no. of solution cycles. ! ISORT : Code for sorting (1=ascending order, 2=descending ! order).

! IPRINT1 : Print code for printing intermidiate results ! (0=No print, -1=partial print, 1=full print). ! IPRINT2 : Print code for printing final results ! (0=No print, 1=print). ! ------------------------------------------------------------------ ! SUBROUTINE EIGENR (N,A,L,Y0,X,KSOLVEL,KSOLVEX,KODLX,IPRINTLX, & & P,Q,TOLPQRS,TOLDETS,TOLDETR,TOLC,TOLFX, & & NITMAX,NCYCMAX,ISORT,IPRINT1,IPRINT2) ! IMPLICIT REAL*8 (A-H,O-Z) REAL*8 A(N,N),L(N),X(N,N),Y0(N),INDX(N),XIM(N),FL(N),FXIM(N) REAL*8, ALLOCATABLE :: CPOL(:) ! ! ------------------------------------------------------------------ ! 1. COMPUTE THE CHARACTERISTIC POLYNOMIAL COEFFICIENTS BY THE ! LEVERRIER METHOD ! ------------------------------------------------------------------ ! ALLOCATE (CPOL(0:N)) ! CALL LEVERRIER (N,A,CPOL) ! ! ------------------------------------------------------------------ ! 2. COMPUTE EIGENVALUES ¢ AS ROOTS OF THE CHARACTERISTIC POLYNOMIAL ! BY THE BAIRSTOW METHOD. PRINT EIGENVALUES, IF REQUIRED. ! ------------------------------------------------------------------ ! CALL BAIRSTOW (N,CPOL,P,Q,TOLPQRS,TOLDETS,TOLDETR,TOLC, & & TOLFX,NITMAX,NCYCMAX,ISORT,IPRINT1,IPRINT2, & & NREAL,NCOMPL,L,XIM,FL,FXIM,KSOLVE) ! IF (DABS(L(1))<=DABS(L(N))) CALL SORTR (L,FL,N,1) ! KSOLVEL = KSOLVE ! IF (KSOLVEL==0) WRITE (*,"(/ & & '***** Not very good Eigenvalues *****'/)") ! IF (IPRINTLX>0) CALL EIGOUT (N,L,X,1) ! IF (KODLX==1) RETURN ! ! ------------------------------------------------------------------ ! 3. COMPUTE EIGENVECTORS BY THE KRYLOV METHOD ! ------------------------------------------------------------------ ! TOLLX = TOLFX ! CALL KRYLOV (N,A,L,CPOL,Y0,X,TOLLX,KSOLVEX,KODLX,IPRINTLX) ! DEALLOCATE (CPOL) ! RETURN END !

Υπορουτίνα LEVERRIER Η υπορουτίνα αυτή καλείται από την υπορουτίνα EIGENR και υπολογίζει τους συντελεστές του

χαρακτηριστικού πολυωνύµου βάσει της µεθόδου Leverrier. Οσον αφορά την επίλυση του σχετικού

γραµµικού συστήµατος της µεθόδου, καλεί τις υπορουτίνες LUDCMP και LUBKSB για την επίλυσή

του.

Στην υπορουτίνα εισάγονται και επιστρέφουν οι παρακάτω µεταβλητές:

N : Η διάσταση n του πίνακα nxnA~ .

[Α]NxΝ : Ο πίνακας nxnA~ της σχέσης (2.3.1).

[CPOL]0:N : Πίνακας διάστασης n που επιστρέφει µε τις τιµές p0, p1, p2, …, pn των συντελεστών

του χαρακτηριστικού πολυωνύµου. Ακολουθεί η λίστα των εντολών της υπορουτίνας LEVERRIER.

Page 45: SHMEIWSEIS

44

! ================================================================== ! | SUBROUTINE TO COMPUTE CHARACTERISTIC POLYNOMIAL COEFFICIENTS | ! | OF A REAL MATRIX [A]nxn | ! | | ! | Leverrier Method | ! | | ! | Developed by M. G. Sfakianakis | ! | University of Patras, 2001 | ! | | ! ================================================================== ! ! ------------------------------------------------------------------ ! Variable Description ! -------------------- ! ! N : Matrix [A] dimension, n. ! [A]nxn : Matrix [A]nxn ! [CPOL]0:n : Polynomial coefficients c0,c1,c2,...,cn-1,cn. ! SUBROUTINE LEVERRIER (N,A,CPOL) ! IMPLICIT REAL*8 (A-H,O-Z) REAL*8 A(N,N),INDX(N),CPOL(0:N) REAL*8, ALLOCATABLE :: S(:),APREV(:,:),ANEW(:,:),S2(:,:) ! ! ------------------------------------------------------------------ ! COMPUTE k=1,2,...,n-1 POWERS OF [A] & STORE Tr[A]**k ! ------------------------------------------------------------------ ! ALLOCATE (S(N),ANEW(N,N),APREV(N,N)) ! DO I=1,N DO J=1,N ANEW(I,J) = A(I,J) END DO END DO ! DO M=1,N ! IF (M==1) GO TO 10 DO I=1,N DO J=1,N ANEW(I,J) = 0.00D+00 DO K=1,N ANEW(I,J) = ANEW(I,J) + APREV(I,K)*A(K,J) END DO END DO END DO ! 10 S(M) = 0.00D+00 DO I=1,N S(M) = S(M) + ANEW(I,I) END DO !

DO I=1,N DO J=1,N APREV(I,J) = ANEW(I,J) END DO END DO ! END DO ! ! ------------------------------------------------------------------ ! FORM LEVERRIER'S SYSTEM ! ------------------------------------------------------------------ ! DEALLOCATE (ANEW,APREV) ALLOCATE (S2(N,N)) ! DO I=1,N DO J=1,N S2(I,J) = 0.00D+00 IF (I==J) S2(I,J) = I END DO END DO ! DO J=1,N-1 DO I=J+1,N S2(I,J) = S(I-J) END DO END DO ! DO I=1,N S(I) = -S(I) END DO ! ! ------------------------------------------------------------------ ! SOLVE LEVERRIER'S SYSTEM ! ------------------------------------------------------------------ ! NP = N ! CALL LUDCMP (S2,N,NP,INDX,DET) CALL LUBKSB (S2,N,NP,INDX,S) ! DEALLOCATE (S2) ! DO I=N,0,-1 IF (I==N) CPOL(I) = 1.00D+00 IF (I<N) CPOL(I) = S(N-I) END DO ! DEALLOCATE (S) ! RETURN END !

Υπορουτίνες KRYLOV και EIGOUT

Η υπορουτίνα KRYLOV καλείται από την υπορουτίνα EIGENR και υπολογίζει το σύνολο των

ιδιοδιανυσµάτων ενός πίνακα nxnA~ βάσει της µεθόδου Krylov. Σε ότι αφορά το θέµα εκτυπώσεων

αποτελεσµάτων, καλεί την υπορουτίνα EIGOUT στην οποία µεταβιβάζει τις µεταβλητές-πίνακες L

και Χ για εκτύπωση.

Στην υπορουτίνα εισάγονται και επιστρέφουν οι µεταβλητές: N, A, L, CPOL, Y0, X, TOLLX,

KSOLVEX, KODLX, IPRINTLX οι οποίες είναι αυτές των υπορουτινών EIGENR και

LEVERRIER.

Ακολουθούν οι λίστες των εντολών των υπορουτινών KRYLOV και EIGOUT.

Page 46: SHMEIWSEIS

45

! ================================================================== ! | SUBROUTINE TO FIND ALL REAL EIGENVECTORS OF A REAL MATRIX | ! | [A]nxn | ! | | ! | Eigenvectors by the Krylov Method | ! | | ! | Developed by M. G. Sfakianakis | ! | University of Patras, 2001 | ! | | ! ================================================================== ! ! ------------------------------------------------------------------ ! Variable Description ! -------------------- ! ! N : Matrix [A] dimension, n. ! [A]nxn : Matrix [A]nxn ! [L]n : Eigenvalues λ1,λ2,.....,λn. ! [CPOL]n : Characteristic Polynomial coefficients ! p0,p1,p2,...,pn-1,pn. ! [Y0]n : Inital guess of vector y0 of Krylov's Method. ! [X]nxn : Eigenvectors. 1st column is the eigenvector of ¢1, ! 2nd column is the eigenvector of λ2, etc. ! TOLLX : Tolerance to check if [A-λI][X]<=ε. ! KSOLVEX : Solution code (0=Not Very Good Solution, 1=Excellent ! Solution) ! KODLX : Computation code ! (2=non-normalized eigenvectors ! 3=normalized eigenvectors by length ! 4=normalized eigenvectors by unity) ! IPRINTLX : Print out code ! (0=no print at all, ! 1=only eigenvalues, ! 2=eigenvalues & non-normalized eigenvectors ! 3=eigenvalues & normalized eigenvectors by length ! 4=eigenvalues & normalized eigenvectors by unity) ! ------------------------------------------------------------------ ! SUBROUTINE KRYLOV (N,A,L,CPOL,Y0,X,TOLLX,KSOLVEX,KODLX,IPRINTLX) ! IMPLICIT REAL*8 (A-H,O-Z) REAL*8 A(N,N),L(N),X(N,N),Y0(N),CPOL(0:N),LENGTH REAL*8, ALLOCATABLE :: Y(:,:),APREV(:,:),ANEW(:,:),QPOL(:) CHARACTER*50, ALLOCATABLE :: COMM(:) CHARACTER*50 TEMP ! ! ------------------------------------------------------------------ ! COMPUTE k=1,2,...,n-1 POWERS OF [A]**k & VECTORS Υ(k) OF KRYLOV'S ! METHOD ! ------------------------------------------------------------------ ! ALLOCATE (ANEW(N,N),APREV(N,N),Y(N,0:N-1)) ! DO I=1,N DO J=1,N ANEW(I,J) = A(I,J) END DO Y(I,0) = Y0(I) END DO ! DO M=1,N-1 ! IF (M==1) GO TO 100 DO I=1,N DO J=1,N ANEW(I,J) = 0.00D+00 DO K=1,N ANEW(I,J) = ANEW(I,J) + APREV(I,K)*A(K,J) END DO END DO END DO ! 100 DO I=1,N Y(I,M) = 0.00D+00 DO J=1,N Y(I,M) = Y(I,M) + ANEW(I,J)*Y0(J) END DO END DO ! DO I=1,N DO J=1,N APREV(I,J) = ANEW(I,J) END DO END DO ! END DO ! DEALLOCATE (ANEW,APREV) ! ! ------------------------------------------------------------------ ! START COMPUTING EIGENVECTORS X(i) ! ------------------------------------------------------------------ ! ALLOCATE (QPOL(0:N-1)) ! DO I=1,N ! ! ------------------------------------------------------------------ ! 1. COMPUTE Φi(λi) = P'(λi) ! ------------------------------------------------------------------ ! FI = 0.00D+00 DO J=N,2,-1 FI = FI + J*CPOL(J)*(L(I)**(J-1)) END DO FI = FI + CPOL(1) ! ! ------------------------------------------------------------------ ! 2. COMPUTE COEFFICIENTS qi OF POLYNOMIAL Φi(λ) ! ------------------------------------------------------------------ ! QPOL(N-1) = 1.00D+00 DO J=N-2,0,-1 QPOL(J) = L(I)*QPOL(J+1) + CPOL(J+1) END DO

! ! ------------------------------------------------------------------ ! 3. COMPUTE EIGENVECTORS ciΧ(i) ! ------------------------------------------------------------------ ! DO J=1,N X(J,I) = 0.00D+00 DO K=N-1,0,-1 X(J,I) = X(J,I) + QPOL(K)*Y(J,K) END DO X(J,I) = X(J,I)/FI IF (DABS(X(J,I))<=1.00D-10) X(J,I) = 0.00D+00 END DO ! ! ------------------------------------------------------------------ ! PROCEED TO COMPUTATION OF THE NEXT EIGENVECTOR X(i) ! ------------------------------------------------------------------ ! END DO ! DEALLOCATE (QPOL,Y) ! ! ------------------------------------------------------------------ ! NORMALIZE EIGENVECTORS ! ------------------------------------------------------------------ ! GO TO (10,20,30), KODLX-1 ! 20 DO J=1,N LENGTH = 0.00D+00 DO I=1,N LENGTH = LENGTH + (X(I,J)**2) END DO LENGTH = DSQRT(LENGTH) DO I=1,N IF (LENGTH/=0.00) X(I,J) = X(I,J)/LENGTH END DO END DO GO TO 10 ! 30 DO J=1,N AMAX = -1.00D+99 DO I=1,N AMAX = DMAX1(AMAX,DABS(X(I,J))) IF (AMAX==DABS(X(I,J))) INDEX = I END DO AMAX = X(INDEX,J) DO I=1,N IF (AMAX/=0.00) X(I,J) = X(I,J)/AMAX END DO END DO ! ! ------------------------------------------------------------------ ! PRINT EIGENVECTORS ci[Xi] OR [Xi] ! ------------------------------------------------------------------ ! 10 CALL EIGOUT (N,L,X,IPRINTLX) ! ! ------------------------------------------------------------------ ! CHECK IF [Xi] /= 0.00D+00 ! ------------------------------------------------------------------ ! WRITE (*,*) ! IVEC = 1 DO J=1,N SUM = 0.00D+00 DO I=1,N SUM = SUM + DABS(X(I,J)) END DO IF (DABS(SUM)<=1.00D-08) IVEC = 0 IF (DABS(SUM)<=1.00D-08) & & WRITE (*,"('***** WARNING: Eigenvector No.: ',I10, & & ' has almost zero components')") J END DO ! IF (IVEC==0) & & WRITE (*,"(/'***** Try another initial vector y(0)')") ! ! ------------------------------------------------------------------ ! CHECK SOLUTION [A-λiI][Xi] <= ε ! ------------------------------------------------------------------ ! WRITE (*,*) ! IERR = 0 DO K=1,N KSOLVEX = 1 DO I=1,N SUM = 0.00D+00 DO J=1,N SUM = SUM + A(I,J)*X(J,K) END DO DIF = SUM - L(K)*X(I,K) IF (DABS(DIF)>TOLLX) KSOLVEX = 0 END DO IF (KSOLVEX==0) IERR = IERR + 1 IF (KSOLVEX==0) & & WRITE (*,"('***** ERROR: Wrong Eigenvector No.: ',I10)") K END DO ! KSOLVEX = 1 IF (IERR/=0) KSOLVEX = 0 ! IF (KSOLVEX==0) WRITE (*,"(/ & & '***** Not very good Eigenvectors *****'/)") ! RETURN END !

Page 47: SHMEIWSEIS

46

! ================================================================== ! | SUBROUTINE TO PRINT ALL REAL EIGENVALUES & EIGENVECTORS OF | ! | A REAL MATRIX [A]nxn | ! | | ! | Called by Subroutines: EIGENR & KRYLOV | ! | | ! | Developed by M. G. Sfakianakis | ! | University of Patras, 2001 | ! | | ! ================================================================== ! ! ------------------------------------------------------------------ ! Variable Description ! -------------------- ! ! N : Matrix [A] dimension, n. ! [A]nxn : Matrix [A]nxn ! [L]n : Eigenvalues λ1,λ2,.....,λn. ! [X]nxn : Eigenvectors. 1st column is the eigenvector of λ1, ! 2nd column is the eigenvector of λ2, etc. ! ------------------------------------------------------------------ ! SUBROUTINE EIGOUT (N,L,X,IPRINTLX) ! IMPLICIT REAL*8 (A-H,O-Z) REAL*8 L(N),X(N,N) CHARACTER*50, ALLOCATABLE :: COMM(:) CHARACTER*50 TEMP ! IF (IPRINTLX==0) RETURN IF (IPRINTLX>1) GO TO 10 ! ! ------------------------------------------------------------------ ! PRINT OUT EIGENVALUES ! ------------------------------------------------------------------ ! WRITE (*,"(/76(1H=)/'EIGENVALUES'/76(1H=) & & //'EIGENVALUE No. λ '/ & & '-------------- ------------')") DO I=1,N WRITE (*,'(I8,9X,E12.6)') I,L(I) END DO ! IF (IPRINTLX==1) RETURN ! ! ------------------------------------------------------------------ ! PRINT OUT EIGENVECTORS ! ------------------------------------------------------------------ ! 10 ALLOCATE (COMM(N)) ! IF (IPRINTLX==2) & WRITE (*,"(/76(1H=)/'NON-NORMALIZED EIGENVECTORS c[X]'/ & & 76(1H=))") IF (IPRINTLX==3) & WRITE (*,"(/76(1H=)/'NORMALIZED EIGENVECTORS [X] BY LENGTH'/ & & 76(1H=))") IF (IPRINTLX==4) & WRITE (*,"(/76(1H=)/'NORMALIZED EIGENVECTORS [X] BY UNITY'/ & & 76(1H=))") !

N5 = 1.00*N/5.00 NREST = N - 5*N5 K5 = 0 ! DO I=1,N5 ! K5 = K5 + 5 ! DO J=K5-5+1,K5 IF (IPRINTLX==2) & & WRITE (TEMP,'(A1,I10,A2,I10,A1)') 'c',J,'[X',J,']' IF (IPRINTLX>=3) & & WRITE (TEMP,'(A2,I10,A1)') '[X',J,']' NCHAR = LEN_TRIM(TEMP) NCHR = 0 DO K=1,NCHAR IF (TEMP(K:K)/=' ') NCHR = NCHR + 1 IF (TEMP(K:K)/=' ') COMM(J)(NCHR:NCHR) = TEMP(K:K) END DO COMM(J)(NCHR+1:NCHAR) = ' ' END DO ! WRITE (*,"(/' n',3X,5(A12,2X))") (COMM(J),J=K5-5+1,K5) WRITE (*,"('-----',3X,5(A12,2X))") ('------------',J=K5-5+1,K5) ! DO J=1,N WRITE (*,'(I5,3X,5(E12.6,2X))') J,(X(J,K),K=K5-5+1,K5) END DO ! END DO ! DO J=5*N5+1,N IF (IPRINTLX==2) & & WRITE (TEMP,'(A1,I10,A2,I10,A1)') 'c',J,'[X',J,']' IF (IPRINTLX>=3) & & WRITE (TEMP,'(A2,I10,A1)') '[X',J,']' NCHAR = LEN_TRIM(TEMP) NCHR = 0 DO K=1,NCHAR IF (TEMP(K:K)/=' ') NCHR = NCHR + 1 IF (TEMP(K:K)/=' ') COMM(J)(NCHR:NCHR) = TEMP(K:K) END DO COMM(J)(NCHR+1:NCHAR) = ' ' END DO ! WRITE (*,"(/' n',3X,5(A12,2X))") (COMM(J),J=5*N5+1,N) WRITE (*,"('-----',3X,5(A12,2X))") ('------------',J=5*N5+1,N) ! DO J=1,N WRITE (*,'(I5,3X,5(E12.6,2X))') J,(X(J,K),K=5*N5+1,N) END DO ! DEALLOCATE (COMM) ! RETURN END !

Page 48: SHMEIWSEIS

47

3. Ολοκλήρωση κατά Gauss

Πίνακας Σηµείων Ολοκλήρωσης & Αντιστοίχων Βαρών

+x-x +1 -1

f(x)

+xi -xi

Αρ. Σηµείων Ολοκλήρωσης

n

∆ιαστήµατα xi

Βάρη wi

xi2 ±0.577350269189626 1.000000000000000

3 0.000000000000000 ±0.774596669241483

0.888888888888889 0.555555555555556

4 ±0.339981043584856 ±0.861136311594053

0.652145154862546 0.347854845137454

5 0.000000000000000

±0.538469310105683 ±0.906179845938664

0.568888888888889 0.478628670499366 0.236926885056189

6 ±0.238619186083197 ±0.661209386466265 ±0.932469514203152

0.467913934572691 0.360761573048139 0.171324492379170

7

0.000000000000000 ±0.405845151377397 ±0.741531185599394 ±0.949107912342759

0.417959183673469 0.381830050505119 0.279705391489277 0.129484966168870

8

±0.183434642495650 ±0.525532409916329 ±0.796666477413627 ±0.960289856497536

0.362683788378362 0.313706645877887 0.222381034453374 0.101228536290376

9

0.000000000000000 ±0.324253423403809 ±0.613371432700590 ±0.836031107326636 ±0.968160239507626

0.330239355001260 0.312347077040003 0.260610696402935 0.180648160694857 0.081274388361574

10

±0.148874338981631 ±0.433395394129247 ±0.679409568299024 ±0.865063366688985 ±0.973906528517172

0.295524224714753 0.269266719309996 0.219086362515982 0.149451349150581 0.066671344308688

∫ ∑+

=

=

≅=1

11

)()(ni

iii xfwdxxfI

Page 49: SHMEIWSEIS

48

Παράδειγµα:

∫ ⎟⎟⎠

⎞⎜⎜⎝

⎛−=

−10

01 dte

cgmI

tmc

για g = 9.8 , c = 12.5 , m = 68.1

Ακριβής Τιµή 289.4351n = 2 290.0145n = 3 289.4393n = 4 289.4352n = 5 289.4351n = 6 289.4351