Capitolul 1 CALCULUL ÎN VIRGULĂ MOBILĂ
1.1
Aritmetica în virgulă mobilă
Rezolvarea diferitelor probleme cu ajutorul calculatorului numeric depinde, într-o prima instanţă, de posibilitatea de a reprezenta numerele în maşina de calcul folosită. Această posibilitate depinde de tipul numerelor şi de structura constructivă (“hardware”) a echipamentului de calcul, anume: baza de reprezentare a numerelor (baza maşinii de calcul) şi lungimea cuvântului de memorie. Ca urmare, se poate reprezenta un număr finit de cifre în sistemul de numeraţie folosit. Din acest punct de vedere, numerele întregi şi cele reale suferă un tratament diferit, după cum se detaliază în continuare. Astfel, numerele întregi reprezentabile în calculator, care formează mulţimea notată cu I, constituie o submulţime finită a mulţimii numerelor întregi Z: I ⊂ Z . Reprezentarea acestor numere este exactă, iar aritmetica cu aceste numere este de asemenea exactă, excepţie facând operaţia de împărţire, în general. Astfel, domeniul valorilor întregi reprezentabile în calculatorul numeric este: I = {z ∈ Z / m I ≤ z ≤ M I } ,
unde mărimile m I şi M I depind de următoarele: spaţiul de memorie pus la dispoziţie pentru acest tip de numere, baza de numeraţie folosită, precum şi modul de reprezentare a acestor numere. Notând cu α baza de reprezentare a numerelor întregi şi cu t I numărul de cifre în baza α care pot fi reprezentate pe un cuvânt sau multiplu de cuvânt de memorie, se pot scrie relaţiile: m I = −α t I −1 , M I = α t I −1 − 1 . Dacă baza de numeraţie este doi şi sunt t I = 16 cifre binare, atunci domeniul de reprezentare pentru numere întregi este cuprins între − 215 şi 215 − 1 . Dacă numărul de cifre binare este t I = 32 , atunci domeniul de reprezentare este cuprins între − 2 31 şi 2 31 − 1 . Încercarea de a opera cu numere care nu aparţin domeniului I de reprezentare, determină, la majoritatea calculatoarelor numerice, emiterea unor
2
1.
Calculul în virgulă mobilă
mesaje de eroare fatală, programele implicate fiind abandonate: “depăşire (binară) inferioară” (dacă z < m I ), respectiv “depăşire (binară) superioară” (dacă z > M I ). Uzuală este reprezentarea în baza de numeraţie doi, alocându-se o cifră binară pentru semn şi t I − 1 cifre pentru număr, anume reprezentarea în cod complementar faţă de baza α definită astfel: z≥0 ⎧z , . z c = ⎨ tI ⎩α − | z |, z < 0
Spre deosebire de numerele întregi, în general numerele reale se reprezintă aproximativ în calculatorul numeric. În continuare se definesc două submulţimi ale numerelor reale şi anume: • submulţimea G care conţine numerele reale care s-ar putea reprezenta în calculatorul numeric; • submulţimea F care conţine numerele reale care se reprezintă efectiv în calculatorul numeric. În timp ce mulţimea G, ca şi mulţimea numerelor reale ℜ , are un număr infinit de elemente, mulţimea F are un număr finit de elemente, relaţia care se poate scrie între aceste mulţimi fiind: F ⊂ G ⊂ ℜ . Metoda cea mai larg folosită pentru reprezentarea numerelor reale în calculator, numere care aparţin mulţimii F, este cea a virgulei mobile. Definiţie: Prin aritmetica virgulei mobile se înţeleg următoarele: (a) un model matematic de reprezentare a numerelor (definirea mulţimii F); (b) o modalitate de reprezentare a numerelor din mulţimea G în calculatorul numeric, altfel spus o modalitate de implementare în calculator a modelului (definirea operatorului de rotunjire, notat cu fl); (c) operaţiile elementare: adunarea, scăderea, înmulţirea şi împărţirea definite cu numerele mulţimii F. Acestea sunt detaliate în secţiunile următoare ale acestui subcapitol. 1.1.1 Numere în virgulă mobilă
Conceptul de număr în virgulă mobilă se poate introduce prin exemplul următor. Exemplul 1.1:
Fie numărul real x = 1234,56789 . Acesta se poate scrie şi sub următoarele
1.1
Aritmetica în virgulă mobilă
3
forme: x = 1234,56789 × 10 0 = 123456789,0 × 10 −5 = 0,00123456789 × 10 6 = = 0,123456789 × 10 4
Corespunzător ultimei forme scrise, se denumesc şi se notează următoarele elemente: • mantisă (fracţie), notată cu f, reprezentând numărul fracţionar; • exponent, notat cu e, reprezentând exponentul la care este ridicată baza de numeraţie folosită; • baza de numeraţie, notată cu β , în cazul de faţă egală cu 10; • numărul cifrelor mantisei, notat cu litera t. Rezultă, aşadar, că poziţia virgulei poate fi modificată, cu adaptarea corespunzătoare a exponentului. Din acest punct de vedere, se spune că numerele întregi tratate anterior sunt reprezentate în virgulă fixă.
Definiţie: O mulţime de numere în virgulă mobilă este definită prin următorii parametri: (a) β - baza maşinii de calcul; (b) t - numărul de cifre în baza β utilizate pentru a reprezenta partea fracţionară (precizia maşinii de calcul); (c) L - cel mai mic exponent (limita de depăşire inferioară); (d) U - cel mai mare exponent (limita de depăşire superioară).
Exponentul e este cuprins între valorile: L ≤ e ≤ U . Definiţie: Mulţimea F de numere în virgulă mobilă este:
F = {x ∈ ℜ / x = f ⋅ β e } ∪ {0} , unde:
⎛d f = ±⎜⎜ 1 + ⎝β L≤e≤U
+
di β
i
+
+
dt ⎞ ⎟, 0 ≤ d i ≤ β − 1, i = 1, … , t β t ⎟⎠
unde f este mantisa (fracţia), e este exponentul, β este baza maşinii, t este numărul de cifre în baza β şi d i sunt cifrele bazei.
Dacă pentru orice x ∈ F \ {0} , prima cifră a fracţiei, d 1 , este diferită de zero, atunci se spune că sistemul de numere în virgulă mobilă este normalizat. În acest caz, poate fi scrisă relaţia: 1 / β ≤| f |< 1 .
4
1.
Calculul în virgulă mobilă
Orice număr x ∈ F \ {0} este cuprins între două valori extreme: m ≤| x |≤ M M = β L −1 , M = β U ⋅ (1 − β − t )
Acestea se numesc: m – cel mai mic număr real pozitiv reprezentabil, iar M – cel mai mare număr real pozitiv reprezentabil. În acest caz, mulţimea G se poate defini ca fiind: G = {x ∈ ℜ / m ≤| x |≤ M} ∪ {0} = [− M,− m] ∪ {0} ∪ [m, M ] . Încercarea de a opera cu numere nenule care nu se încadrează între aceste limite conduce, pentru majoritatea calculatoarelor numerice, la emiterea unor mesaje de eroare fatală, care vor determina abandonarea programului: “depăşire flotantă inferioară” (dacă | x |< m ), respectiv “depăşire flotantă superioară” (dacă | x |> M ). În unele implementări, se atribuie valoarea zero pentru numerele din prima categorie menţionată, fără emiterea mesajului de eroare, împreună cu emiterea unui mesaj de avertizare. Exemplul 1.2:
Se consideră o mulţime de numere în virgulă mobilă normalizată cu următorii parametri: β = 2 , t = 3 , L = −1 , U = 2 . Rezultă, conform relaţiilor scrise mai sus: m = 1 / 4 şi M = 7 / 2 . Elementele mulţimii F sunt în acest caz: ± .100 × 2 e , ± .101 × 2 e , ± .110 × 2 e , ± .111 × 2 e , e ∈ {−1, 0, 1, 2} .
Numărul elementelor mulţimii F este: card(F) = 33 . Elementele pozitive ale mulţimii F sunt prezentate în Figura 1.1. m=
0
1 4
2-2
M=
2-1
20
7 2
21
Fig. 1.1 Elementele pozitive ale mulţimii numerelor în virgulă mobilă ( β = 2 , t = 3 , L = −1 , U = 2 , reprezentare normalizată) Mulţimea F este o mulţime finită. Între puterile succesive ale lui β numerele din mulţimea F sunt echidistante, numărul acestora fiind constant. Numărul de elemente ale lui F este dat de relaţia: card(F) = 2 ⋅ β t −1 ⋅ (β − 1) ⋅ ( U − L + 1) + 1 ,
1.1
Aritmetica în virgulă mobilă
5
în care mărimea β t −1 ⋅ (β − 1) = β t − β t −1 reprezintă numărul constant de elemente dintr-un interval definit de către două puteri succesive ale bazei β şi U − L + 1 reprezintă numărul de intervale determinate de către puterile succesive ale lui β . Produsul acestora este multiplicat cu 2 pentru a include atât numerele pozitive, cât şi pe cele negative. Valoarea 1 este adăugată pentru elementul 0. Concluzii: (a) Numerele aparţinând mulţimii F nu sunt echidistante în domeniul lor de existenţă; acestea sunt mai “dese” în apropierea originii (puterile lui β scad) şi mai “rare” spre extremităţile mulţimii F (puterile lui β cresc). (b) Numerele sunt echidistante numai între puterile succesive ale lui β . (c) Datorită faptului că mulţimea F are un număr finit de elemente, nu se pot reprezenta continuu, în detaliu, toate numerele reale; mai mult, fiecare număr din mulţimea F este asociat unui întreg interval din mulţimea G, deci unui întreg interval de numere reale. Uzuală este reprezentarea normalizată în baza de numeraţie doi, alocându-se o poziţie binară pentru semn, un număr de poziţii binare pentru exponent şi t cifre binare pentru mantisă. Deoarece tipul de semn al numărului este memorat, pentru fracţie se realizează o reprezentare a întregului d 1d 2 … d t ⋅ β t (valoarea absolută a mantisei). De asemenea, pentru a nu se memora semnul şi pentru exponent, se reprezintă un număr întreg pozitiv: C = e + E ≥ 0 , mărimea E numindu-se deplasament, iar mărimea C numindu-se caracteristică. Cum reprezentarea este normalizată, prima cifră a fracţiei este d 1 = 1 şi nu se mai reprezintă. Astfel, se câştigă încă o poziţie binară pentru fracţie. Se spune că se realizează o reprezentare normalizată cu “poziţie binară ascunsă” (în limba engleză, “hidden bit”). Exemplul 1.3:
Pentru β = 2 şi 32 de poziţii binare pentru un număr real, reprezentarea se realizează în simplă precizie, iar pentru 64 de poziţii binare pentru un număr real, reprezentarea se realizează în dublă precizie. După standardul IEEE (abreviere din limba engleză, “the Institute of Electrical and Electronics Engineers” Inc. USA), pentru β = 2 rezultă t = 24 , L = −126 şi U = 127 pentru reprezentarea în simplă precizie şi t = 53 , L = −1022 , U = 1023 pentru reprezentarea în dublă precizie. Rezultă, de asemenea, pentru reprezentarea în simplă precizie: m ≅ 10 −38 şi M ≅ 10 +38 , iar pentru reprezentarea în dublă precizie: m ≅ 10 −308 şi M ≅ 10 +308 .
Capitolul 1 CALCULUL ÎN VIRGULĂ MOBILĂ Uzuală este reprezentarea normalizată în baza de numeraţie doi, alocându-se o poziţie binară pentru semn, un număr de poziţii binare pentru exponent şi t cifre binare pentru mantisă. Deoarece tipul de semn al numărului este memorat, pentru fracţie se realizează o reprezentare a întregului d 1d 2 … d t ⋅ β t (valoarea
absolută a mantisei). De asemenea, pentru a nu se memora semnul şi pentru exponent, se reprezintă un număr întreg pozitiv: C = e + E ≥ 0 , mărimea E numindu-se deplasament, iar mărimea C numindu-se caracteristică. Cum reprezentarea este normalizată, prima cifră a fracţiei este d 1 = 1 şi nu se mai reprezintă. Astfel, se câştigă încă o poziţie binară pentru fracţie. Se spune că se realizează o reprezentare normalizată cu “poziţie binară ascunsă” (în limba engleză, “hidden bit”). Exemplul 1.3:
Pentru β = 2 şi 32 de poziţii binare pentru un număr real, reprezentarea se realizează în simplă precizie, iar pentru 64 de poziţii binare pentru un număr real, reprezentarea se realizează în dublă precizie. După standardul IEEE (abreviere din limba engleză, “the Institute of Electrical and Electronics Engineers” Inc. USA), pentru β = 2 rezultă t = 24 , L = −126 şi U = 127 pentru reprezentarea în simplă precizie şi t = 53 , L = −1022 , U = 1023 pentru reprezentarea în dublă precizie. Rezultă, de asemenea, pentru reprezentarea în simplă precizie: m ≅ 10 −38 şi M ≅ 10 +38 , iar pentru reprezentarea în dublă precizie: m ≅ 10 −308 şi M ≅ 10 +308 . 1.1.1 Reprezentarea aproximativă a numerelor. Scheme de rotunjire
Oricare ar fi un număr x ∈ G , x ≠ 0 , acesta poate fi scris sub forma: x = f ⋅ β e + g ⋅ β e−t . Se vor considera fracţiile normalizate, deci sunt îndeplinite relaţiile: 1 / β ≤| f |< 1, 0 ≤| g |< 1 .
(1.1)
2
1.
Calculul în virgulă mobilă
Nu toate numerele din mulţimea G se pot reprezenta exact, datorită faptului că numai t cifre în baza β pot fi reţinute pentru fracţie. În aceste condiţii, se spune că numărul este reprezentat aproximativ (rotunjit). Se defineşte operatorul de rotunjire fl: fl : G → F . Există mai multe modalităţi de definire a acestuia şi anume: (a)
rotunjirea prin tăiere (trunchiere): fl(x) este cel mai apropiat element c ∈ F , de x ∈ G , cu proprietatea | c |≤| x | .
Această modalitate de rotunjire este ilustrată în Figura 1.2. Astfel, oricare ar fi numărul x ∈ [c 2 , c 3 ) , acesta va fi reprezentat prin elementul c 2 . Expresia aproximantului pentru numărul real x este: fl( x ) = f ⋅ β e .
x c1
c2
c3 ∈ F
Fig. 1.2 Principiul rotunjirii prin tăiere (trunchiere): fl( x ) = c 2 , ∀x ∈ [c 2 , c 3 ) Exemplul 1.4:
Se consideră un sistem de numere în virgulă mobilă cu β = 10 , t = 4 . Fie numărul x = 12945,734 . Numărul x se poate scrie sub forma (1.1):
x = 0,12945734 ⋅ 10 5 = 0,1294 ⋅ 10 5 + 0,5734 ⋅ 10 5− 4 , unde f = 0,1294; e = 5; g = 0,5734 . Rezultă, aşadar, valoarea reţinută pentru reprezentare şi rotunjită prin tăiere: fl( x ) = 0,1294 ⋅ 10 5 . Aceasta corespunde numărului 12940 ≠ x . (b)
rotunjirea simetrică: fl(x) este cel mai apropiat element c ∈ F , de x ∈ G (a se vedea Figura 1.3).
Analizând Figura 1.3, rezultă că oricare ar fi numerele x şi y din intervalul definit de elementele aflate la mijlocul intervalelor (c1 , c 2 ) şi, respectiv, (c 2 , c 3 ) , acestea vor fi reprezentate prin elementul c 2 al mulţimii F, expresia pentru fl(x) fiind în acest caz: ⎧ β e | g |< 0, ⎪⎪f ⋅ β , 2. fl( x ) = ⎨ ⎪f ⋅ β e ± β e − t , | g |≥ 0, β 2 ⎩⎪
1.2
Propagarea erorilor în calculele numerice
3
În ultima expresie, semnul “+” se consideră pentru f > 0 şi semnul “-“ se consideră pentru f < 0 . x c1
y c2
c3 ∈ F
Fig. 1.3 Principiul rotunjirii simetrice: fl( x ) = c 2 , fl( y) = c 2 ; ∀x ∈ ((c1 + c 2 ) / 2, c 2 ), ∀y ∈ (c 2 , (c 2 + c 3 ) / 2)
Neajunsul acestei maniere de reprezentare constă în faptul că dacă numărul x este situat la jumătatea distanţei dintre două numere consecutive din mulţimea F, atunci fl(x) poate lua oricare din cele două valori învecinate. (c) rotunjirea uniformă (metoda cifrei pare) În acest caz, fl(x) are următoarea expresie: ⎧ ⎪f ⎪ ⎪f ⎪ fl( x ) = ⎨ ⎪f ⎪ ⎪ ⎪f ⎩
⋅ βe , ⋅ β e ± β e− t , ⋅ β e ± β e− t , ⋅ βe ,
β 2 β | g |> 0, 2 . β | g |= 0, , ultima cifra f − impara 2 β | g |= 0, , ultima cifra f − para 2 | g |< 0,
În această expresie de definiţie, semnul “+” se consideră pentru f > 0 şi semnul “-“ se consideră pentru f < 0 . Această modalitate de reprezentare este adoptată şi de standardul IEEE. Exemplul 1.5:
Se consideră β = 10 , t = 4 şi o rotunjire uniformă. (a)
x = 12944,9942 = 0,1294 ⋅ 10 5 + 0,4994 ⋅ 10 5− 4 . Se observă că |g| este mai mic decât 0.5, deci: fl( x ) = 0,1294 ⋅ 10 5 (= 12940 ≠ x ) .
(b)
x = 129551 = 0,1295 ⋅ 10 6 + 0,51 ⋅ 10 6−4 . Se observă că |g| este mai mare decât 0.5, deci: fl( x ) = 0,1295 ⋅ 10 6 + 10 6− 4 (= 129600 ≠ x ) .
(c)
x = 1297,5 = 0,1297 ⋅ 10 4 + 0,5 ⋅ 10 4− 4 .
4
1.
Calculul în virgulă mobilă
Se observă că |g| este egal cu 0.5 şi ultima cifră a lui f este impară, deci: fl( x ) = 0,1297 ⋅ 10 4 + 10 4 − 4 (= 1298 ≠ x ) . (d)
x = 1296,5 = 0,1296 ⋅ 10 4 + 0,5 ⋅ 10 4− 4 . Se observă că |g| este egal cu 0.5 şi ultima cifră a lui f este pară, deci: fl( x ) = 0,1296 ⋅ 10 4 (= 1296 ≠ x ) .
1.1.2 Operaţii elementare în virgulă mobilă
Se definesc operaţiile elementare care au loc cu elementele unei mulţimi F de numere în virgulă mobilă. Aceste modalităţi de definire sunt implementate uzual în calculatoarele numerice. A. Adunarea
Oricare ar fi două numere x şi y din mulţimea G, pentru care există fl(x) şi fl(y) aparţinând mulţimii F, numărului x + y i se asociază numărul fl( x + y ) obţinut prin aplicarea următorului algoritm: Pas 1: se reprezintă intern numerele x şi y prin fl(x) şi, respectiv, fl(y). Pas 2: dacă numerele au exponent diferit, atunci numărul cu exponent mai mic se aduce la o formă în care exponentul să fie egal cu cel al celuilalt termen, operaţiune care se numeşte denormalizare. Acest lucru se realizează prin deplasarea mantisei spre dreapta, inserând zerouri după virgulă.Astfel, se deplasează mantisa atâtea poziţii câte sunt necesare pentru a creşte exponentul la valoarea exponentului celuilalt termen. Pas 3: se adună mantisele şi din rezultat se păstrează t cifre. Pas 4: dacă este necesar, se normalizează rezultatul. Observaţii: 1. Deplasarea mantisei spre dreapta determină creşterea exponentului, iar deplasarea spre stânga a mantisei determină scăderea exponentului. 2. Scăderea se realizează la fel ca adunarea, cu deosebirea că mantisele se scad. În fapt, scăderea reprezintă o adunare în care scăzătorul are semn schimbat. Consecinţa esenţială a acestui mod de definire este aceea că, spre deosebire de aritmetica reală, adunarea în virgulă mobilă nu este asociativă. Exemplul 1.6:
Se consideră o aritmetică a virgulei mobile cu β = 10 , t = 3 , reprezentare normalizată şi rotunjire prin tăiere. Fie calculul: 0,001 + 1 − 1 . Asociind primii
1.2
Propagarea erorilor în calculele numerice
5
doi termeni, se ajunge la rezultatul fl(fl(10 −3 + 1) − 1) = 0 , care este eronat. În cazul asocierii ultimilor doi termeni se obţine: fl(10 −3 + fl(1 − 1)) = 10 −3 , care este rezultatul corect. Exemplul 1.7:
Se consideră o aritmetică a virgulei mobile cu β = 10 , t = 3 , reprezentare normalizată şi rotunjire prin tăiere. Fie calculul: 1,001 − 1 . Se obţine: fl(1,001 − 1) = 0 , rezultat eronat. Exemplele 1.6 şi 1.7 pun în evidenţă două fenomene nedorite şi generatoare de erori, care pot apare la efectuarea unei adunări în virgulă mobilă:
(a)
omiterea catastrofală: apare atunci când se adună doi termeni şi valoarea absolută a unui termen este mai mică decât precizia de reprezentare a celuilalt termen; în acest caz, rezultatul este dat de termenul cu valoare absolută mai mare (această situaţie este ilustrată în Exemplul 1.6).
(b)
neutralizarea termenilor: apare atunci când se adună numere cu semne diferite şi cu valori absolute apropiate; în acest caz, în mod eronat, rezultatul este nul (această situaţie este ilustrată în Exemplul 1.7).
Precizia calculelor numerice este caracterizată de două mărimi constante a căror valoare este dependentă de tipul maşinii de calcul folosite. Cele două valori menţionate, numite şi “constante de maşină”, sunt introduse prin următoarea definiţie. Definiţie: Epsilonul maşină pentru adunare (notat ε +m ) reprezintă cel mai mic număr real pozitiv reprezentabil care schimbă, prin adunare, unitatea maşinii de calcul: fl(1 + ε +m ) > 1 . Epsilonul maşină pentru scădere (notat ε −m ) reprezintă cel mai mic număr real pozitiv reprezentabil care schimbă, prin scădere, unitatea maşinii de calcul: fl(1 − ε −m ) < 1 .
În Figura 1.4 sunt ilustrate cele două definiţii. Conform Figurii 1.4, sunt îndeplinite relaţiile: • adunare: fl(1 + ε +m ) > 1, fl(1 + c) = 1 ; •
scădere: fl(1 − ε +m ) < 1, fl(1 − c) = 1 .
6
1.
Calculul în virgulă mobilă
c ∈F
εm-
εm+
1
Fig. 1.4 Conceptul de epsilon maşină
Astfel, rezultă că cele două mărimi au valorile: ε +m = β1− t , ε −m = β − t . Se demonstrează că, pentru o aritmetică a virgulei mobile cu β = 2 , este îndeplinită relaţia: ε +m = 2 ⋅ ε −m . Exemplul 1.8:
Valorile celor două constante de maşină, în standardul IEEE, sunt următoarele: • pentru reprezentarea în simplă precizie: ε m− = 5.96 ⋅ 10 −8 ; ε m+ = 1.19 ⋅ 10 −7 ; •
pentru reprezentarea în dublă precizie: ε m− = 1.11 ⋅ 10 −16 ; ε m+ = 2.22 ⋅ 10 −16 .
Următorul algoritm, descris în limbaj pseudocod (a se vedea Anexa B), descrie modul de calcul al epsilonului maşină pentru adunare, rezultatul final gasindu-se în variabila eps_p: atribuie eps_p ← 1 cât timp ( 1 + eps _ p > 1 ) execută ⎡ atribuie eps_p ← 0.5*eps_p ⎣ atribuie eps_p ← 2*eps_p. B. Înmulţirea
Oricare ar fi x şi y, două numere din mulţimea G, pentru care există fl(x) şi, respectiv, fl(y) aparţinând multimii F, numărului x ⋅ y i se asociază numărul fl( x ⋅ y) , care se determină cu algoritmul următor: Pas 1: se reprezintă intern numerele x şi y prin fl(x) şi, respectiv, fl(y). Pas 2: se înmulţesc fracţiile şi se adună exponenţii. Pas 3: din fracţia rezultată se opresc t cifre. Pas 4: dacă este necesar, se normalizează rezultatul. Observaţii: 1. Înmulţirea nu este asociativă.
1.2
Propagarea erorilor în calculele numerice
7
2. Împărţirea se realizează în aceeaşi manieră ca şi înmulţirea, cu deosebirea că la pasul 2 mantisele se împart, iar exponenţii se scad. Exemplul 1.9:
Se consideră o aritmetică a virgulei mobile cu β = 10 , t = 3 , reprezentare normalizată şi rotunjire prin tăiere. Fie x = 22,547 şi y = 0,43936 . Rezultă fl( x ⋅ y) = 9,900 .
1.2
Propagarea erorilor în calculele numerice
În general, în cursul rezolvării unei probleme cu ajutorul calculatorului numeric, precizia calculelor este influenţată de mai mulţi factori. Astfel, eroarea totală dintr-un calcul numeric este generată de trei surse principale de erori: (a)
erori inerente;
(b)
erori de metodă (de calcul);
(c)
erori de reprezentare.
Erorile inerente provin din datele iniţiale ale problemei de rezolvat (date care pot fi rezultatele unor măsurători experimentale sau ale altor calcule anterioare) şi/sau erorile provenite din faptul că se lucrează cu un model aproximativ al fenomenului real implicat în problema de rezolvat. Erorile de metodă (sau de trunchiere) sunt datorate metodei numerice utilizate. În general, este necesar un număr mare de operaţii pentru a putea ajunge la soluţia exactă (de regulă, atunci când o expresie de calcul conţine o infinitate de termeni) şi calculele sunt oprite, în funcţie de un anumit criteriu, atunci când se ajunge la o anumită precizie acceptabilă (aşadar conştientizată). Erorile de reprezentare sunt datorate posibilităţii efective de a reprezenta numerele în calculatorul numeric. Acest tip de erori se manifestă în datele iniţiale, intermediare şi în cele de ieşire care constituie rezultatele finale.
1.1
Propagarea erorilor în calculele numerice
În general, în cursul rezolvării unei probleme cu ajutorul calculatorului numeric, precizia calculelor este influenţată de mai mulţi factori. Astfel, eroarea totală dintr-un calcul numeric este generată de trei surse principale de erori: (a)
erori inerente;
(b)
erori de metodă (de calcul);
(c)
erori de reprezentare.
Erorile inerente provin din datele iniţiale ale problemei de rezolvat (date care pot fi rezultatele unor măsurători experimentale sau ale altor calcule anterioare) şi/sau erorile provenite din faptul că se lucrează cu un model aproximativ al fenomenului real implicat în problema de rezolvat. Erorile de metodă (sau de trunchiere) sunt datorate metodei numerice utilizate. În general, este necesar un număr mare de operaţii pentru a putea ajunge la soluţia exactă (de regulă, atunci când o expresie de calcul conţine o infinitate de termeni) şi calculele sunt oprite, în funcţie de un anumit criteriu, atunci când se ajunge la o anumită precizie acceptabilă (aşadar conştientizată). Erorile de reprezentare sunt datorate posibilităţii efective de a reprezenta numerele în calculatorul numeric. Acest tip de erori se manifestă în datele iniţiale, intermediare şi în cele de ieşire care constituie rezultatele finale.
1.2
Natura problemelor de calcul şi caracterizarea algoritmilor
1.2.1 Natura problemelor de calcul Se consideră o anumită problemă de calcul. Din punctul de vedere al matematicii reale, problema lucrează cu datele exacte notate cu D. Se notează generic cu G ceea ce se doreşte a calcula, implicând anumite relaţii matematice exacte. Aceasta poate fi scrisă sub forma unei aplicaţii: D → G (D) , cum este
prezentat principial în Figura 1.6. Aşadar, G(D) reprezintă soluţia matematică exactă, obţinută lucrând cu datele exacte D. Se consideră D ∗ ca fiind datele D afectate de eroare (datele D perturbate). În acest caz, soluţia exactă matematic a problemei de calcul corespunzătoare
2
1.
Calculul în virgulă mobilă
datelor perturbate D ∗ se notează cu G (D ∗ ) . Definiţie: Problema de calcul, G, se spune că este bine condiţionată dacă datele exacte ale problemei, D, şi datele perturbate ale problemei, D ∗ , fiind apropiate într-un anumit sens, atunci şi soluţia exactă matematic a problemei de calcul corespunzătoare datelor exacte, G(D), este apropiată, într-un anumit sens de soluţia exactă matenatic a problemei de calcul corespunzătoare datelor perturbate, G(D*). Altfel, problema de calcul se spune că este prost (sau rău) condiţionată.
G G(D)
D
≈
≈ *
G(D )
D* G spaţiul datelor
spaţiul soluţiilor
Fig. 1.6 Conceptul de problemă bine condiţionată: D ≅ D ∗ ⇒ G (D) ≅ G (D ∗ )
Altfel spus, o problemă este bine condiţionată dacă mici perturbaţii în una sau toate datele iniţiale ale problemei conduc la mici perturbaţii în datele de ieşire (rezultate sau soluţii). Observaţie: Pentru a caracteriza “apropierea” sau “îndepărtarea” dintre D şi D ∗ , respectiv G (D) şi G (D ∗ ) , trebuie cunoscute două elemente: natura datelor D şi natura soluţiilor G (D) . Dacă D şi G (D) aparţin mulţimii numerelor complexe, atunci se va folosi funcţia
modul
pentru
a
aprecia
diferenţele
| D − D∗ |
şi,
respectiv,
∗
| G ( D) − G ( D ) | . Dacă D şi G (D) sunt elementele unui spaţiu liniar finit dimensional (vectori, matrice), se vor folosi, corespunzător, norme vectoriale, respectiv matriciale. În cele ce urmează, se notează generic erorile absolute ale mărimilor implicate cu:
1.2
Natura problemelor de calcul şi caracterizarea algoritmilor
3
e D =| D − D ∗ | şi e G =| G (D) − G (D ∗ ) | . Se poate defini numărul de condiţie al problemei G ca fiind raportul dintre eroarea absolută în soluţiile problemei de calcul şi eroarea absolută în datele de intrare ale problemei de calcul: k (G ) = e G / e D .
Dacă acest număr de condiţie este egal cu 1 sau are valori apropiate de 1, se spune că problema este bine condiţionată. Dacă numărul de condiţie este mare sau foarte mare, atunci erorile în datele iniţiale sunt amplificate în soluţia problemei de calcul exactă matematic, problema de calcul fiind prost condiţionată. Exemplul 1.13:
Rezolvarea ecuaţiilor polinomiale este o problemă prost condiţionată. Fie Pn ( x ) un polinom de gradul n: Pn ( x ) = a 0 ⋅ x n + a 1 ⋅ x n −1 + … + a n −1 ⋅ x + a n , unde a i ∈ ℜ, i = 1,..., n; a 0 ≠ 0 sunt coeficienţii polinomului. Se doreşte determinarea valorilor lui x pentru care Pn ( x ) = 0 . În cele ce urmează, se va demonstra că mici variaţii în coeficienţii polinomului conduc la variaţii mari în soluţiile calculate reprezentând rădăcinile polinomului. Se consideră, în continuare, o altă problemă şi anume cea a calculului valorilor proprii ale unei matrice reale pătratice, pe baza ecuaţiei caracteristice ataşate. Se consideră matricea A şi varianta perturbată a acesteia, A p , de forma: ⎡a 1 0 … 0 ⎤ ⎡a 1 0 … 0 ⎤ ⎥ ⎢0 a 1 ⎥ ⎢0 a 1 ⎥ ⎢ ⎥ ⎢ A=⎢ 0⎥ , A p = ⎢ 0⎥ . ⎥ ⎢ ⎥ ⎢ 1⎥ 1⎥ ⎢ ⎢ ⎢⎣ ε … … 0 a ⎥⎦ ⎢⎣0 … … 0 a ⎥⎦ nxn nxn
Ecuaţia caracteristică ataşată matricei A p este: p n (λ ) = det(λ ⋅ I n − A p ) = 0 , unde I n este matricea unitate de ordinul n. Rezultă: p n (λ) = (λ − a ) n − (−1) n ⋅ ε . Ecuaţia p n (λ ) = 0 conduce la (λ − a ) n = (−1) n ⋅ ε . Aşadar, o perturbaţie ε în
4
1.
Calculul în virgulă mobilă
datele de intrare, conduce la o perturbaţie de
n
| ε | în soluţiile calculate.
Se consideră n = 10 şi a = 1 . Pentru cazul în care ε = 0 , rezultă valorile proprii λ i = a = 1, i = 1, … ,10 . Pentru cazul în care ε ≠ 0, ε = 10 −10 , atunci valorile
proprii
λ i = a + 10 10 −10 = 1 + 0.1 = 1.1, i = 1, … ,10 .
sunt
Rezultă:
e D = 10 −10 şi e G = 10 −1 . Dacă ε = −10 −10 , atunci se obţin 10 valori proprii complex conjugate, dispuse în planul complex pe un cerc cu centrul în punctul de coordonate (a,0) şi de rază egală cu 10 10 −10 = 0.1 . Cu valorile numerice considerate, în cazurile particulare ale unei perturbaţii ε nenule, numărul de condiţie al acestei probleme este: k = e G / e D = 10 −1 / 10 −10 = 10 9 , deci eroarea din datele iniţiale ale problemei de calcul a fost amplificată de 10 9 ori în soluţiile calculate. În practică, datorită acestui fapt, nu se calculează valorile proprii ale unei matrice prin aducerea matricei la forma canonică Jordan, utilizată în cadrul acestui exemplu, pentru că pot apare perturbaţii cel puţin de genul celor prezentate. 1.2.2 Caracterizarea algoritmilor
Se consideră o problemă de calcul oarecare care lucrează cu setul de date exacte D. Soluţia exactă matematic a acestei probleme este dată de “funcţia” G. Se consideră, în plus, datele perturbate ale problemei, D ∗ . La implementarea funcţiei G pe un calculator numeric, practic se lucrează cu un algoritm G ∗ (a se vedea Figura 1.7).
G G(D*)
D*
≈
≈ *
G (D)
D G* spaţiul datelor
spaţiul soluţiilor
1.2
Natura problemelor de calcul şi caracterizarea algoritmilor
5
Fig. 1.7 Conceptul de algoritm stabil numeric: D ≅ D ∗ ⇒ G ∗ (D) ≅ G (D ∗ )
De exemplu, considerând că G este o problemă bine condiţionată şi că G ∗ implementează exact soluţia G, totuşi G (D) ≠ G ∗ (D) datorită aritmeticii în virgulă mobilă. Natura algoritmului este teoretic caracterizată de următoarele două mărimi: (a) soluţia matematică exactă a problemei de calcul corespunzătoare setului de date perturbate, G (D ∗ ) ; (b)
soluţia algoritmului G ∗ corespunzătoare setului de date exacte, G ∗ (D) .
Definiţie: Un algoritm G ∗ se numeşte stabil numeric, dacă datele exacte şi datele perturbate ale problemei de calcul G fiind apropiate într-un anumit sens, atunci şi soluţia exactă matematic corespunzătoare setului de date perturbate G(D*) este apropiată, într-un anumit sens, de soluţia algoritmului corespunzătoare setului de date exacte G*(D). Altfel, algoritmul se spune că este instabil din punct de vedere numeric.
Altfel spus, erorile din datele de intrare sunt micşorate de un algoritm stabil numeric, un algoritm instabil numeric amplificându-le. Observaţii: (a) Nu se poate aştepta ca un algoritm stabil numeric să rezolve o problemă prost condiţionată cu o precizie mai mare decât a datelor de intrare. (b) Un algoritm instabil numeric furnizează, de regulă, rezultate eronate chiar pentru probleme bine condiţionate. Definiţie: Un algoritm numeric se spune că este general dacă este aplicabil pentru un domeniu larg de date de intrare. Definiţie: Un algoritm se spune că este sigur în funcţionare, dacă are prevăzut un mecanism care să avertizeze atunci când erorile au crescut excesiv de mult.
Observaţie: Un algoritm instabil numeric poate fi sigur în funcţionare, dacă este capabil să detecteze instabilitatea numerică.
6
1.
Calculul în virgulă mobilă
Concluzie: Rolul calculului numeric (al analizei numerice) este de a analiza natura problemelor de calcul şi de a realiza o proiectare optimă a algoritmilor. Dacă problema de calcul este prost condiţionată, atunci aceasta se reformulează, echivalent, obţinând o problemă bine condiţionată. Mai departe, pentru problema bine condiţionată rezultată, se proiectează un algoritm care să fie stabil numeric, general şi sigur în funcţionare. Exemplul 1.14:
Un exemplu de algoritm instabil numeric este cel folosit pentru calculul integralei definite: 1
I n = ∫ x n ⋅ e x −1 ⋅ dx , 0
prin relaţia de recurenţă, exactă matematic: I n = 1 − n ⋅ I n −1 , n = 2, 3, … , I1 = 1 / e, e = 2.71828182 ... .
Se consideră un calculator cu β = 10 şi t = 6 . Vor rezulta următoarele valori: ˆI ≅ 0.367879 1 ˆI ≅ −0.068400 < 0 ! 9 dar, pentru I 9 , integrandul x 9 ⋅ e x −1 este pozitiv pentru x ∈ (0,1) . Aşadar, s-a obţinut pentru I 9 o valoare eronată. Singura eroare comisă a fost cea în estimarea lui 1 / e , care determină o eroare în evaluarea lui I 1 egală cu e1 = 4.412 × 10 −7 . Pentru evaluarea lui I 2 , eroarea comisă este e 2 ≅ ( −2) ⋅ e1 ; pentru I 3 eroarea comisă este e 3 ≅ ( −3) ⋅ e 2 şi aşa mai departe până la I 9 când se obţine o eroare e 9 = 9!⋅e1 = 0.1601 . ˆI 9 + e 9 = 0.0916 , ceea ce reprezintă rezultatul exact cu patru cifre zecimale. Aceste rezultate arată că algoritmul utilizat este instabil numeric. Stabilizarea algoritmului se poate realiza rescriind relaţia de recurenţă sub forma: I n −1 = (1 − I n ) / n = 1 / n − I n / n , n = … , 3, 2 .
Un majorant pentru I n este:
1.2
Natura problemelor de calcul şi caracterizarea algoritmilor
1
1
0
0
I n = ∫ x n ⋅ e x −1 ⋅ dx ≤ ∫ x n ⋅ dx =
7
1 , n +1
→∞ deoarece | e x −1 |< 1 pentru x ∈ (0,1) . Aşadar, I n ⎯n⎯ ⎯→ 0 . Pentru diverse valori ale lui n se obţin următoarele erori comise la calculul integralei definite, considerând ˆI 20 = 0 :
n = 20 n = 19
e 20 ≤ 1 / 21 ; e19 ≅ e 20 / 20 ;
n = 15
e15 < 4 ⋅ 10 −8 < β1− t = 10 −5 ;
n =9
ˆI = 0.091612 - valoare cu şase zecimale exacte. 9
8
1.
Calculul în virgulă mobilă
Capitolul 2 SISTEME DETERMINATE DE ECUAŢII ALGEBRICE LINIARE
2.1
Formularea problemei
Se consideră sistemul de n ecuaţii algebrice liniare cu n necunoscute: A ⋅ x = b, A ∈ ℜ n×n , b ∈ ℜ n×1 . (2.1) Problema de calcul este determinarea unei soluţii x ∈ ℜ n×1 a sistemului de ecuaţii (2.1) sau, altfel spus, determinarea unui vector care să satisfacă ecuaţia dată. Definiţie: Oricare ar fi matricea A ∈ ℜ n×n , aceasta se numeşte inversabilă (nesingulară) dacă există o matrice X ∈ ℜ n×n astfel încât să fie îndeplinită relaţia: A ⋅ X = X ⋅ A = I n .
În relaţia anterioară, I n este notaţia pentru matricea unitate de ordinul n. În continuare, se notează cu A −1 matricea X care satisface relaţia din definiţia anterioară. Teoremă de existenţă şi unicitate: Dacă matricea A ∈ ℜ n×n este inversabilă, atunci oricare ar fi vectorul b ∈ ℜ n×1 există şi este unică soluţia x a ecuaţiei (2.1).
Soluţia se poate scrie sub forma: x = A −1 ⋅ b . (2.2) Observaţii: 1. A −1 este notaţia pentru inversa matricei A. În practică nu se recomandă calculul matricei inverse şi apoi aplicarea relaţiei (2.2). Un exemplu care să ilustreze aceasta este următorul: se consideră ecuaţia a ⋅ x = b , în care a = 7 şi b = 21 . Se mai consideră o aritmetică a virgulei mobile cu β = 10 , t = 6 şi
2.1
Formularea problemei
9
rotunjire prin tăiere. Atunci soluţia ecuaţiei este: x = a −1 ⋅ b = (7) −1 ⋅ 21 = 0.142857 ⋅ 21 = 2.99997 . Acelaşi sistem se poate rezolva direct şi anume: x = 21 / 7 = 3 , aceasta reprezentând soluţia exactă. 2. Nu se recomandă rezolvarea ecuaţiei prin regula Cramer: x i = Δ i / Δ, i = 1,..., n , unde
Δ
reprezintă determinantul matricei A, iar
Δi
reprezintă
determinanţii matricelor obţinute prin înlocuirea coloanei numărul i a matricei A cu termenul liber asociat ecuaţiei (2.1). Un exemplu pentru această situaţie este acela în care considerând n = 20 , rezultă că trebuie estimaţi 21 de determinanţi care, dacă sunt calculaţi după definiţie, necesită calculul a 20! termeni care implică 19 înmulţiri/termen, deci 19 × 20! operaţii în virgulă mobilă. O operaţie în virgulă mobilă înseamnă o înmulţire şi o adunare: q = v ⊕ w ⊗ z . Pentru un calculator cu 100000 înmulţiri/secundă, rezultă că numai pentru efectuarea înmulţirilor sunt necesari 3 ⋅ 10 8 ani, la care se adaugă erorile de rotunjire! Exemplul 2.1:
Problemele de tipul (2.1) sunt foarte des întâlnite în practică. Ca exemplu generic, se consideră un proces dinamic cu n mărimi de intrare ( u 1 , ..., u n ) şi o mărime de ieşire (y). Corespunzător funcţionării acestuia în regim staţionar sau în regim dinamic, pentru care se realizează o liniarizare a modelului neliniar după un punct de funcţionare, modelul intrare-ieşire al procesului poate fi descris de o ecuaţie de forma: y( u 1 , … , u n ) = c1 ⋅ u 1 + … + c n ⋅ u n .
(2.3)
Se consideră un număr de n experimente prin care se impun anumite valori mărimilor de intrare şi se măsoară valorile pe care le ia mărimea de ieşire a procesului. Rezultatele obţinute pot fi tabelate astfel: nr. experiment
u1
un
y
1
a11
a1n
b1
i
ai1
ain
bi
10
1.
Calculul în virgulă mobilă
n
an1
ann
bn
Notând cu A matricea formată din valorile pe care le iau mărimile de intrare ale procesului, A = [a ij ]1≤i ≤ n şi cu b = [ b i ]1≤i≤ n vectorul valorilor mărimii de 1≤ j≤ n
ieşire, relaţia (2.3) se poate rescrie sub forma A ⋅ x = b, A ∈ ℜ n×n , b ∈ ℜ n×1 . (2.1(2.1), unde x = [c1
c 2 … c n ] T , T fiind notaţia pentru operaţia de
transpunere vectorială. Rezolvarea ecuaţiei rezultate constituie, în acest caz, o identificare a modelului pentru regimul static de funcţionare a procesului. Problema aceasta va avea o soluţie, dacă şi numai dacă liniile sau coloanele matricei experimentelor [A | b ] sunt vectori liniari independenţi, după cum se va specifica ulterior. Metodele numerice de rezolvare a unui sistem de ecuaţii algebrice liniare se împart în următoarele două categorii: metode directe şi metode iterative (indirecte). Metodele directe se bazează pe reducerea sistemului (2.1) la un sistem echivalent, direct rezolvabil prin mijloace elementare. Principial, aceasta foloseşte eliminarea progresivă a necunoscutelor, numită şi eliminare gaussiană. Practic, prin transformări elementare de echivalenţă, se aduce matricea A a sistemului la anumite forme tipice: a) forma superior triunghiulară: ⎡u 11 … … u 1n ⎤ ⎢ 0 ⎥ ⎢ ⎥; U= ⎢ ⎥ ⎢ ⎥ ⎣ 0 … 0 u nn ⎦ b) forma inferior triunghiulară: ⎡ l11 0 … 0 ⎤ ⎢ ⎥ ⎥. L=⎢ ⎢ 0⎥ ⎢ ⎥ ⎣l n1 … … l nn ⎦ Procedura de transformare se numeşte triangularizare. Astfel, se furnizează soluţia exactă a sistemului de ecuaţii (2.1), în cazurile (ideale) în care erorile de rotunjire sunt absente. Numărul de operaţii în virgulă mobilă, necesare triangularizării unei matrice pătratice de ordin n, este de ordinul lui n 3 . De aceea, aceste metode se recomandă pentru rezolvarea unor sisteme de ecuaţii algebrice liniare de ordin mai mic decât 10 2 .
2.2
Rezolvarea sistemelor prin triangularizare directă
11
Metodele iterative au la bază construirea unui şir de aproximaţii pentru [k ] soluţia sistemului (2.1), x , k = 0,1, … care să fie convergent pentru k → ∞ la soluţia adevărată, x :
lim || x − x
k →∞
[k ]
|| α = 0 .
Practic, calculele se opresc la un index de iterare [s], atunci când este îndeplinită o condiţie de forma: [s ] [ s −1] || x − x || α ≤ ε impus , [s]
sau, altfel spus, x constituie o aproximare satisfăcătoare a soluţiei calculate. Având în vedere faptul că pentru o singură iteraţie numărul de operaţii în virgulă mobilă este de ordinul lui n 2 , asemenea metode se folosesc pentru sisteme de ordin mare şi anume 10 2 ÷ 10 4 .
2.2
Rezolvarea sistemelor prin triangularizare directă
2.2.1 Principiul metodei
Se consideră problema (2.1) şi matricea sistemului: A = [a ij ]1≤i ≤ n . 1≤ j≤ n
Definiţie: Matricele [a 11 ] , …, [a ij ]1≤i ≤ n −1 se numesc submatrice principale ale lui A 1≤ j≤ n −1
sau minori principali directori. Teoremă: Dacă matricea A ∈ ℜ n×n are toate submatricele principale inversabile (nesingulare), atunci există matricele L, D, U ∈ ℜ n×n astfel încât: A =L⋅D⋅U
(2.4)
unde L este o matrice inferior triunghiulară, D este o matrice diagonală şi U este o matrice superior triunghiulară.
Se pot face, în cele ce urmează, următoarele observaţii: 1. relaţia (2.4) se numeşte factorizare L-D-U a matricei A; 2. uzuale sunt factorizările: A = L ⋅ U ; 3. demonstraţia teoremei enunţate este constructivă, constituind însuşi algoritmul de descompunere L-U a matricei A;
12
1.
Calculul în virgulă mobilă
4. algoritmul de descompunere este în fond procedeul de eliminare gaussiană, prin care matricea A este adusă la forma superior triunghiulară în urma unui şir de transformări de asemănare. Transformările efectuate asupra matricei A se “acumulează” într-o matrice inferior triunghiulară, cu elementele de pe diagonala principală egale cu 1. Acest tip de descompunere se numeşte descompunere Doolittle. 5. considerând descompunerea L-U a matricei sistemului A, A = L ⋅ U , atunci rezolvarea sistemului (2.1) implică două subetape: a. rezolvarea sistemului L ⋅ y = b , etapă numită şi substituţie înainte, obţinând
soluţia
intermediară
y.
Determinarea
componentelor
vectorului y = [ y i ]1≤i ≤ n are loc din aproape în aproape: se începe cu y1
b.
(prima ecuaţie), se înlocuieşte în a doua ecuaţie determinând pe y 2 şi aşa mai departe. rezolvarea sistemului U ⋅ x = y , în care necunoscuta este x , etapă numită şi substituţie inversă. În acest caz, determinarea componentelor vectorului x are loc pornind de la ultima ecuaţie.
Această manieră de descompunere şi de rezolvare se încadrează în aşanumita rezolvare a sistemelor determinate de ecuaţii algebrice liniare prin triangularizare simplă (directă).
Capitolul 2 SISTEME DETERMINATE DE ECUAŢII ALGEBRICE LINIARE
2.1
Formularea problemei
Se consideră sistemul de n ecuaţii algebrice liniare cu n necunoscute:
A ⋅ x = b, A ∈ ℜ n×n , b ∈ ℜ n×1 .
(2.1)
Problema de calcul este determinarea unei soluţii x ∈ ℜ n×1 a sistemului de ecuaţii (2.1) sau, altfel spus, determinarea unui vector care să satisfacă ecuaţia dată. Definiţie: Oricare ar fi matricea A ∈ ℜ n×n , aceasta se numeşte inversabilă (nesingulară) dacă există o matrice X ∈ ℜ n×n astfel încât să fie îndeplinită relaţia: A ⋅ X = X ⋅ A = I n .
În relaţia anterioară, I n este notaţia pentru matricea unitate de ordinul n. În continuare, se notează cu A −1 matricea X care satisface relaţia din definiţia anterioară. Teoremă de existenţă şi unicitate: Dacă matricea A ∈ ℜ n×n este inversabilă, atunci oricare ar fi vectorul b ∈ ℜ n×1 există şi este unică soluţia x a ecuaţiei (2.1).
Soluţia se poate scrie sub forma: x = A −1 ⋅ b .
(2.2)
Observaţii: 1. A −1 este notaţia pentru inversa matricei A. În practică nu se recomandă calculul matricei inverse şi apoi aplicarea relaţiei (2.2). Un exemplu care să ilustreze aceasta este următorul: se consideră ecuaţia a ⋅ x = b , în care a = 7 şi b = 21 . Se mai consideră o aritmetică a virgulei mobile cu β = 10 , t = 6 şi
36
2.
Sisteme determinate de ecuaţii algebrice liniare
rotunjire prin tăiere. Atunci soluţia ecuaţiei este: x = a −1 ⋅ b = (7) −1 ⋅ 21 = 0.142857 ⋅ 21 = 2.99997 . Acelaşi sistem se poate rezolva direct şi anume: x = 21 / 7 = 3 , aceasta reprezentând soluţia exactă. 2. Nu se recomandă rezolvarea ecuaţiei prin regula Cramer: x i = Δ i / Δ, i = 1,..., n , unde Δ reprezintă determinantul matricei A, iar Δ i reprezintă determinanţii matricelor obţinute prin înlocuirea coloanei numărul i a matricei A cu termenul liber asociat ecuaţiei (2.1). Un exemplu pentru această situaţie este acela în care considerând n = 20 , rezultă că trebuie estimaţi 21 de determinanţi care, dacă sunt calculaţi după definiţie, necesită calculul a 20! termeni care implică 19 înmulţiri/termen, deci 19 × 20! operaţii în virgulă mobilă. O operaţie în virgulă mobilă înseamnă o înmulţire şi o adunare: q = v ⊕ w ⊗ z . Pentru un calculator cu 100000 înmulţiri/secundă, rezultă că numai pentru efectuarea înmulţirilor sunt necesari 3 ⋅ 10 8 ani, la care se adaugă erorile de rotunjire! Exemplul 2.1:
Problemele de tipul (2.1) sunt foarte des întâlnite în practică. Ca exemplu generic, se consideră un proces dinamic cu n mărimi de intrare ( u 1 , ..., u n ) şi o mărime de ieşire (y). Corespunzător funcţionării acestuia în regim staţionar sau în regim dinamic, pentru care se realizează o liniarizare a modelului neliniar după un punct de funcţionare, modelul intrare-ieşire al procesului poate fi descris de o ecuaţie de forma: y( u 1 , … , u n ) = c1 ⋅ u 1 + … + c n ⋅ u n .
(2.3)
Se consideră un număr de n experimente prin care se impun anumite valori mărimilor de intrare şi se măsoară valorile pe care le ia mărimea de ieşire a procesului. Rezultatele obţinute pot fi tabelate astfel: nr. experiment
u1
un
y
1
a11
a1n
b1
i
ai1
ain
bi
2.1
Formularea problemei
n
37
an1
ann
bn
Notând cu A matricea formată din valorile pe care le iau mărimile de intrare ale procesului, A = [a ij ]1≤i≤ n şi cu b = [b i ]1≤i ≤ n vectorul valorilor mărimii de 1≤ j≤ n
ieşire, relaţia (2.3) se poate rescrie sub forma A ⋅ x = b, A ∈ ℜ n×n , b ∈ ℜ n×1 . (2.1(2.1), unde x = [c1
c 2 … c n ] T , T fiind notaţia pentru operaţia de
transpunere vectorială. Rezolvarea ecuaţiei rezultate constituie, în acest caz, o identificare a modelului pentru regimul static de funcţionare a procesului. Problema aceasta va avea o soluţie, dacă şi numai dacă liniile sau coloanele matricei experimentelor [A | b] sunt vectori liniari independenţi, după cum se va specifica ulterior. Metodele numerice de rezolvare a unui sistem de ecuaţii algebrice liniare se împart în următoarele două categorii: metode directe şi metode iterative (indirecte). Metodele directe se bazează pe reducerea sistemului (2.1) la un sistem echivalent, direct rezolvabil prin mijloace elementare. Principial, aceasta foloseşte eliminarea progresivă a necunoscutelor, numită şi eliminare gaussiană. Practic, prin transformări elementare de echivalenţă, se aduce matricea A a sistemului la anumite forme tipice: a) forma superior triunghiulară: ⎡u 11 … … u 1n ⎤ ⎢ 0 ⎥ ⎢ ⎥; U= ⎢ ⎥ ⎢ ⎥ ⎣ 0 … 0 u nn ⎦ b) forma inferior triunghiulară: ⎡ l11 0 … 0 ⎤ ⎢ ⎥ ⎥. L=⎢ ⎢ 0⎥ ⎢ ⎥ ⎣l n1 … … l nn ⎦ Procedura de transformare se numeşte triangularizare. Astfel, se furnizează soluţia exactă a sistemului de ecuaţii (2.1), în cazurile (ideale) în care erorile de rotunjire sunt absente. Numărul de operaţii în virgulă mobilă, necesare triangularizării unei matrice pătratice de ordin n, este de ordinul lui n 3 . De aceea, aceste metode se recomandă pentru rezolvarea unor sisteme de ecuaţii algebrice liniare de ordin mai mic decât 10 2 .
38
2.
Sisteme determinate de ecuaţii algebrice liniare
Metodele iterative au la bază construirea unui şir de aproximaţii pentru [k ] soluţia sistemului (2.1), x , k = 0,1, … care să fie convergent pentru k → ∞ la soluţia adevărată, x : lim || x − x
k →∞
[k]
|| α = 0 .
Practic, calculele se opresc la un index de iterare [s], atunci când este îndeplinită o condiţie de forma: [s] [ s −1] || x − x || α ≤ ε impus , sau, altfel spus, x
[s]
constituie o aproximare satisfăcătoare a soluţiei calculate.
Având în vedere faptul că pentru o singură iteraţie numărul de operaţii în virgulă mobilă este de ordinul lui n 2 , asemenea metode se folosesc pentru sisteme de ordin mare şi anume 10 2 ÷ 10 4 .
2.2
Rezolvarea sistemelor prin triangularizare directă
2.2.1 Principiul metodei
Se consideră problema (2.1) şi matricea sistemului: A = [a ij ]1≤i ≤ n . 1≤ j≤ n
Definiţie: Matricele [a 11 ] , …, [a ij ]1≤i ≤ n −1 se numesc submatrice principale ale lui A 1≤ j≤ n −1
sau minori principali directori. Teoremă: Dacă matricea A ∈ ℜ n×n are toate submatricele principale inversabile (nesingulare), atunci există matricele L, D, U ∈ ℜ n×n astfel încât:
A =L⋅D⋅U
(2.4)
unde L este o matrice inferior triunghiulară, D este o matrice diagonală şi U este o matrice superior triunghiulară.
Se pot face, în cele ce urmează, următoarele observaţii: 1. relaţia (2.4) se numeşte factorizare L-D-U a matricei A; 2. uzuale sunt factorizările: A = L ⋅ U ; 3. demonstraţia teoremei enunţate este constructivă, constituind însuşi algoritmul de descompunere L-U a matricei A;
2.2
Rezolvarea sistemelor prin triangularizare directă
39
4. algoritmul de descompunere este în fond procedeul de eliminare gaussiană, prin care matricea A este adusă la forma superior triunghiulară în urma unui şir de transformări de asemănare. Transformările efectuate asupra matricei A se “acumulează” într-o matrice inferior triunghiulară, cu elementele de pe diagonala principală egale cu 1. Acest tip de descompunere se numeşte descompunere Doolittle. 5. considerând descompunerea L-U a matricei sistemului A, A = L ⋅ U , atunci rezolvarea sistemului (2.1) implică două subetape: a. rezolvarea sistemului L ⋅ y = b , etapă numită şi substituţie înainte, obţinând
soluţia
intermediară
y.
Determinarea
componentelor
vectorului y = [ y i ]1≤i ≤ n are loc din aproape în aproape: se începe cu y1 (prima ecuaţie), se înlocuieşte în a doua ecuaţie determinând pe y 2 şi b.
aşa mai departe. rezolvarea sistemului U ⋅ x = y , în care necunoscuta este x , etapă numită şi substituţie inversă. În acest caz, determinarea componentelor vectorului x are loc pornind de la ultima ecuaţie.
Această manieră de descompunere şi de rezolvare se încadrează în aşanumita rezolvare a sistemelor determinate de ecuaţii algebrice liniare prin triangularizare simplă (directă). În continuare se prezintă câteva rezultate referitoare la algebra matricelor triunghiulare. Definiţie: Se numeşte matrice triunghiulară unitate o matrice inferior sau superior triunghiulară care are elementele de pe diagonala principală egale cu 1.
În ceea ce priveşte matricele triunghiulare, sunt valabile următoarele rezultate. R1: Inversa unei matrice superior (inferior) triunghiulară este o matrice superior (inferior) triunghiulară. R2: Produsul a două matrice superior (inferior) triunghiulare este o matrice superior (inferior) triunghiulară. R3: Inversa unei matrice superior (inferior) triunghiulară unitate este o matrice superior (inferior) triunghiulară unitate. R4: Produsul a două matrice superior (inferior) triunghiulare unitate este o matrice superior (inferior) triunghiulară unitate. În cele ce urmează, se enunţă şi demonstrează următorul rezultat esenţial. Propoziţie:
40
2.
Sisteme determinate de ecuaţii algebrice liniare
Dacă matricea A admite o descompunere L-U, atunci această descompunere este unică.
Demonstraţia se realizează prin reducere la absurd, presupunând că matricea A admite două descompuneri L-U şi anume: A = L1 ⋅ U 1 , A = L 2 ⋅ U 2 . De aici rezultă că L1 ⋅ U 1 = L 2 ⋅ U 2 , ceea ce conduce la: L−21 ⋅ L1 = U 2 ⋅ U 1−1 , adică o matrice inferior triunghiulară unitate ( L−21 ⋅ L1 ) este identică cu o matrice superior triunghiulară ( U 2 ⋅ U 1−1 ). Acest lucru este posibil numai dacă ambele matrice sunt diagonale şi au diagonala principală unitară, adică: L−21 ⋅ L1 ≡ I n şi U 2 ⋅ U 1−1 ≡ I n , ceea ce implică L1 ≡ L 2 , U 1 ≡ U 2 . Procedura de triangularizare directă necesită un număr de operaţii în virgulă mobilă de ordinul lui n 3 / 3 . Numărul total de operaţii în virgulă mobilă pentru rezolvarea unui sistem determinat de ecuaţii algebrice liniare, folosind triangularizarea simplă, este de ordinul lui (n 3 / 3) + n 2 , n 2 operaţii fiind necesare pentru parcurgerea celor două etape din rezolvarea propriu-zisă a sistemului, anume substituţia înainte şi substituţia înapoi. Dacă matricea A este simetrică ( A = A T ) şi pozitiv definită T T ( ∀x ∈ ℜ n×1 , x ≠ 0 n , x ⋅ A ⋅ x > 0 şi x ⋅ A ⋅ x = 0 ⇔ x ≡ 0 n ), atunci A se descompune sub forma A = L ⋅ LT . Aceasta se numeşte descompunerea Cholesky. În acest caz, algoritmul necesită mai puţine operaţii în virgulă mobilă şi anume n 3 / 6 , exploatând faptul că matricea A este simetrică. 2.2.2 Procedura de triangularizare directă a unei matrice
Principiul triangularizării simple poate fi prezentat prin următorul algoritm, descris principial în limbajul pseudocod: atribuie A 1 ← A pentru k = 1, n − 1 execută ⎡ * determinare matrice M k astfel încât matricea A k +1 = M k ⋅ A k să ⎢ ⎢
⎢ ⎣
aibă elementele: a [i ,kk+1] = 0, i = k + 1,..., n şi a [i ,kj+1] = a [i ,kj] , i = 1,..., n; j = 1,..., k − 1
atribuie A k +1 ← M k ⋅ A k
2.2
Rezolvarea sistemelor prin triangularizare directă
41
În final se obţine matricea A n = U . Acest algoritm parcurge (n − 1) etape, la fiecare etapă zerorizându-se elementele de sub diagonala principală şi păstrând nealterate transformările care s-au efectuat în coloanele anterioare ale matricei A. Notând cu ξ vectorul conţinând elementele coloanei k a matricei A k , anume: ξ = [ξ 1 … ξ k
ξ k +1 … ξ n ] T = [a 1[ k,k] … a [kk,k]
a [kk+]1,k
… a [nk,k] ] T ,
atunci matricea de transformare M k se construieşte astfel încât vectorul M k ⋅ ξ să aibă elementele: M k ⋅ ξ = [ξ 1 … ξ k
0 … 0] T .
Se consideră vectorul m k de forma:
m k = [0 … 0 μ k +1,k
… μ n ,k ]T ,
elementele μ i, k , i = k + 1,..., n numindu-se multiplicatori. Vectorul m k se numeşte vector Gauss sau vector de multiplicatori. Subvectorul care conţine strict numai multiplicatorii se numeşte subvector Gauss: t k = [μ k +1, k … μ n ,k ] T . Definiţie: Matricea M k se numeşte matrice de transformare elementară de ordin n şi indice k sau matrice Gauss şi este definită prin: T Mk = In − mk ⋅ ek , T
în care e k = [0 … 0 1 0 … 0] T , elementul egal cu 1 fiind în poziţia k.
Definită astfel, matricea M k este o matrice inferior triunghiulară unitate, este nesingulară şi deci admite inversă. Inversa acesteia este de forma:
M k−1 = I n + m k ⋅ e k . T
(2.5)
Efectul aplicării matricei M k asupra vectorului definit anterior, ξ , este: T
T
M k ⋅ ξ = (I n − m k ⋅ e k ) ⋅ ξ = ξ − m k ⋅ e k ⋅ ξ = ξ − m k ⋅ ξ k = [ξ 1 … ξ k
ξ k +1 − μ k +1,k ⋅ ξ k
… ξ n − μ n ,k ⋅ ξ k ]T
ultimele n − k elemente trebuind a fi zerorizate. Presupunând că ξ k ≠ 0 şi alegând μ i , k = ξ i / ξ k , i = k + 1,..., n , va rezulta: M k ⋅ ξ = [ξ 1 … ξ k
0 … 0] T .
42
2.
Dacă
la
Sisteme determinate de ecuaţii algebrice liniare
etapa
k
a
triangularizării,
elementul
a [kk, k] ≠ 0
şi
μ i , k = a [i ,kk] / a [kk, k] , i = k + 1,..., n , atunci se obţine: M k ⋅ c k (A k ) = [a 1[ k, k] … a [kk−]1, k
a [kk,k]
0 … 0] T ,
în care c k (A k ) reprezintă notaţia pentru coloana k a matricei A k . Acest rezultat evidenţiază faptul că primele k elemente din coloana k a matricei A k rămân neschimbate, iar ultimele n − k elemente devin zero. Elementul ξ k = a [kk,k] se numeşte pivot. Observaţii: 1. În practică, pe calculator, etapa k descrisă mai sus se poate realiza testând condiţia: | a [kk, k] |> ε , în loc de a verifica a [kk, k] ≠ 0 , unde ε este o constantă impusă, de valoare mică sau foarte mică. De exemplu, constanta ε poate fi egală cu epsilonulmaşină. Aceasta se realizează datorită faptului că, dacă în aritmetica reală (exactă) pivotul este nul, în aritmetica virgulei mobile, datorită erorilor de calcul, această situaţie este echivalentă cu: | a [kk, k] |≤ ε . 2. Când pivotul este în modul mai mic sau egal cu ε , eliminarea gaussiană eşuează. Aceasta corespunde situaţiei când matricea iniţială A are submatricea principală de ordin k singulară, deci conform teormei enunţate anterior, descompunerea L-U a matricei A nu există. Efectul aplicării transformării M k asupra celorlaltor coloane ale matricei A k este următorul. Se consideră un vector η ≠ ξ de forma η = [η1 … η n ] T . Aplicând transformarea M k vectorului η , se obţine: M k ⋅ η = [η1 … η k
… η n − μ n ,k ⋅ η k ]T .
η k +1 − μ k +1, k ⋅ η k
Concluzii:
a) Matricea M k lasă nemodificate primele k − 1 coloane ale matricei A k . Considerând vectorul η ca fiind coloana numărul j a matricei A k : η = c j (A k ) = [* … * 1
atunci se obţine:
j
0
j+1
… 0 … 0] T , k
n
j < k , j = 1,..., k − 1 ,
2.2
Rezolvarea sistemelor prin triangularizare directă
M k ⋅ c j (A k ) = [* … * 1
j
0
j+1
43
… 0 0 − μ k +1,k ⋅ 0 … 0 − μ n ,k ⋅ 0] T k
k +1
n
= c j (A k ) b) Matricea M k transformă coloana k a matricei A k , zerorizând liniile k + 1,..., n . c) Matricea M k transformă coloanele k + 1,..., n ale lui A k în liniile k + 1,..., n . Considerând vectorul η ca fiind coloana j a matricei A k : η = c j (A k ),
j = k + 1,..., n ,
atunci se obţine: M k ⋅ c j (A k ) = [* … * a [kk+]1, j − μ k +1, k ⋅ a [kk, ]j … a [nk, ]j − μ n , k ⋅ a [kk, ]j ] T , notaţia * semnificând faptul că elementele implicate rămân nemodificate. Sumarizând, asupra matricei iniţiale A se aplică transformările M 1 , ..., M n −1 , obţinându-se în final forma superior triunghiulară U:
M n −1 ⋅ … ⋅ M 2 ⋅ M 1 ⋅ A = U .
(2.6)
Înmulţind la stânga relaţia (2.6) cu M 1−1 ⋅ M 2−1 ⋅ … ⋅ M −n 1−1 , se obţine: A = M 1−1 ⋅ M −21 ⋅ … ⋅ M −n 1−1 ⋅ U .
(2.7)
Notând produsul M 1−1 ⋅ M 2−1 ⋅ … ⋅ M −n 1−1 cu L, atunci relaţia (2.7) devine: A =L⋅U . Ţinând cont de forma matricelor M k−1 , k = 1,..., n − 1 dată de relaţia (2.5), atunci matricea L este egală cu: n −1
L = M 1−1 ⋅ M 2−1 ⋅ … ⋅ M n−1−1 = I n + ∑ m k ⋅ e k . T
k =1
Matricea L este inferior triunghiulară unitate şi conţine în fiecare coloană, sub elementul unitar de pe diagonala principală, subvectorii Gauss. Prima sub-etapă de rezolvare a sistemului (2.1) este substituţia înainte aplicată sistemului de ecuaţii L ⋅ y = b . Vectorul y rezultat este, de fapt, vectorul care se obţine aplicând la stânga, în aceeaşi ordine, transformările elementare care s-au aplicat matricei A: y = L−1 ⋅ b = M n −1 ⋅ … ⋅ M 2 ⋅ M 1 ⋅ b . Exemplul 2.2:
Se consideră o aritmetică a virgulei mobile cu β = 10 , t = 5 şi rotunjire prin tăiere.
44
2.
Sisteme determinate de ecuaţii algebrice liniare
− 7 0⎤ ⎡ 10 ⎢ A = ⎢− 3 2.099 6⎥⎥; ⎢⎣ 5 − 1 5⎥⎦ −7 ⎡10 ⎢ A 1 = A; A 2 = ⎢ * − 1 ⋅ 10 −3 ⎢⎣ * 2.5 7 ⎡ ⎤ ⎢ y=⎢ 6.001 ⎥⎥; ⎢⎣0.15004 ⋅ 10 5 ⎥⎦
⎡ 7 ⎤ b = ⎢⎢3.901⎥⎥; A ⋅ x = b, x = ? ⎢⎣ 6 ⎥⎦ 0⎤ 0 −7 ⎡10 ⎤ ⎥ ⎢ ⎥; −3 6⎥; A 3 = ⎢ * − 1 ⋅ 10 6 ⎥ ⎢⎣ * 5⎥⎦ * 0.15005 ⋅ 10 5 ⎥⎦ ⎡ − 0.35 ⎤ ⎡ 0 ⎤ x = ⎢⎢ − 1.5 ⎥⎥ ≠ ⎢⎢− 1⎥⎥ = x a , ⎢⎣− 0.99993⎥⎦ ⎢⎣ 1 ⎥⎦
unde x a reprezintă soluţia adevărată a sistemului. Rezultă, aşadar, erori mari în soluţia calculată, x . Cauza care a determinat apariţia acestor erori este aceea că la pasul al doilea al triangularizării s-a lucrat cu un pivot foarte mic în modul ( − 1 ⋅ 10 −3 ), pentru aritmetica virgulei mobile folosite. Multiplicatorul corespunzător este μ 3, 2 = 2.5 /(−10 −3 ) = 2.5 ⋅ 10 3 , deci are o valoare foarte mare în modul pentru aceeaşi aritmetică. Aceasta a condus, mai departe, la apariţia fenomenului de omitere catastrofală în calculele care s-au efectuat pentru obţinerea vectorilor y şi x . Concluzie:
La triangularizarea simplă, unde elementele matricei A se modifică corespunzător relaţiei: a [ijk +1] = a [ijk ] − μ ik ⋅ a [kjk ] , i = k + 1,..., n; j = k ,..., n , multiplicatorii μ ik pot avea, în principiu, orice valoare. Dacă aceste valori sunt mari sau foarte mari, atunci pot apare fenomenele de omitere catastrofală şi/sau de neutralizare a termenilor. Mai mult, dacă aceşti multiplicatori au valori supraunitare în modul, atunci ei amplifică erorile prezente în termenii a [kjk ] , în felul acesta triangularizarea simplă fiind instabilă numeric, în general. Altfel spus, nu există nici un control asupra stabilităţii numerice a algoritmului triangularizării simple.
2.3
Rezolvarea sistemelor pivotare parţială
prin
triangularizare
cu
În cazul triangularizării cu pivotare parţială (Figura 2.1), la pasul k se caută pivotul ξ k printre elementele din coloana k, pornind de la elementul de pe
2.3
Rezolvarea sistemelor prin triangularizare cu pivotare parţială
45
diagonala principală în jos, alegându-se elementul care are cea mai mare valoare în modul: | a [i kk ],k |= max{| a [i ,kk] |} = ξ k . k ≤i ≤ n
Ak =
⎯k
0 ⎯ ik ⎯n | k
Fig. 2.1 Principiul triangularizării cu pivotare parţială a unei matrice: pivotul se găseşte în coloana k, liniile k ÷ n; k=1,...,n
Dacă i k ≠ k , elementul maxim în modul nu se găseşte pe diagonala principală, atunci se interschimbă (permută) liniile k şi i k . Lucrul acesta se realizează automat cu ajutorul unei matrice de permutare de linii Pk care multiplică la stânga matricea A k : Pk ⋅ A k . Pentru matricea care rezultă astfel, se determină apoi matricea de transformare M k ca şi în cazul traingularizării simple, obţinând matricea: A k +1 = M k ⋅ (Pk ⋅ A k ) . În felul acesta, multiplicatorii calculaţi sunt subunitari în modul | μ i , k |≤ 1, i = k + 1,..., n , iar algoritmul triangularizării devine stabil numeric. Matricea M k ⋅ Pk se numeşte matrice de transformare elementară stabilizată. Matricea de permutare Pk se obţine din matricea unitate de ordinul n, I n , schimbând adecvat între ele liniile k şi i k . Această matrice are următoarele proprietăţi: det(Pk ) = −1; Pk = Pk−1 . Teoremă: Dacă matricea A ∈ ℜ n×n este nesingulară, atunci există o matrice P ∈ ℜ n×n , numită matrice generală de permutare de linii, astfel încât: P ⋅ A = L' ⋅ U ,
46
2.
Sisteme determinate de ecuaţii algebrice liniare
în care U este o matrice superior triunghiulară şi L' este o matrice inferior triunghiulară unitate. cu elementele | l i , j |≤ 1, i > j .
Demonstraţia acestei teoreme este constructivă, constituind însuşi algoritmul de triangularizare cu pivotare parţială a unei matrice. Se poate face observaţia că matricea L' conţine în coloana k, sub elementul de pe diagonala principală, subvectorul Gauss (de la triangulaizarea simplă) având liniile permutate. Algoritmul de triangularizare cu pivotare parţială este următorul: atribuie A 1 ← A pentru k = 1, n − 1 execută
⎡ * determinare pivot ξ k ← a [i kk ],k astfel încât | a [i kk ],k |= max{| a [i ,kk] |} k ≤i ≤ n
⎢ ⎢ ⎢ ⎢
dacă (i k ≠ k ) atunci ⎡ * determină Pk ⎢altfel ⎢ atribuie Pk ← I n
⎢
⎣
⎢ * calcul Pk ⋅ A k ⎢ * determinare matrice M k astfel încât matricea ⎢ A k +1 = M k ⋅ (Pk ⋅ A k ) să îndeplinească condiţiile de la ⎢ triangularizarea simplă ⎢ atribuie A k +1 ← M k ⋅ (Pk ⋅ A k ) ⎣ atribuie U ← A n În ansamblu, asupra matricei A sunt aplicate următoarele transformări:
M n −1 ⋅ Pn −1 ⋅ … ⋅ M 2 ⋅ P2 ⋅ M 1 ⋅ P1 ⋅ A = U .
(2.8)
Folosind faptul că Pk = Pk−1 , sau altfel spus Pk ⋅ Pk = I n , relaţia (2.8) poate fi scrisă sub forma:
(M n −1 ⋅ Pn −1 ⋅ … ⋅ M 1 ⋅ P1 ⋅ P1 ⋅ P2 ⋅ … ⋅ Pn −1 ) ⋅ (Pn −1 ⋅ … ⋅ P2 ⋅ P1 ) ⋅ A = U
(2.9)
Matricea produs Pn −1 ⋅ … ⋅ P2 ⋅ P1 se notează cu P. Ea este numită matrice generală de permutare de linii. Produsul din prima paranteză din relaţia (2.9) se notează cu L'−1 . Relaţia (2.9) se scrie sub forma: P ⋅ A = L' ⋅ U , în care matricea L' = Pn −1 ⋅ … ⋅ P2 ⋅ M 1−1 ⋅ P2 ⋅ M −2 1 ⋅ … ⋅ Pn −1 ⋅ M −n 1−1 este o matrice inferior triunghiulară unitate având în fiecare coloană, sub diagonala principală, subvectori Gauss cu liniile permutate.
2.3
Rezolvarea sistemelor prin triangularizare cu pivotare parţială
47
Definiţie: Matricea A ∈ ℜ n×n se numeşte diagonal dominantă pe coloane dacă în fiecare coloană a sa elementul de pe diagonala principală este, în modul, mai mare decât suma modulelor celorlaltor elemente: n
| a j, j |≥ ∑ | a i , j |, ∀j = 1,..., n . i =1 i≠ j
În acest caz, se poate enunţa următorul rezultat. Propoziţie: Dacă matricea A este diagonal dominantă pe coloane, atunci ea admite factorizarea:
P ⋅ A = L' ⋅ U , în care P = I n şi elementele matricei L' sunt în modul subunitare.
Altfel spus, nu este implicată permutarea de linii în cazul traingularizării unei matrice diagonal dominante pe coloane. Rezolvarea sistemului A ⋅ x = b, A ∈ ℜ n×n , b ∈ ℜ n×1 se realizează în două etape: a) descompunerea L' -U a matricei A: P ⋅ A = L' ⋅ U b) rezolvarea propriu-zisă a sistemului care comportă trei subetape, şi anume: b.1.) calculul vectorului c = P ⋅ b ; b.2.)
rezolvarea sistemului L' ⋅ y = c prin substituţie înainte;
b.3.)
rezolvarea sistemului U ⋅ x = y prin substituţie înapoi.
Această modalitate de rezolvare se bazează pe următoarele relaţii: P ⋅ A ⋅ x = P ⋅ b , P ⋅ A = L' ⋅ U , L' ⋅ U ⋅ x = P ⋅ b , y = U ⋅ x , c = P ⋅ b . Exemplul 2.3:
Se consideră problema de la Exemplul 2.2. Se aplică, de această dată, triangularizarea cu pivotare parţială. În acest caz, permutarea de linii intervine la pasul al doilea al triangularizării, permutându-se liniile 2 şi 3: P = P2 . Se obţine, în final: 0 ⎤ ⎡ 7 ⎤ ⎡10 − 7 ⎡0⎤ ⎢ ⎥ ⎢ ⎥ y = ⎢ 2.5 ⎥; U = ⎢ 0 2.5 5 ⎥; x = ⎢⎢− 1⎥⎥ . ⎢⎣6.002⎥⎦ ⎢⎣ 0 ⎢⎣ 1 ⎥⎦ 0 6.002⎥⎦
48
2.
Sisteme determinate de ecuaţii algebrice liniare
Dacă algoritmul de triangularizare cu pivotare parţială eşuează, în sensul că pivotul găsit la o anumită etapă [k] este nul sau foarte mic în modul, aceasta corespunde situaţiei când în aritmetica reală primele k coloane ale matricei A sunt liniar dependente. Dacă însă pivotul găsit este în modul foarte mic în sensul preciziei dorite (mai mic decât un anumit parametru ε impus), atunci se recurge la traingularizarea matricei sistemului prin pivotare totală, ceea ce implică atât permutări de linii cât şi de coloane.
2.4
Rezolvarea sistemelor pivotare totală
prin
triangularizare
cu
În cazul triangularizării cu pivotare totală (Figura 2.2), la pasul [k] al triangularizării se alege drept pivot elementul maxim în modul din submatricea formată din liniile de la k la n, coloanele de la k la n: | a [i kk ], jk |= max{| a [i ,kj] |} . k ≤i ≤ n k ≤ j≤ n
Dacă acest element nu se află în linia şi/sau coloana k, atunci are loc permutarea adecvată de linii şi/sau coloane în scopul aducerii acelui element pe diagonala principală, anume în linia k şi coloana k.
Ak =
⎯k
0 ⎯ ik ⎯n | k
| jk
Fig. 2.2 Principiul triangularizării cu pivotare totală a unei matrice: pivotul se găseşte în submatricea determinată de coloanele k ÷ n şi liniile k ÷ n; k=1,...,n
În continuare, se enunţă şi demonstrează următorul rezultat. Teoremă: Pentru orice matrice A ∈ ℜ n×n nesingulară, există două matrice generale de permutare, P – matrice generală de permutare de linii şi S – matrice generală de permutare de coloane, astfel încât: P ⋅ A ⋅ S = L' ⋅ U ,
2.4
Rezolvarea sistemelor prin triangularizare cu pivotare totală
49
unde U este o matrice superior triunghiulară, iar L' este o matrice inferior triunghiulară unitate având elementele | l i , j |≤ 1, i ≥ j , în fiecare coloană a matricei L’, sub elementul de pe diagonala principală, găsindu-se subvectori Gauss având liniile permutate între ele. Matricele generale de permutare P şi S sunt: P = Pn −1 ⋅ … ⋅ P2 ⋅ P1 ; S = S1 ⋅ S 2 ⋅ … ⋅ S n −1 , unde matricele Pk , S k , k = 1,..., n − 1 sunt matrice de permutare de linii şi, respectiv, de coloane.
Demonstraţia teoremei este constructivă, reprezentând însuşi algoritmul triangularizării cu pivotare totală a matricei A. Acesta este descris în limbajul pseudocod, după cum urmează: atribuie A 1 ← A pentru k = 1, n − 1 execută
⎡ * determinare pivot ξ k ← a [i kk ], jk care satisface: | a [i kk ], jk |= max{| a [i ,kj] |} k ≤i ≤ n k ≤ j≤ n
⎢ dacă (i k ≠ k ) atunci ⎢ ⎡ * determinare Pk (permutarea liniilor i k şi k) ⎢ ⎢altfel ⎢ ⎢ atribuie Pk ← I n ⎢ ⎣ ⎢ dacă ( j k ≠ k ) atunci ⎢ ⎡ * determinare S k (permutarea coloanelor j k şi k) ⎢ ⎢altfel ⎢ ⎢ atribuie S k ← I n ⎢ ⎣ ⎢ atribuie A 'k +1 ← Pk ⋅ A k ⋅ S k ⎢ * traingularizare matrice A 'k +1 : ⎢
A k +1 ← M k ⋅ A 'k +1 = M k ⋅ (Pk ⋅ A k ⋅ S k )
⎣ atribuie U ← A n Tabloul general al transformărilor este: M n −1 ⋅ Pn −1 ⋅ … ⋅ M 2 ⋅ P2 ⋅ M 1 ⋅ P1 ⋅ A ⋅ S1 ⋅ S 2 ⋅ … ⋅ S n −1 = U .
(2.10)
În relaţia (2.10) se notează cu S produsul S1 ⋅ S 2 ⋅ … ⋅ S n −1 şi se ţine cont de faptul că Pk ⋅ Pk = I n . Atunci relaţia (2.10) devine:
50
2.
Sisteme determinate de ecuaţii algebrice liniare
(M n −1 ⋅ Pn −1 ⋅ … ⋅ M 2 ⋅ P2 ⋅ M 1 ⋅ P1 ⋅ P1 ⋅ P2 ⋅ … ⋅ Pn −1 ) ⋅ (Pn −1 ⋅ … ⋅ P1 ) ⋅ A ⋅ S = U
(2.11)
Matricea Pn −1 ⋅ … ⋅ P2 ⋅ P1 se notează cu P, iar cu (L' ) −1 se notează produsul M n −1 ⋅ Pn −1 ⋅ … ⋅ M 2 ⋅ P2 ⋅ M 1 ⋅ P1 ⋅ P1 ⋅ P2 ⋅ … ⋅ Pn −1 . În felul acesta, relaţia (2.11) devine: P ⋅ A ⋅ S = L' ⋅ U . Observaţii: 1. Matricea de permutare de linii, Pk , se obţine din matricea unitate I n schimbând adecvat între ele liniile k şi i k . Deoarece se schimbă linii între ele, matricea Pk se aplică la stânga matricei A k . Matricea Pk are proprietăţile: det(Pk ) = −1; Pk = Pk−1 . 2. Matricea de permutare de coloane, S k , se obţine din matricea unitate I n schimbând adecvat între ele coloanele k şi j k . Deoarece se schimbă coloane între ele, matricea S k se aplică la dreapta matricei A k . Matricea S k are proprietăţile: det(S k ) = −1; S k = S −k 1 . Pentru înţelegerea etapelor rezolvării sistemului (2.1), se înmulţesc ambii membri ai ecuaţiei, la stânga, cu matricea P şi se inserează între A şi x produsul S ⋅ S −1 = I n , obţinându-se: P ⋅ A ⋅ S ⋅ S −1 ⋅ x = P ⋅ b .
(2.12)
Aşadar, rezolvarea sistemului comportă următoarele etape: a) triangularizarea cu pivotare totală a matricei siatemului A: P ⋅ A ⋅ S = L' ⋅ U ; b) rezolvarea propriu-zisă a sistemului (2.12), cu următoarele subetape: b.1.) calculul vectorului c = P ⋅ b ; b.2.) rezolvarea sistemului L' ⋅ y = c prin substituţie înainte; b.3.) rezolvarea sistemului U ⋅ z = y prin substituţie înapoi; b.4.) determinarea soluţiei: x = S ⋅ z . Observaţii: 1) Permutările de linii efectuate asupra matricei A implică permutări de linii asupra termenului liber b .
2.5
Aplicaţii ale descompunerilor L-U
51
2) Permutările de coloane efectuate asupra matricei A implică permutări de linii în soluţia calculată a sistemului z . 3) Triangularizarea cu pivotare totală asigură, la fiecare iteraţie a sa, pivoţii cei mai mari în valoare absolută. Astfel, multiplicatorii vor fi subunitari în modul, de valoarea cea mai mică posibil, | μ i , k |≤ 1 , iar elementele care se transformă devin: a [i ,kj+1] ← a [i ,kj] − μ i ,k ⋅ a [kk, ]j ,
j = k ,..., n; i = k + 1,..., n .
Ca urmare, triangularizarea cu pivotare totală reprezintă procedura de triangularizare cea mai precisă şi stabilă numeric. Dezavantajul ei este acela că necesită un timp de calcul mai mare. De regulă, se foloseşte triangularizarea cu pivotare parţială, recurgându-se la triangularizarea cu pivotare totală numai când cea parţială eşuează. 4) Dacă A este o matrice singulară, atunci pivotarea totală va eşua. În aritmetica reală exactă aceasta corespunde situaţiei când pivotul este nul, matricea A având rangul egal cu k-1, daca algoritmul eşuează la iteraţia k. În aritmetica în virgulă mobilă, datorită erorilor de rotunjire, un pivot nul înseamnă îndeplinirea condiţiei: | a [i kk ], jk |≤ ε , şi se spune că matricele A, ca şi A k , sunt algoritmic singulare. 5) Dacă matricea A este diagonal dominantă pe linii şi pe coloane şi în plus elementele de pe diagonală satisfac relaţiile: | a 11 |≥| a 22 |≥ … ≥| a nn | , atunci descompunerea L' -U cu pivotare totală este: P ⋅ A ⋅ S = L' ⋅ U; unde : P = I n ; S = I n .
2.5
Aplicaţii ale descompunerilor L-U
2.5.1 Calculul determinantului
Considerând o matrice A ∈ ℜ n×n nesingulară, pentru care s-a calculat una din descompunerile de tip L-U, calculul determinantului acesteia poate fi făcut după cum urmează.
Descompunerea L-U bazată pe triangularizarea simplă
În acest caz, descompunerea L-U a matricei A este: A =L⋅U ,
(2.13)
52
2.
Sisteme determinate de ecuaţii algebrice liniare
unde L este o matrice inferior triunghiulară unitate, iar matricea U = [u i, j ]1≤i , j≤ n este o matrice superior triunghiulară. Aplicând funcţia determinant det(.) relaţiei (2.13) se obţine: det(A ) = det(L ⋅ U) = det(L) ⋅ det( U) .
(2.14)
Matricea L fiind o matrice inferior triunghiulară unitate, determinantul său este egal cu 1, iar matricea U fiind o matrice superior triunghiulare, determinantul său este egal cu produsul elementelor de pe diagonala principală. Ţinând cont de acestea, relaţia (2.14) devine: n
det(A) = ∏ u i ,i . i =1
Descompunerea L-U bazată pe triangularizarea cu pivotare parţială
În acest caz, descompunerea L-U a matricei A este: P ⋅ A = L' ⋅ U ,
(2.15)
în care P este matricea generală de permutare de linii (matrice nesingulară), L' este o matrice inferior triunghiulară unitate, iar U = [u i , j ]1≤i , j≤ n este o matrice superior triunghiulară. Ţinând cont de faptul că matricea P este inversabilă, relaţia (2.15) poate fi scrisă sub forma: A = P −1 ⋅ L' ⋅ U .
(2.16)
Aplicând funcţia determinant det(.) relaţiei (2.16), se obţine: det(A) = det(P −1 ⋅ L' ⋅ U) = det(P −1 ) ⋅ det(L' ) ⋅ det( U) . Ţinând cont de următoarele: • P −1 = P1 ⋅ P2 ⋅ … ⋅ Pn −1 , det(P −1 ) = det(P1 ) ⋅ det(P2 ) ⋅ … ⋅ det(Pn −1 ) ; • det(Pi ) = −1, i ∈{1,..., n − 1} , deoarece dacă Pi ≠ I n este realizată o
•
permutare de linii la iteraţia [i] a algoritmului de triangularizare cu pivotare parţială; det(L' ) = 1 ;
•
det( U) = ∏ u i,i ,
n
i =1
atunci relaţia (2.16) devine: n
det(A) = (−1) Npl ⋅ ∏ u i ,i , i =1
unde Npl reprezintă numărul de permutări de linii efectiv realizate în procesul de triangularizare a matricei A.
2.5
Aplicaţii ale descompunerilor L-U
53
Descompunerea L-U bazată pe triangularizarea cu pivotare totală
În acest caz, descompunerea L-U a matricei A este: P ⋅ A ⋅ S = L' ⋅ U ,
(2.17)
în care P este matricea generală de permutare de linii (matrice nesingulară), S este matricea generală de permutare de coloane (matrice nesingulară), L' este o matrice inferior triunghiulară unitate, iar U = [u i , j ]1≤i , j≤ n este o matrice superior triunghiulară. Ţinând cont de faptul că matricele P şi S sunt inversabile, relaţia (2.17) devine:
A = P −1 ⋅ L' ⋅ U ⋅ S −1 .
(2.18)
Dar P −1 = P1 ⋅ P2 ⋅ … ⋅ Pn −1 şi S −1 = S n −1 ⋅ … ⋅ S 2 ⋅ S1 . Ca urmare, relaţia (2.18) devine: n
n
i =1
i =1
det(A) = ∏ det(Pi ) ⋅ det(L' ) ⋅ det( U) ⋅ ∏ det(S i ) .
•
Ţinând cont de următoarele: det(Pi ) = −1, i ∈{1,..., n − 1} , deoarece dacă
Pi ≠ I n
(2.19)
este realizată o
•
permutare de linii la iteraţia [i] a algoritmului de triangularizare cu pivotare totală; det(S i ) = −1, i ∈{1,..., n − 1} , deoarece dacă Si ≠ I n este realizată permutare
•
de coloane la iteraţia [i] a algoritmului de triangularizare cu pivotare totală; det(L' ) = 1 ;
•
det( U) = ∏ u i,i ,
n
i =1
atunci relaţia (2.19) devine: n
det(A) = (−1) Npl+ Npc ⋅ ∏ u i,i , i =1
unde Npl este numărul permutărilor de linii, iar Npc numărul permutărilor de coloane ce s-au realizat efectiv pe parcursul procedurii de triangularizare cu pivotare totală a matricei A. 2.5.2 Rezolvarea ecuaţiilor matriciale
Se consideră ecuaţia matricială de forma: A ⋅ X = B, A ∈ ℜ n×n ; B ∈ ℜ n×p ; X ∈ ℜ n×p ; X = ? .
(2.20)
54
2.
Sisteme determinate de ecuaţii algebrice liniare
Se scriu matricele B şi X pe coloane, sub forma: B = [ b1 … b k
… b p ]; b k ∈ ℜ n×1 , k = 1,..., p
X = [x1 … x k
… x p ]; x k ∈ ℜ n×1 , k = 1,..., p
.
(2.21)
Apelând la descompunerea L-U cu traingularizare simplă (relaţia (2.13)) a matricei A a sistemului (2.20), se obţine relaţia: L⋅ U ⋅ X = B.
(2.22)
Notând produsul U ⋅ X cu Y, relaţia (2.22) devine: L ⋅ Y = B sau, folosind relaţiile (2.21), se poate scrie: L ⋅ y k = b k , k = 1,..., p U ⋅ x k = y k , k = 1,..., p
.
(2.23)
Aşadar, rezolvarea ecuaţiei matriciale (2.20) implică descompunerea L-U a matricei sistemului şi apoi determinarea succesivă a coloanelor matricei necunoscutelor, X cu ajutorul relaţiilor (2.23). Numărul de operaţii în virgulă mobilă necesar rezolvării unui astfel de sistem este de ordinul lui (n 3 / 3) + p ⋅ n 2 , unde n 3 / 3 operaţii în virgulă mobilă sunt necesare descompunerii L-U, iar p ⋅ n 2 operaţii sunt necesare rezolvării sistemului în maniera descrisă. În cazul în care se utilizează descompunerea L-U cu pivotare parţială (relaţia (2.15)) a matricei A a sistemului, atunci rezolvarea sistemului de ecuaţii matriciale (2.20) parcurge următoarele etape: a) descompunerea L' -U a matricei A (relaţia (2.15)); b) calculul coloanelor matricei X; pentru k = 1,..., p se execută: b.1.) calculul vectorului c = P ⋅ b k ; b.2.) rezolvarea sistemului L' ⋅ y k = c prin substituţie înainte; b.3.) rezolvarea sistemului U ⋅ x k = y k prin substituţie inversă. În cazul în care se apelează la descompunerea L-U cu pivotare totală (relaţia (2.17)) a matricei A a sistemului, atunci rezolvarea sistemului de ecuaţii matriciale (2.20) parcurge următoarele etape: a) descompunerea L' -U a matricei A (relaţia (2.17)); b) calculul coloanelor matricei X; pentru k = 1,..., p se execută: b.1.) calculul vectorului c = P ⋅ b k ; b.2.) rezolvarea sistemului L' ⋅ y k = c prin substituţie înainte;
2.5
Aplicaţii ale descompunerilor L-U
55
b.3.) rezolvarea sistemului U ⋅ z k = y k prin substituţie inversă; b.4.) ordonare soluţie calculată: x k = S ⋅ z k . 2.5.3 Calculul inversei unei matrice
Fie o matrice A ∈ ℜ n×n nesingulară. Se doreşte aflarea inversei acesteia, notată cu A −1 . Acest tip de problemă se încadrează în problematica rezolvării ecuaţiilor matriciale de tipul (2.20), considerând B = I n . Astfel, în prima fază se utilizează una din descompunerile L-U ale matricei A, anume traingularizare simplă, triangularizare cu pivotare parţială sau triangularizare cu pivotare totală, urmată de o a doua fază de rezolvare propriuzisă a unui sistem de tipul (2.20). În final, matricea inversă A −1 este egală cu matricea ale cărei coloane sunt vectorii rezultaţi la faza a doua menţionată şi anume: A −1 = X = [x 1 … x k … x n ] . Detaliile acestei proceduri sunt următoarele, în funcţie de tipul de triangularizare a matricei de inversat A caee este folosit:
triangularizare simplă
1. descompunere L-U (relaţia (2.13)); 2. L ⋅ y k = e k , e k = [0 … 0 1 0 … 0] T , unde 1 apare în poziţia k;
U ⋅ x k = y k , k = 1,..., n triangularizare cu pivotare parţială
1. descompunere L-U (relaţia (2.15)); 2. c = P ⋅ e k , e k = [0 … 0 1 0 … 0] T , unde 1 apare în poziţia k; L' ⋅ y k = c
U ⋅ x k = y k , k = 1,..., n triangularizare cu pivotare totală
1. descompunere L-U (relaţia (2.17)); 2. c = P ⋅ e k , e k = [0 … 0 1 0 … 0] T , unde 1 apare în poziţia k; L' ⋅ y k = c
U ⋅ zk = yk x k = S ⋅ z k , k = 1,..., n .
56
2.
Sisteme determinate de ecuaţii algebrice liniare
Această procedură de determinare a inversei unei matrice necesită un număr de operaţii în virgulă mobilă de ordinul lui (n 3 / 3) + n ⋅ n 2 , în cazul utilizării triangularizării simple. Concluzia care se poate desprinde este aceea că inversarea unei matrice necesită un număr mare de operaţii în virgulă mobilă. Ca urmare, în practică, nu se recomandă rezolvarea sistemelor prin metoda bazată pe calculul explicit al inversei matricei sistemului: −1 A ⋅ x = b ⇒ x = A ⋅ b , deoarece există posibilitatea afectării rezultatului obţinut de către erorile de rotunjire acumulate. 2.5.4 Rezolvarea sistemelor în corpul numerelor complexe
Fie sistemul de ecuaţii: A ⋅ z = b, A ∈ C n×n , b ∈ C n×1 .
(2.24)
În principiu, se poate aplica metodologia de rezolvare a sistemelor de ecuaţii având matricea sistemului şi termenul liber cu elemente numere reale, dacă operaţiile cu numere complexe sunt definite (implementate) în limbajul de programare folosit. Altfel, trebuie scrise funcţii sau rutine, stabile din punct de vedere numeric, care să implementeze operaţiile cu numere complexe. De regulă, problema rezolvării unui sistem complex de ordinul n se transformă în problema rezolvării unui sistem real de dimensiune 2 ⋅ n . Astfel, se pot rescrie matricele implicate în (2.24) sub forma următoare, unde i 2 = −1 : A = A 1 + i ⋅ A 2 , A 1 , A 2 ∈ ℜ n ×n , b = b1 + i ⋅ b 2 , b1 , b 2 ∈ ℜ n×1 ,
(2.25)
z = z1 + i ⋅ z 2 , z1 , z 2 ∈ ℜ n×1 . Înlocuind relaţiile (2.25) în (2.24) se obţine: (A 1 + i ⋅ A 2 ) ⋅ (z 1 + i ⋅ z 2 ) = b1 + i ⋅ b 2 . Efectuând calculele se obţine: (A 1 ⋅ z1 − A 2 ⋅ z 2 ) + i ⋅ (A 2 ⋅ z 1 + A 1 ⋅ z 2 ) = b1 + i ⋅ b 2 .
(2.26)
Din relaţia (2.26), identificând partea reală şi partea imaginară pentru cei doi membri ai egalităţii, se obţine: A 1 ⋅ z 1 − A 2 ⋅ z 2 = b1 , A 2 ⋅ z1 + A1 ⋅ z 2 = b 2 ,
ceea ce se poate scrie sub formă matricială astfel:
2.6
Metode iterative
57
− A 2 ⎤ ⎡ z1 ⎤ ⎡ b1 ⎤ ⎥⋅⎢ ⎥=⎢ ⎥ . ⎥ ⎢ ⎥ ⎢ ⎥ A 1 ⎥⎦ ⎢⎣z 2 ⎥⎦ ⎢⎣b 2 ⎥⎦
⎡ A1 ⎢ ⎢ ⎢⎣A 2
(2.27)
− A2 ⎤ ⎡ z1 ⎤ ⎥ , cu x vectorul ⎢ ⎥ şi cu ⎥ ⎢ ⎥ ⎢⎣z 2 ⎥⎦ A 1 ⎥⎦
⎡ A1 Notând cu C matricea de blocuri ⎢⎢ ⎢⎣A 2 ⎡ b1 ⎤ ⎢ ⎥ d vectorul ⎢ ⎥ , relaţia (2.27) se reduce la: ⎢⎣b 2 ⎥⎦ C⋅x =d.
(2.28)
Rezolvând sistemul (2.28), se obţine o soluţie care se poate rescrie sub forma: x = [x 1 … x n
x n +1 … x 2⋅n ] T ,
iar soluţia sistemului complex este: z = [ x 1 … x n ] T + i ⋅ [ x n +1 … x 2⋅n ] T .
2.6
Metode iterative
2.6.1 Principiul şi convergenţa metodelor iterative
Fie sistemul de ecuaţii algebrice liniare: A ⋅ x = b, A ∈ ℜ n×n , b ∈ ℜ n×1 ,
(2.29)
în care A este o matrice nesingulară. Metodele iterative se bazează pe construcţia unui şir de aproximaţii ale [k] soluţiei, x , k = 0,1,... , convergent la soluţia adevărată: lim x
k →∞
[k]
= x , ∀x
[ 0]
.
Pentru construcţia acestui şir, se consideră rescrierea sau descompunerea matricei A a sistemului sub forma: A = N − P , în care N este o matrice nesingulară. De regulă, se alege matricea N cu o formă simplă. Ecuaţia (2.29) devine: ( N − P) ⋅ x = b ⇔ N ⋅ x = P ⋅ x + b .
(2.30)
58
2.
Sisteme determinate de ecuaţii algebrice liniare
Şirul de aproximaţii se construieşte cu ajutorul relaţiei: N⋅x în care estimaţia iniţială x
[ k +1]
[ 0]
=P⋅x
[k]
+ b, k = 0,1,...
(2.31)
este dată (cunoscută). În particular, x
[0]
= 0n .
Din relaţia (2.31) rezultă: x
[ k +1]
= N −1 ⋅ P ⋅ x
[k]
+ N −1 ⋅ b, k = 0,1,... .
(2.32)
Se face următoarea notaţie: G = N −1 ⋅ P, G ∈ ℜ n×n . Matricea G are valori proprii în general complexe, λ i (G ) ∈ C , care formează mulţimea numită spectrul matricei G.
Definiţie: Se numeşte rază spectrală a matricei G mărimea:
ρ(G ) = max{| λ i (G ) |} . 1≤i ≤ n
În cele ce urmează, se enunţă şi demonstrează următorul rezultat.
Propoziţie: Condiţia necesară şi suficientă ca şirul de soluţii aproximative, defint prin relaţia (2.32), să fie convergent către soluţia adevărată a sistemului de ecuaţii (2.29) este ca matricea G = N −1 ⋅ P să aibă toate valorile proprii în modul subunitare sau, altfel spus, raza spectrală a matricei G să fie subunitară.
Demonstraţia porneşte de la expresia erorii la iteraţia [k], care este: [k] [k] e = x − x , k = 0,1,... . Eroarea la pasul [ k + 1 ] este: e
[ k +1]
=x−x
[ k +1]
=x −G⋅x
[k ]
− N −1 ⋅ b .
(2.33)
Înlocuind în relaţia (2.33) expresia vectorului b din relaţia (2.30), se obţine: e
[ k +1]
=x −G⋅x
[k]
− N −1 ⋅ ( N ⋅ x − P ⋅ x ) = G ⋅ ( x − x
[k]
) =G ⋅e
[k ]
. (2.34)
Exprimând eroarea la pasul [k] în funcţie de eroarea la pasul [k-1], prin folosirea repetată a relaţiei (2.34), se obţine următorul rezultat: e Cum e
[ 0]
[ k +1]
=G⋅e
[k ]
= G2 ⋅ e
[ k −1]
= … = G k +1 ⋅ e
[0]
.
≠ 0 n în general, atunci condiţia referitoare la limita şirului de
aproximaţii, prezentată la început, este îndeplinită dacă şi numai dacă
2.6
Metode iterative
59
lim G k = 0 n×n . Această condiţie este satisfăcută dacă matricea G are valorile
k →∞
proprii subunitare în modul, altfel spus, dacă rază spectrală a matricei G este subunitară.
Observaţii: 1. Cu cât raza spectrală subunitară a matricei G este mai mică, cu atât viteza de convergenţă a şirului de soluţii aproximative (2.32) va fi mai mare. 2. În practică, de multe ori, condiţia necesară şi suficientă prezentată anterior se verifică (înlocuieşte) printr-o condiţie suficientă, dacă este posibil, şi anume: dacă || G || α < 1 atunci ρ(G ) < 1 . De regulă se foloseşte norma matricială infinit, rezultând condiţia: n
|| G || ∞ = max{∑ | g i , j |} < 1 . 1≤ i ≤ n j=1
Dacă această ultimă condiţie este îndeplinită, atunci metoda iterativă este sigur convergentă şi nu mai este necesar să se calculeze valorile proprii ale matricei G de caracterizare a convergenţei. Dacă, însă, condiţia suficientă nu este satisfăcută, atunci nu se poate afirma nimic în ceea ce priveşte convergenţa metodei şi se recurge la calculul valorilor proprii ale matricei G, în scopul verificării condiţiei necesare şi suficiente. În continuare se consideră următoarea descompunere a matrcii A a sistemului (2.29): A=L+ D+ U, în care L este o matrice inferior triunghiulară cu diagonala principală nulă având elementele de sub diagonala principală egale cu elementele matricei A de acelaşi rang, D este o matrice diagonală având elementele de pe diagonala principală egale cu elementele de pe diaonala principală a matricei A, iar U este o matrice superior triunghiulară având elementele de deasupra diagonalei principale egale cu elementele matricei A de acelaşi rang. Se mai face presupunerea că elementele diagonalei principale a matricei A sunt nenule. În caz contrar, se pot face permutări de linii şi/sau coloane astfel încât să fie îndeplinită şi această condiţie. 2.6.2 Metoda Jacobi şi metoda Gauss-Seidel
În cazul metodei Jacobi, matricele N şi P sunt: N = D, P = −( L + U ) .
(2.35)
60
2.
Sisteme determinate de ecuaţii algebrice liniare
Din relaţia (2.31), folosind relaţia (2.35), rezultă: D⋅x
[ k +1]
= −( L + U ) ⋅ x
[k ]
+ b, k = 0,1,... .
(2.36)
a i ,i ⋅ x [i k +1] = −∑ a i , j ⋅ x [jk ] + b i , i = 1,..., n .
(2.37)
Relaţia (2.36) se poate scrie pe linii astfel: n
j=1 j≠ i
Dacă elementul a i ,i ≠ 0 , atunci relaţia (2.37) se poate rescrie sub forma: n
x [i k +1] = ( b i / a i ,i ) − ∑ (a i , j / a i ,i ) ⋅ x [jk ] , i = 1,..., n .
(2.38)
j=1 j≠ i
Matricea G corespunzătoare metodei Jacobi este: G Jacobi = N −1 ⋅ P = −D −1 ⋅ (L + U) = [g i , j ]1≤i , j≤ n , i= j ⎧0, în care g i , j = ⎨ . ⎩ − a i , j / a i ,i , i ≠ j Condiţia suficientă care se impune pentru ca metoda Jacobi să fie convergentă este: n
n
max{∑ | g i , j |} = max{∑ | a i , j / a i ,i |} < 1 . 1≤i ≤ n j=1
1≤i ≤ n j=1 j≠ i
(2.39)
În relaţia (2.39) fiind implicate doar numere pozitive, dacă maximul lor este mai mic decât 1, atunci toate sunt subunitare: n
∑ | a i , j / a i ,i | < 1 j=1 j≠ i
n
⇔ | a i ,i |> ∑ | a i , j | .
(2.40)
j=1 j≠ i
O matrice care satisface relaţia (2.40) se numeşte matrice diagonal dominantă pe linii.
Propoziţie: Dacă matricea A este diagonal dominantă pe linii, atunci metoda Jacobi este convergentă, oricare ar fi estimaţia iniţială a soluţiei sistemului de ecuaţii (2.29).
Observaţie:
2.6
Metode iterative
61
Condiţia (2.40) înseamnă că ∀i = 1,..., n , j = 1,..., n , i ≠ j , | a i , j / a i ,i |< 1 . Revenind la relaţia (2.38), se observă că a i , j / a i ,i sunt coeficienţii care multiplică estimaţiile anterioare, deci erorile ce afectează aceste estimaţii sunt micşorate pe măsură ce procesul iterativ avansează. Ca urmare, dacă matricea A este diagonal dominantă pe linii, atunci procedura este sigur stabilă numeric.
Metoda Gauss-Seidel porneşte de la descompunerea A = N − P în care: N = L + D, P = − U . Relaţia (2.31) se poate rescrie, în acest caz, sub forma: ( L + D) ⋅ x
[ k +1]
= −U ⋅ x
[k ]
+ b, k = 0,1,... .
(2.41)
Relaţia (2.41) se poate scrie, pe linii, sub forma: i
n
j=1
j=i +1
∑ a i, j ⋅ x [jk +1] = − ∑ a i, j ⋅ x [jk ] + b i ,
i = 1,..., n ,
din care rezultă, dacă a i ,i ≠ 0 : i −1
x [i k +1] = ( b i / a i ,i ) − ∑ (a i , j / a i ,i ) ⋅ x [jk +1] + j=1
n
∑ (a i, j / a i,i ) ⋅ x [jk ] ,
i = 1,..., n .
j=i +1
Se poate demonstra că, şi în cazul metodei Gauss-Seidel, dacă matricea A este diagonal dominantă pe linii, atunci metoda este convergentă. În general, se demonstrează că între raza spectrală subunitară a matricei G Jacobi = − D −1 ⋅ (L + U) şi raza spectrală subunitară a matricei G Gauss −Seidel = −( L + D) −1 ⋅ U există relaţia: ρ 2 (G Jacobi ) ≅ ρ(G Gauss −Seidel ) < 1 . Rezultă, în general, că dacă metoda Gauss-Seidel este convergentă, atunci viteza sa de convergenţă este mai mare decât cea corespunzătoare metodei Jacobi. Există situaţii în care, pentru ambele metode, razele spectrale sunt subunitare, dar apropiate de valoarea 1. În acest caz, convergenţa ambelor metode este extrem de lentă, recomandându-se ca în descompunerea matricei A să se utilizeze unul sau mai mulţi parametri de accelerare a convergenţei. 2.6.3 Metoda relaxărilor succesive
Se porneşte de la descompunerea matricei A corespunzătoare metodei Gauss-Seidel. Relaţia (2.41) se poate scrie sub forma:
62
2.
Sisteme determinate de ecuaţii algebrice liniare
x
[ k +1]
= − ( L + D ) −1 ⋅ U ⋅ x
[k]
+ (L + D) −1 ⋅ b, k = 0,1,... .
În acestă relaţie, în membrul drept se adună şi se scade cantitatea x Ţinând cont de faptul că I n = (L + D)
x
[ k +1]
=x
[k ]
=x
− ( L + D)
−1
−1
.
⋅ (L + D) rezultă:
⋅ [U ⋅ x
−1
[k ]
[k ]
[k ]
+ ( L + D) ⋅ x
[k ]
− b]
− ( L + D) ⋅ [ A ⋅ x
[k ]
− b]
Se face următoarea notaţie: r
[k ]
=b−A⋅x
[k]
,
[k ]
în care r se numeşte reziduu corespunzător iteraţiei [k]. În acest caz, se poate scrie: x
[ k +1]
=x
[k ]
+ (L + D) −1 ⋅ r
[k]
.
(2.42)
Se transformă relaţia (2.42), înmulţind termenul care conţine reziduul cu un parametru ω de accelerare a convergenţei: x
[ k +1]
=x
[k ]
+ ω ⋅ (L + D) −1 ⋅ r
[k]
.
(2.43)
Al doilea termen din suma exprimată în relaţia (2.43) poate fi interpretat ca un factor de corecţie pentru estimaţia de la iteraţia [k]. Astfel, soluţia de la iteraţia [ k + 1 ] se obţine prin corectarea soluţiei de la iteraţia anterioară [k], [k ] corecţia realizându-se în funcţie de reziduul r . Relaţia (2.43) se poate rescrie sub forma: x
[ k +1]
=x
[k ]
− ω ⋅ (L + D) −1 ⋅ (L + D) ⋅ x
+ ω ⋅ [−(L + D) −1 ⋅ U ⋅ x
[k ]
[k ]
+ (L + D) −1 ⋅ b]
(2.44)
Paranteza dreptunghiulară pune în evidenţă aproximaţia la iteraţia [ k + 1 ], obţinută prin metoda Gauss-Seidel. Relaţia (2.44) devine: x
[ k +1]
= (1 − ω) ⋅ x
[k ]
[ k +1]
+ ω ⋅ x Gauss −Seidel .
(2.45)
Se demonstrează că şirul de aproximaţii obţinut cu ajutorul relaţiei de recurenţă (2.45) este convergent pentru ω ∈ (0,2) . Dacă ω ∈ (0,1) metoda se numeşte a subrelaxărilor succesive, iar dacă ω ∈ (1,2) ea se numeşte a suprarelaxărilor succesive. Dacă ω = 1 , se obţine metoda Gauss-Seidel. În general, dacă metoda este convergentă, atunci numărul de iteraţii ca funcţie de parametrul ω atinge un punct de minim corespunzător unei valori ω optim (a se vedea Figura 2.3). Se poate arăta că ω optim şi ρ optim au aproximativ valorile:
2.6
Metode iterative
ω optim ≅
63
2 1 + 1 − ρ 2Jacobi
; ρ optim ≅
ρ Jacobi
1 + 1 − ρ 2Jacobi
≅ ρ Gauss −Seidel ⋅
2 ω optim
4
.
În practică, la nivelul fiecărei componente, se pot folosi relaţiile de calcul (2.45): i −1
x [i k +1] = (1 − ω) ⋅ x [i k ] + ω ⋅ [(b i − ∑ a i, j ⋅ x [jk +1] − j=1
n
∑ a i, j ⋅ x [jk ] ) / a i,i ] .
j=i +1
Relaţiile prezentate corespund unei descompuneri a matricei A care depinde de parametrul ω , şi anume: A ⋅ x = b; ω ⋅ A ⋅ x = ω ⋅ b ⇒ ω ⋅ A = N(ω) − P(ω) în care N(ω) = ω ⋅ L + D şi P(ω) = (1 − ω) ⋅ D − ω ⋅ U . numar iteratii
numar minim iteratii
ω 1
ωoptim
2
Fig. 2.3 Metoda suprarelaxării succesive
*** Algoritmii prezentaţi lucrează până când este îndeplinită o condiţie de tipul: [s ] [ s −1] || x − x || α ≤ ε x . Se foloseşte, de regulă, norma infinit şi atunci condiţia de stop este: max{| x [is ] − x [is −1] |} ≤ ε x . 1≤i ≤ n
[ k +1]
[k]
Notând x n = x şi x v = x , atunci următorul algoritm descrie procedura generală aplicată în cazul unei metode iterative: [0] citeşte ε x , x [ 0]
atribuie x n ← x atribuie vn ∞ ← 1
64
2.
Sisteme determinate de ecuaţii algebrice liniare
atribuie iter ← 0 cât timp ( vn ∞ > ε x ) execută ⎡ ⎢ ⎢ ⎢
atribuie x v ← x n atribuie iter ← iter + 1 * calculează x n * calculează vn ∞ = max{| x n (i) − x v (i) |} 1≤i ≤ n
⎣
În final, se obţin următoarele: numărul de iteraţii (iter) şi vectorul x n care aproximează soluţia sistemului cu precizia impusă ε x . În descrierea anterioară, [ 0]
x reprezintă estimaţia iniţială a soluţiei, iar vn ∞ este notaţia pentru valoarea normei vectoriale infinit.
2.7
Caracterizarea problemei rezolvării unui sistem de ecuaţii algebrice liniare. Precizia soluţiei calculate
Precizia soluţiei calculate a problemei: A ⋅ x = b, A ∈ ℜ n×n , b ∈ ℜ n×1 depinde critic de buna sa condiţionare numerică. Această proprietate este caracterizată de numărul de condiţie al matricei A a sistemului. Aceste concepte fac obiectul acestui subcapitol. 2.7.1 Numărul de condiţie al unei matrice
Definiţie: Oricare ar fi matricea A ∈ ℜ n×n , se defineşte numărul său de condiţie în raport cu norma vectorială α , notat k α ( A) , ca fiind: k α ( A) = M / m , M = max{|| A ⋅ x || α / || x || α }, m = min{|| A ⋅ x || α / || x || α } , x ≠ 0n
x ≠0n
unde || . || α este una din normele vectoriale uzuale (a se vedea Anexa A).
Cum în general M ≥ m , rezultă că şi k α (A) ≥ 1 . Se poate demonstra că 1 / m =|| A −1 || α . Astfel, se poate defini numărul de condiţie în raport cu operaţia de inversare matricială ca fiind: k α (A) =|| A || α ⋅ || A −1 || α .
2.7
Caracterizarea problemei rezolvării unui sistem de ecuaţii algebrice liniare. Precizia soluţiei calculate
65
Numărul de condiţie depinde în general de norma matricială folosită. Între diferitele numere de condiţie corespunzătoare aceleiaşi matrice există relaţii care reflectă relaţiile dintre normele matriciale echivalente utilizate. Astfel, dacă α şi β sunt două norme matriciale (vectoriale), există constantele c1 , c 2 ∈ ℜ astfel încât să aibă loc relaţia: c1 ⋅ k α ( A ) ≤ k β ( A ) ≤ c 2 ⋅ k α ( A ) . În multe abordări, este folosită norma infinit pentru a calcula numărul de condiţie al unei matrice: k ∞ (A) =|| A || ∞ ⋅ || A −1 || ∞ . Cum calculul normei infinit este imediat (a se vedea Anexa A), problema este de a determina norma infinit pentru inversă. O soluţie o reprezintă calculul inversei matricei A prin triangularizare şi apoi calculul normei infinit. În acest fel, se obţine o aproximare a numărului de condiţie al matricei. Dezavantajul acestei modalităţi este că este necesar un volum mare de calcule. Discuţia asupra numărului de condiţie al unei matrice este reluată în capitolul 5 destinat studiului valorilor singulare ale unei matrice. Se prezintă acolo modalitatea uzual folosită pentru calculul eficient al numărului de condiţie. Exemplul 2.4:
• • • •
dacă A = I n (matrice unitate de ordinul n), atunci k α (A) = 1 ; dacă A = Pk (matrice elementară de permutare de linii), atunci k α (A) = 1 ; dacă A = S k (matrice elementară de permutare de coloane), atunci k α (A) = 1 ; A = diag{d 11 ,..., d ii ,..., d nn } dacă (matrice diagonală), atunci k α ( A) = max{| d ii |} / min{| d ii |} . 1≤i ≤ n
1≤ i ≤ n
În funcţie de valorile numărului de condiţie, matricea A poate fi caracterizată după cum urmează: a) dacă numărul de condiţie este egal cu 1, matricea A se spune că este foarte bine condiţionată; b) dacă numărul de condiţie este mic, apropiat de valoarea 1, atunci matricea A este bine condiţionată; c) dacă numărul de condiţie este mare, atunci matricea A este prost condiţionată; d) dacă numărul de condiţie este foarte mare, atunci matricea A este aproape singulară; e) dacă numărul de condiţie este infinit, atunci matricea A este singulară.
66
2.
Sisteme determinate de ecuaţii algebrice liniare
Se mai utilizează şi inversul numărului de condiţie: rk α (A) = 1 / k α (A) . În funcţie de valorile pe care le poate lua acesta, matricea A poate fi caracterizată după cum urmează, unde ε m este notaţia pentru epsilonul-maşină: a) matrice foarte bine condiţionată, dacă rk α ( A) = 1 ; b) matrice bine condiţionată, dacă rk α ( A) < 1 , dar apropiat de valoarea 1: ε m << rk α (A) < 1 ; c) matrice prost condiţionată (aproape singulară) dacă rk α (A) ≤ ε m ; d) matrice singulară (foarte prost condiţionată) dacă rk α (A) = 0 . Conform acestor caracterizări se poate afirma, în general, că numărul de condiţie al unei matrice reprezintă inversul distanţei dintre matricea A şi mulţimea matricelor singulare. Exemplul 2.5:
De regulă se preferă caracterizarea singularităţii pe baza numărului de condiţie sau a inversului său, decât folosirea valorii determinantului. Fie matricea: ⎡0.1 … 0 ⎤ ⎥ . D = ⎢⎢ ⎥ ⎢⎣ 0 … 0.1⎥⎦ 100×100 Atunci det(D) = 10 −100 ≅ 0 în simplă precizie, deşi k ∞ (D) = 1 , ceea ce arată că matricea D este o matrice foarte bine condiţionată. Exemplul 2.6:
În general, nu există o corelaţie între numărul de condiţie şi valoarea determinantului unei matrice. Fie matricea: ⎡1 − 1 … − 1⎤ ⎧− 1, i < j ⎢0 ⎥ ⎪ ⎢ ⎥ Bn = = [ b i , j ]1≤i , j≤ n cu b i , j = ⎨ 1, i = j , i, j = 1,..., n . ⎢ − 1⎥ ⎪ 0, i > j ⎢ ⎥ ⎩ 0 0 1 … ⎣ ⎦ n×n Atunci det(B n ) = 1 şi k ∞ (B n ) = n ⋅ 2 n . Pentru n având valori mari, matricea B n este prost condiţionată. Proasta condiţionare a unei matrice se poate reflecta în rezultatele triangularizării sale. Astfel, dacă în urma triangularizării unei matrice, matricea U superior triunghiulară are pe diagonala principală elemente nule sau foarte mici, atunci sigur matricea iniţială este prost condiţionată. Reciproca, în general, nu este valabilă: matricea poate fi prost condiţionată, însă
2.7
Caracterizarea problemei rezolvării unui sistem de ecuaţii algebrice liniare. Precizia soluţiei calculate
67
datorită erorilor de calcul, elementele de pe diagonala matricei U pot să nu fie neapărat foarte mici. 2.7.2 Precizia soluţiei calculate
Fie sistemul de ecuaţii: A ⋅ x = b, A ∈ ℜ n×n , b ∈ ℜ n×1 . (2.46) Caracterizarea (condiţionarea) acestei probleme este dată de numărul de condiţie al matricei A, aşa cum a fost el definit la începutul acestui capitol. Pot exista două situaţii generale prezentate în continuare: I. Soluţia este calculată fără erori (exact), dar pot exista erori în matricea A şi termenul liber b . Se disting următoarele două subcazuri, I.1 şi I.2, prezentate în continuare. Se presupune că termenul liber al sistemului (2.46) este uşor perturbat, ~ lucrându-se cu vectorul b în loc de vectorul b . De fapt, se rezolvă (exact) problema: ~ A⋅~ x=b. Dacă ~ x este soluţia exactă a acestei noi probleme, atunci se demonstrează că eroarea relativă satisface la relaţia: ~ ~ ε x =|| x − ~ x || α / || x || α ≤ k α (A)⋅ || b − b || α / || b || α = k α (A) ⋅ ε b . I.1
Rezultă, aşadar, că eroarea relativă în termenul liber este amplificată în soluţia calculată de k α ( A) ori, în absenţa erorilor de rotunjire. Exemplul 2.7:
Fie sistemul (2.46) cu următoarele matrice: ⎡ 4.1 2.8⎤ ⎡ 4.1⎤ ~ ⎡ 4.11⎤ A=⎢ , b = ⎢ ⎥, b = ⎢ ⎥ ⎥. ⎣9.7 ⎦ ⎣9.70⎦ ⎣9.7 6.6⎦ ⎡1⎤ Soluţia exactă a sistemului A ⋅ x = b este x = ⎢ ⎥ . Soluţia exactă a sistemului ⎣0⎦ ⎡0.34⎤ ~ A⋅~ x = b este ~ x=⎢ ⎥≠x. ⎣0.97⎦ ~ Realizeazând următoarele notaţii: Δ b = b − b , Δ x = x − ~ x , rezultă pentru acest exemplu: k 1 ( A) ≥ (|| Δ x ||1 / || x ||1 ) /(|| Δ b ||1 / || b ||1 ) = 2294.4 ,
68
2.
Sisteme determinate de ecuaţii algebrice liniare
deci matricea A este prost condiţionată. I.2
De această dată, se consideră matricea sistemului ca fiind afectată de perturbaţii: ~ A = A + E, || E || α <<|| A || α . De fapt, se rezolvă exact problema: ~ A⋅~ x = b. (2.47)
x este soluţia exactă a ecuaţiei (2.47), atunci se demonstrează că eroarea Dacă ~ relativă satisface la relaţia: ε x ≤ k α (A) ⋅ (|| E || α / || A || α ) = k α (A) ⋅ ε A . Rezultă faptul că perturbaţiile în matricea sistemului, în ipoteza absenţei erorilor de rotunjire la calculul soluţiei, se regăsesc în soluţia calculată amplificate de k α (A) ori. II.
Datele iniţiale ale problemei (2.46), A şi b , sunt exacte, dar procedura de calcul a soluţiei este afectată de eroare (erori de rotunjire). În acest caz se disting două situaţii, II.1 şi II.2, prezentate în cele ce urmează.
II.1 Apar erori datorate decompunerii gaussiene. Se obţin următoarele rezultate: • A = L ⋅ U , în cazul triangularizării simple; • P ⋅ A = L' ⋅ U , în cazul triangularizării cu pivotare parţială; • P ⋅ A ⋅ S = L' ⋅ U , în cazul triangularizării cu pivotare totală. Plecând de la matricea A, căreia i se aplică o procedură de triangularizare, se obţin matricele L ( L' ), U, P, (S). Dacă se efectuează operaţia inversă, se obţine: ~ • L ⋅ U = A , corespunzător triangularizării simple; ~ • P −1 ⋅ L' ⋅ U = A , corespunzător triangularizării cu pivotare parţială; ~ • P −1 ⋅ L' ⋅ U ⋅ S −1 = A , corespunzător triangularizării cu pivotare totală, ~ ~ unde A este matricea iniţială plus o matrice de eroare: A = A + E c . În continuare, discuţia se referă la descompunerea cu pivotare parţială şi la cea cu pivotare totală, deoarece procedurile corespunzătoare lor se bazează pe matrice stabilizate, iar algoritmii sunt stabili din punct de vedere numeric. Având in vedere volumul de calcule implicat (numărul de operaţii în virgulă mobilă), se poate afirma că dacă ordinul n al sistemului este mic, atunci: || E c || α <<|| A || α , iar dacă ordinul n este mare, atunci: || E c || α <|| A || α . Aşadar, norma matricei de eroare E c se poate apropia de cea a matricei A a sistemului.
2.7
Caracterizarea problemei rezolvării unui sistem de ecuaţii algebrice liniare. Precizia soluţiei calculate
69
Ca urmare, o posibilitate de a caracteriza precizia descompunerii este de a calcula raportul: ~ || E c || α / || A || α =|| A − A || α / || A || α = ε A ,c . De regulă se foloseşte norma 1. În general, se demonstrează că: ε x ≤ k α ( A ) ⋅ ε A ,c . Dacă ε A ,c ≅ 10 − d , d > 0 , atunci se poate afirma că triangularizarea matricei A se face cu d cifre zecimale exacte. Rezultă că eroarea în soluţia calculată satisface la relaţia: ε x ≤ k α (A ) ⋅ ε A ,c ≤ 10 p −d = 10 − ( d − p ) .
O matrice foarte bine condiţionată este caracterizată de p = 0 . Dacă matricea este bine condiţionată, atunci p = 1 ÷ 2 , iar dacă ea este prost condiţionată, atunci p > 2 . Se desprinde următoarea concluzie: dacă matricea A este prost condiţionată, atunci se pierd p cifre ca precizie în soluţia calculată. Dacă, însă, matricea A este diagonal dominantă pe linii sau coloane, atunci ea este bine condiţionată. Matricea A poate fi adusă la o astfel de formă înainte de a aplica procedura de descompunere, dacă este posibil, prin permutări adecvate de linii şi/sau coloane. Erorile afectează procedura de rezolvare prpriu-zisă a sistemului (fazele de substituţie înainte şi înapoi). x este: r = b − A ⋅ ~ x. În acest caz, reziduul asociat soluţiei calculate ~ Se demonstrează că, în această situaţie, eroarea relativă în soluţia calculată satisface la relaţia:
II.2
ε x ≤ k α (A ) ⋅ (|| r || α / || b || α ) . În concluzie, un reziduu mic în normă faţă de norma termenului liber nu garantează o precizie bună a soluţiei calculate, dacă matricea sistemului este prost condiţionată. Exemplul 2.8:
Fie sistemul A ⋅ x = b cu: ⎡2.001⎤ ⎡1 1.001⎤ A=⎢ , b=⎢ ⎥. ⎥ 1 ⎦ ⎣ 2 ⎦ ⎣1 Soluţia exactă a acestui sistem este x = [1 1] T . În urma calculelor rezultă: ~ x = [ 2 0] T ≠ x , Aceasta se datorează faptului că:
r = b − A ⋅ x = [0.001 0] T .
70
2.
Sisteme determinate de ecuaţii algebrice liniare
k 1 ( A) ≥ (|| x − ~ x ||1 / || x ||1 ) /(|| r ||1 / || b ||1 ) ≈ 10 3 , deci matricea A este prost condiţionată. O concluzie generală care se poate desprinde este următoarea: buna condiţionare a problemei de calcul ( k α ( A) = 1 ÷ 10 ÷ 100 ), împreună cu stabilitatea numerică a algoritmului de triangularizare ( || E c || α <<|| A || α ), garantează faptul că eroarea relativă a soluţiei calculate faţă de soluţia exactă este de acelaşi ordin de mărime cu erorile relative în datele iniţiale ale problemei (matricea A şi termenul liber b ).
O procedură folosită pentru estimarea numărului de cifre exacte ale soluţiei calculate este următoarea: • triangularizarea matricei A; x folosind rezultatele triangularizării matricei A: • determinarea soluţiei ~ • calculul reziduului asociat r = b − A ⋅ ~ x; • rezolvarea sistemului A ⋅ e = r , folosind rezultatele procedurii de triangularizare; • dacă || e ||1 ≠ 0 , atunci || e ||1 / || ~ x ||1 ≅ 10 − d . Numărul de cifre exacte ale soluţiei calculate este: d ≅ [− lg(|| e || / || ~ x || )] , 1
1
unde lg(.) semnifică funcţia logaritm zecimal, iar [.] semnifică funcţia parte întreagă. O procedură de îmbunătăţire (rafinare) a soluţiei calculate este următoarea: 1. rezolvare sistem A ⋅ x = b folosind descompunerea L-U a matricei A şi determinarea soluţiei ~ x; x; 2. calcul reziduu asociat: r = b − A ⋅ ~ 3. rezolvare sistem A ⋅ e = r folosind rezultatele descompunerii L-U a matricei A şi determinarea lui e ; ~ ~ 4. rafinarea soluţiei: ~ x = x + e; ~ ~ x ||1 ≠|| ~ x ||1 atunci ~ x=~ x şi reluare de la pasul 2, altfel x = ~ x. 5. dacă || ~ 6. stop Îmbunătăţirea soluţiei se face într-un număr maxim de iteraţii notat ITMAX. Dacă după ITMAX iteraţii, testul de la pasul 5 continuă să fie satisfăcut (şi se reia de la pasul 2), acesta este un semn că matricea A este prost condiţionată deoarece:
2.8
Exerciţii propuse
71
|| e ||1 / || ~ x ||1 ≤ k 1 (A) ⋅ (|| r ||1 / || b ||1 ) . Astfel, dacă numărul de condiţie k 1 (A) este mare, atunci şi raportul || e ||1 / || ~ x ||1 este mare şi, ca urmare, valoarea || e ||1 nu se va micşora dacă matricea A este prost condiţionată.
2.8
Exerciţii propuse
E2.1 Să se realizeze, în mediul de programare MATLAB, un program pentru rezolvarea unui sistem de n ecuaţii liniare cu n necunoscute, prin metoda directă folosind triangularizarea matricei sistemului cu pivotare totală. Programul va compara soluţia găsită cu cea furnizată de mediul MATLAB. În realizarea programului, se vor parcurge următoarele etape descrise parţial în limbajul pseudocod. 1. Introducere parametru de control al execuţiei procedurii de triangularizare, în variabila EPS. 2. Introducere ordin sistem, în variabila n, n ≥ 2 . 3. Alocare spaţiu de memorie pentru matricea sistemului, în variabila a, prin iniţializarea acesteia cu o matrice nulă de dimensiune n. Introducerea elementelor matricei sistemului se face pe linii (a se vedea observaţia 2 care urmează). Salvarea valorilor introduse pentru matricea a, în matricea de lucru aa: atribuie aa ← a Reluare introducere, în caz de eroare. 4. Alocare spaţiu de memorie pentru termenul liber al sistemului, în variabila b, prin iniţializarea acesteia cu un vector coloană nul, cu n componente. Introducerea elementelor termenului liber se realizează pe linii. Salvarea valorilor din vectorul b, în vectorul de lucru bb: atribuie bb ← b Reluare introducere, în caz de eroare. 5. Faza I-a: eliminare înainte cu pivotare totală: pentru i = 1,n execută
72
2.
Sisteme determinate de ecuaţii algebrice liniare
⎡ atribuie iord(i) ← i ⎣ * pivotare totală: pentru k = 1,n-1 execută ⎡ atribuie [mc,imc] ← max ( abs ( a(k:n,k:n) ) ) ⎢ atribuie [ml,jk] ← max ( mc ) ⎢ atribuie ik ← imc ( jk ) ⎢ atribuie ik ← ik + (k-1) ⎢ atribuie jk ← jk + (k-1) ⎢ dacă ( ik ~= k ) atunci ⎢ ⎡ atribuie wmx ← zeros (1,n) ⎢ ⎢ atribuie wmx ← a(k,:) ⎢ ⎢ atribuie a(k,:) ← a(ik,:) ⎢ ⎢ atribuie a(ik,:) ← wmx ⎢ ⎢ atribuie t ← b(k) ⎢ ⎢ atribuie b(k) ← b(ik) ⎢ ⎢ atribuie b(ik) ← t ⎢ ⎣ ⎢ dacă ( jk ~= k ) atunci ⎢ ⎡ atribuie zmx ← zeros (n,1) ⎢ ⎢ atribuie zmx ← a(:,k) ⎢ ⎢ atribuie a(:,k) ← a(:,jk) ⎢ ⎢ atribuie a(:,jk) ← zmx ⎢ ⎢ atribuie it ← iord(k) ⎢ ⎢ atribuie iord(k) ← iord(jk) ⎢ ⎢ atribuie iord(jk) ← it ⎢ ⎣ ⎢ * triangularizare: ⎢ dacă ( abs ( a(k,k) ) > EPS ) atunci ⎢ ⎡ atribuie a(k+1:n,k) ← a(k+1:n,k) / a(k,k) ⎢ ⎢ atribuie a(k+1:n,k+1:n) ← a(k+1:n,k+1:n) – ⎢ ⎢ a(k+1:n,k) * a(k,k+1:n) ⎢ ⎢ atribuie b(k+1:n) ← b(k+1:n) – a(k+1:n,k) * b(k) ⎢ ⎢ atribuie a(k+1:n,k) ← zeros (n-k,1) ⎢ ⎢altfel ⎢ ⎢ scrie ‘pivot nul sau foarte mic’ ⎢ ⎢ scrie ‘STOP: algoritm’ ⎢ ⎢ * STOP program (funcţia MATLAB return) ⎢ ⎣
2.8
Exerciţii propuse
73
⎢ scrie ‘k = ’, k ⎢ scrie ‘a = ’, a ⎢ scrie ‘b = ’, b ⎣ 6. Faza a-II-a: calcul soluţie sistem: * substituţie înapoi: pentru k = 1,n execută ⎡ dacă ( abs ( a(i,i) ) < EPS ) atunci ⎢ ⎡ scrie ‘matrice prost condiţionată’ ⎢ ⎣ ⎣ atribuie b(n) ← b(n) / a(n,n) pentru i = n-1,(pas = -1),1 execută ⎡ atribuie sum ← a(i,i+1:n) * b(i+1:n) ⎢ atribuie b(i) ← ( b(i) – sum ) / a(i,i) ⎣ * ordonare soluţie: atribuie x ← zeros (n,1) pentru i = 1,n execută ⎡ atribuie x ( iord(i) ) ← b(i) ⎣ 7. Calcul soluţie folosind funcţiile MATLAB, pentru comparaţie: atribuie x_bs ← aa \ bb atribuie x_inv ← inv (aa) * bb 8. Afişare soluţii x, x_bs, x_inv ( mod de afişare MATLAB dat de funcţia: format long e; ). 9. Calcul reziduuri asociate soluţiilor calculate, precum şi norme euclideene: atribuie r ← bb – aa * x atribuie nr ← norm (r,2) atribuie r_bs ← bb – aa * x_bs atribuie nr_bs ← norm (r_bs,2) atribuie r_inv ← bb – aa * x_inv atribuie nr_inv ← norm (r_inv,2)
74
2.
Sisteme determinate de ecuaţii algebrice liniare
Afişare rezultate n, nr, r_bs, nr_bs, r_inv, nr_inv ( mod de afişare MATLAB dat de funcţia: format long e; ). 10. Reluare program, dacă se doreşte, cu alt termen liber (punctul 4). Dacă are loc reluarea, înainte de aceasta se reface matricea a, utilizând valorile salvate în matricea de lucru aa: atribuie a ← aa 11. Reluare program, dacă se doreşte, cu alt sistem de acelaşi ordin n (punctul 3). 12. Reluare program, dacă se doreşte, cu un sistem de alt ordin n (punctul 2). 13. Reluare program, dacă se doreşte, cu alt parametru EPS (punctul 1). Observaţii: 1.) Descrierea anterioară a programului foloseşte următoarele funcţii MATLAB: max (determinare valoare maximă dintr-un tablou de numere), zeros (iniţializare tablou cu elemente nule), abs (calcul valoare absolută), return (părăsire comandă structurată, de exemplu ciclu cu contor), \ (împărţire matricială la stânga, rezolvată prin triangularizarea cu pivotare parţială a matricei deîmpărţit), inv (calcul inversă matrice pătratică), norm (calcul normă vectorială/matricială). 2.) Se recomandă următoarea modalitate generală de introducere a unei matrice, pe linii (n linii, m coloane), în variabila a: * secvenţă de comenzi MATLAB: a = zeros (n,m); for i = 1:n, fprintf ( ‘Linia %.0f : ’, i ); a(i,:) = input ( ‘ ’ ); end; * exemplu de introducere (n=m=3): Linia 1: [1 2 3]
[4 5 6]
[7 8 9]
Linia 2: Linia 3:
2.8
Exerciţii propuse
75
În descrierea anterioară, s-au subliniat mesajele scrise de către program iar semnifică apăsarea tastei respective. 3.) Programul se va rula pentru următoarele date de intrare, rezulatele analizându-se şi comparându-se: EPS = 1.e-10 I.
n = 3;
II.
n = 3;
− 7 0⎤ ⎡ 10 ⎡ 7 ⎤ ⎢ ⎥ a = ⎢− 3 2.099 6⎥; b = ⎢⎢3.901⎥⎥ ; ⎢⎣ 5 ⎢⎣ 6 ⎥⎦ − 1 5⎥⎦ ⎡ 3 2 100⎤ ⎡105⎤ ⎢ ⎥ a = ⎢− 1 3 100⎥; b = ⎢⎢102⎥⎥ ; ⎢⎣ 1 2 − 1 ⎥⎦ ⎢⎣ 2 ⎥⎦ ⎡ 0.03 0.02 1.00 ⎤ ⎡1.05⎤ ⎢ ⎥ a = ⎢− 0.01 0.03 1.00 ⎥; b = ⎢⎢1.02⎥⎥ ⎢⎣ 0.50 1.00 − 0.50⎥⎦ ⎢⎣1.00⎥⎦ (acelaşi exemplu, cu scalare pe linii)
III.
IV.
n = 3;
⎡ 1 −2 3 ⎤ ⎡5 ⎤ ⎢ ⎥ a=⎢ 2 4 − 1⎥; b = ⎢⎢7 ⎥⎥ ; ⎢⎣− 1 − 14 11 ⎥⎦ ⎢⎣2⎥⎦
n = 4;
0 1⎤ ⎡7 ⎤ ⎡0 2 ⎢ − 2⎥ ⎥ ⎢2 2 3 2⎥ a=⎢ ; b=⎢ ⎥. ⎢− 7⎥ ⎢4 − 3 0 1⎥ ⎢ ⎥ ⎥ ⎢ ⎣ 6 ⎦ ⎣ 6 1 − 6 − 5⎦
E2.2 Să se realizeze, în mediul de programare MATLAB, un program pentru rezolvarea unui sistem de n ecuaţii liniare cu n necunoscute, prin metoda iterativă Jacobi. Programul va compara soluţia găsită cu cea furnizată de mediul MATLAB, aplicând o metodă directă de rezolvare. În realizarea programului, se vor parcurge următoarele etape descrise parţial în limbajul pseudocod. 1. Introducere parametru de control al execuţiei procedurii iterative de rezolvare, în variabila EPS. Introducere număr maxim de iteraţii, în variabila max_iter. 2. Introducere ordin sistem, în variabila n, n ≥ 2 .
76
2.
Sisteme determinate de ecuaţii algebrice liniare
3. Alocare spaţiu de memorie pentru matricea sistemului, în variabila a, prin iniţializarea acesteia cu o matrice nulă de dimensiune n. Introducerea elementelor matricei sistemului se face pe linii (a se vedea observaţia 2 de la exerciţiul E2.1). Testarea elementelor de pe diagonala matricei a: pentru k = 1,n execută ⎡ dacă ( abs ( a(i,i) ) < EPS ) atunci ⎢ ⎡ scrie ‘Element pe diagonală nul sau foarte mic’ ⎢ ⎢ scrie ‘Rearanjaţi şi reintroduceţi matricea a’ ⎢ ⎣ ⎣ Reluare introducere, în caz de eroare. 4. Alocare spaţiu de memorie pentru termenul liber al sistemului, în variabila b, prin iniţializarea acesteia cu un vector coloană nul, cu n componente. Introducerea elementelor termenului liber se realizează pe linii. Reluare introducere, în caz de eroare. 5. Alocare spaţiu de memorie pentru aproximaţia iniţială a soluţiei, în variabila xn, prin iniţializarea acesteia cu un vector coloană nul, cu n componente. Introducerea elementelor vectorului xn se realizează pe linii. Reluare introducere, în caz de eroare. 6. Studiu de convergenţă: atribuie nn ← diag ( diag (a) ) atribuie p ← nn - a atribuie g ← inv (nn) * p atribuie valp ← eig (g) atribuie ro ← max ( abs (valp) ) scrie ‘=> rază spectrală matrice convergenţă, ro = ’, ro dacă ( ro < 1 ) atunci ⎡ scrie ‘metoda converge’ ⎢ altfel ⎢ scrie ‘metoda NU converge!’ ⎣ 7. Calcul soluţie iterativă: atribuie vninf ← 1 atribuie iter ← 0 * comutare mod de afişare (limbaj MATLAB): format long e;
2.8
Exerciţii propuse
⎡ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎣
77
cât timp ( (vninf > EPS) şi (iter < max_iter) ) execută atribuie iter ← iter + 1 atribuie xv ← zeros (n,1) atribuie xv ← xn * adaptare soluţie metoda Jacobi: pentru i = 1,n execută ⎡ atribuie sum ← 0 ⎢ pentru j = 1,i-1 execută ⎢ ⎡ atribuie sum ← sum + a(i,j) * xv(j) ⎢ ⎣ ⎢ pentru j = i+1,n execută ⎢ ⎡ atribuie sum ← sum + a(i,j) * xv(j) ⎢ ⎣ ⎢ atribuie xn(i) ← ( b(i) - sum ) / a(i,i) ⎣ * sfârşit adaptare soluţie metoda Jacobi atribuie vninf ← max ( abs (xn - xv) ) scrie ‘* iter = ’, iter scrie ‘xn = ’, xn scrie ‘vninf = ’, vninf
8. Calcul soluţie folosind o metodă directă, în mediul MATLAB: atribuie x ← a \ b 9. Afişare rezultate: iter, xn, x. Comutare mod de afişare (limbaj MATLAB): format short; 10. Reluare program, dacă se doreşte, cu altă estimaţie iniţială a soluţiei (punctul 5). 11. Reluare program, dacă se doreşte, cu alt termen liber al sistemului (punctul 4). 12. Reluare program, dacă se doreşte, cu alt sistem de acelaşi ordin (punctul 3). 13. Reluare program, dacă se doreşte, cu alt sistem de alt ordin n (punctul 2). 14. Reluare program, dacă se doreşte, cu alţi parametri EPS şi max_iter (punctul 1). Observaţii:
78
2.
Sisteme determinate de ecuaţii algebrice liniare
1.) Descrierea anterioară a programului foloseşte următoarele funcţii MATLAB: abs (calcul valoare absolută), diag (producerea unei matrice diagonale; extragerea diagonalei principale a unei matrice), inv (calcul inversă matrice pătratică), eig (calcul valori proprii ale unei matrice), max (determinare valoare maximă dintr-un tablou de numere), zeros (iniţializare tablou cu elemente nule), \ (împărţire matricială la stânga, rezolvată prin triangularizarea cu pivotare parţială a matricei deîmpărţit). 2.) Operatorul logic şi este implementat în limbajul MATLAB prin simbolul: & 3.) Programul se va rula pentru următoarele date de intrare, rezulatele analizându-se şi comparându-se: EPS = 1.e-10; max_iter = 30 ⎡9 ⎤ ⎡ 5 −1 0 ⎤ ⎢ ⎥ I. n = 3; a = ⎢− 1 5 − 1⎥; b = ⎢⎢ 4 ⎥⎥ ; ⎢⎣− 6⎥⎦ ⎢⎣ 0 − 1 5 ⎥⎦
⎡0 ⎤ xn = ⎢⎢0⎥⎥ ; ⎢⎣0⎥⎦ ⎡2⎤ xn = ⎢⎢ 2 ⎥⎥ ; ⎢⎣− 1⎥⎦
⎡8 − 1 1 ⎤ ⎡0 ⎤ ⎡8 ⎤ ⎢ ⎥ ⎢ ⎥ II. n = 3; a = ⎢2 1 9⎥; b = ⎢ 12 ⎥ ; xn = ⎢⎢0⎥⎥ ; ⎢⎣0⎥⎦ ⎢⎣1 − 7 2⎥⎦ ⎢⎣− 4⎥⎦ ⎡8 ⎤ ⎡8 − 1 1 ⎤ ⎡0 ⎤ ⎢ ⎥ ⎢ ⎥ a = ⎢2 9 1 ⎥; b = ⎢ 12 ⎥ ; xn = ⎢⎢0⎥⎥ . ⎢⎣− 4⎥⎦ ⎢⎣1 2 − 7 ⎥⎦ ⎢⎣0⎥⎦
E2.3 Să se realizeze, în mediul de programare MATLAB, un program pentru rezolvarea unui sistem de n ecuaţii liniare cu n necunoscute, prin metoda iterativă Gauss-Seidel. Programul va compara soluţia găsită cu cea furnizată de mediul MATLAB, aplicând o metodă directă de rezolvare. În realizarea programului, se vor parcurge exact aceleaşi etape descrise în cadrul exerciţiului E2.2. Deosebirile constau în modul de calcul al matricelor nn şi p, care definesc matricea de conveegenţă g (punctul 6), precum şi în modalitatea de adaptare a soluţiei iterative (punctul 7) de la exerciţiul E2.2.
2.9
Probleme propuse
79
Matricele nn şi p se calculează cu comenzile: atribuie nn ← tril (a) atribuie p ← nn - a Porţiunea din descrierea în limbaj pseudocod (punctul 7) de la exrciţiul E2.2: ⎢ * adaptare soluţie metoda Jacobi: ⎢ .................................................................... ⎢ * sfârşit adaptare soluţie metoda Jacobi se înlocuieşte cu următoarea secvenţă de comenzi: ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢
* adaptare soluţie metoda Gauss-Seidel: pentru i = 1,n execută ⎡ atribuie sum ← 0 ⎢ pentru j = 1,i-1 execută ⎢ ⎡ atribuie sum ← sum + a(i,j) * xn(j) ⎢ ⎣ ⎢ pentru j = i+1,n execută ⎢ ⎡ atribuie sum ← sum + a(i,j) * xv(j) ⎢ ⎣ ⎢ atribuie xn(i) ← ( b(i) - sum ) / a(i,i) ⎣ * sfârşit adaptare soluţie metoda Gauss-Seidel
Observaţii: 1.) Descrierea anterioară a programului foloseşte aceleaşi funcţii MATLAB ca la exerciţiul E2.2. Singura deosebire este reprezentată de înlocuirea funcţiei diag cu funcţia tril (extragerea parţii inferior triunghiulare a unei matrice, inclusiv diagonala, restul de elemente fiind completate cu zerouri). 2.) Programul se va rula pentru datele de intrare menţionate la exerciţiul E2.2, rezulatele analizându-se şi comparându-se cele două metode iterative, Jacobi şi Gauss-Seidel.
2.9
Probleme propuse
P2.1. Se consideră sistemul de ecuaţii algebrice liniare:
80
2.
Sisteme determinate de ecuaţii algebrice liniare
⎡ 1 − 2 3 ⎤ ⎡ x1 ⎤ ⎡ 5 ⎤ ⎢2 4 − 1⎥⎥ ⋅ ⎢⎢ x 2 ⎥⎥ = ⎢⎢ 7 ⎥⎥, α ∈ ℜ . ⎢ ⎢⎣− 1 − 14 11 ⎥⎦ ⎢⎣ x 3 ⎥⎦ ⎢⎣α ⎥⎦ Folosind transformări elementare directe (fără pivotare), să se determine pentru ce valoare a parametrului α sistemul (a) nu are soluţii? (b) are o infinitate de soluţii?
P2.2. Să se realizeze programul pentru rezolvarea unui sistem de ecuaţii algebrice liniare: A ⋅ X = B, A ∈ ℜ n×n , B ∈ ℜ n×p , prin metoda directă bazată pe triangularizarea cu pivotare parţială a matricei sistemului. Exemple numerice: ⎡4 ⎢2 I. A = ⎢ ⎢0 ⎢ ⎣1 ⎡1 ⎢2 II. A = ⎢ ⎢3 ⎢ ⎣4
0 −1 1 −2 3 1
2 0
3⎤ 0 7 ⎤ ⎡ 0 ⎢ ⎥ 0 ⎥ 1 0 − 1 ⎥⎥ ⎢ , B= ; ⎢ 4 −2 4 ⎥ − 2⎥ ⎥ ⎢ ⎥ 5 ⎦ ⎣ − 2 4 − 2⎦
2 5 3⎤ ⎡1 − 1 ⎤ ⎥ ⎢ 2 − 2⎥ 2 6 4⎥ ⎥. , B=⎢ ⎢ 3 − 3⎥ 2 7 5⎥ ⎥ ⎢ ⎥ 2 8 6⎦ ⎣ 4 − 4⎦
P2.3. Să se realizeze programul pentru inversarea unei matrice pătratice reală, de ordinul n, prin metoda directă bazată pe triangularizarea cu pivotare parţială a matricei. Programul va verifica relaţia: A ⋅ A −1 = I n , unde A −1 este inversa calculată, iar I n este matricea unitate de ordinul n. Exemple numerice:
I.
⎡4 ⎢2 A=⎢ ⎢0 ⎢ ⎣1
0 −1 1 −2 3 1
2 0
3 ⎤ 0 ⎥⎥ ; − 2⎥ ⎥ 5 ⎦
II.
⎡1 ⎢2 A=⎢ ⎢3 ⎢ ⎣4
2 5 3⎤ 2 6 4⎥⎥ . 2 7 5⎥ ⎥ 2 8 6⎦
2.9
Probleme propuse
81
P2.4. Să se realizeze programul pentru inversarea unei matrice pătratice reală, de ordinul n, inferior triunghiulară, exploatând structura particulară a acesteia. Se va verifica rezultatul obţinut efectând produsele: A ⋅ A −1 , A −1 ⋅ A . Exemple numerice: I.
⎡ 6 0 0⎤ A = ⎢⎢2 1 0⎥⎥ ; ⎢⎣1 − 7 1⎥⎦
⎡6 0 0 ⎤ A = ⎢⎢1 0 0 ⎥⎥ . ⎢⎣2 1 − 8⎥⎦
II.
P2.5. Să se realizeze programul pentru calculul determinantului unei matrice pătratice reală, de ordin n, prin metoda directă bazată pe triangularizarea cu pivotare totală a matricei.
Exemple numerice:
I.
⎡1 ⎢2 A=⎢ ⎢5 ⎢ ⎣3
2 2 6 4
4⎤ 2⎥⎥ ; 8⎥ ⎥ 6⎦
3 2 7 5
II.
⎡1 ⎢2 A=⎢ ⎢3 ⎢ ⎣1
4 −2 3 ⎤ 2 0 4 ⎥⎥ . 0 −1 2 ⎥ ⎥ 2 2 − 3⎦
P2.6. Să se realizeze programul pentru rezolvarea, în corpul numerelor complexe, a sistemului de ecuaţii: A ⋅ z = b, A ∈ C n×n , b ∈ C n×1 , prin transformarea acestuia într-un sistem de ecuaţii echivalent: C ⋅ x = d, C ∈ ℜ m×m , d ∈ ℜ m×1 , m = 2 ⋅ n . Sistemul transformat se rezolvă utilizând programul realizat pentru rezolvarea problemei P2.2. Exemple numerice: 8
I.
II.
⎡1 + i 2i ⎤ ⎡ 2i ⎤ 2 A=⎢ , b=⎢ ⎥ ⎥, i = −1 ; 2 1 i − 4 − 2 i ⎣ ⎦ ⎣ ⎦ ⎡ 4 + 6i ⎤ ⎡3 − 2i − 2 − 3i ⎤ 2 A=⎢ , b=⎢ ⎥, i = −1 . ⎥ 2 i 1 2 i 2 4 i − + + − ⎣ ⎦ ⎣ ⎦ 8
82
2.
Sisteme determinate de ecuaţii algebrice liniare
P2.7. Să se realizeze programul pentru aducerea unei matrice A ∈ ℜ m×n , m > n , la forma superior triunghiulară prin eliminare gaussiană cu pivotare parţială (de linii). Exemple numerice:
I.
⎡1 6 ⎤ ⎢2 7 ⎥ ⎢ ⎥ A = ⎢3 8 ⎥ ; ⎢ ⎥ ⎢4 9 ⎥ ⎢⎣5 10⎥⎦
II.
⎡1 6 ⎢2 7 ⎢ A = ⎢3 8 ⎢ ⎢4 9 ⎢⎣5 10
11⎤ 12⎥⎥ 13⎥ . ⎥ 14⎥ 15⎥⎦
P2.8. Să se realizeze programul pentru estimarea numărului de condiţie al unei matrice pătratice reală, de ordin n, folosind relaţia de calcul: k 1 ( A) =|| A ||1 ⋅ || A −1 ||1 . Inversa matricei A se calculează folosind programul realizat pentru rezolvarea problemei P2.3. Norma 1 a matricelor implicate se va calcula conform definiţiei (Anexa A), prin program. Exemple numerice:
I.
⎡1 ⎢ 4 A=⎢ ⎢− 2 ⎢ ⎣ 3
1⎤ 2 ⎥⎥ ; 0 −1 2 ⎥ ⎥ 4 2 − 3⎦ 2 2
3 0
II.
⎡ 1 ⎢1 / 2 A=⎢ ⎢1 / 3 ⎢ ⎣1 / 4
1 / 2 1 / 3 1 / 4⎤ 1 / 3 1 / 4 1 / 5⎥⎥ . 1 / 4 1 / 5 1 / 6⎥ ⎥ 1 / 5 1 / 6 1 / 7⎦
P2.9. Se consideră sistemul de ecuaţii algebrice liniare: ⎡ 4 3 2⎤ A ⋅ x = b, A = ⎢⎢2 3 4⎥⎥, a ∈ ℜ . ⎢⎣2 4 a ⎥⎦ Care este cea mai mică valoare a parametrului a pentru care metoda iterativă Jacobi va fi convergentă?
P2.10. Să se realizeze programul pentru rezolvarea unui sistem determinat de ecuaţii algebrice liniare, de ordinul n, prin metoda iterativă a suprarelaxării succesive de tip Gauss-Seidel. Considerând ω drept parametru de accelerare a convergenţei metodei iterative, ω ∈ [1,2] , programul va determina, crescând succesiv parametrul ω cu pasul 0.1 , valoarea optimă ω optim pentru care numărul de iteraţii este minim.
2.9
Probleme propuse
83
Exemplu numeric: ⎡ 2 1 1⎤ ⎡5⎤ ⎢ ⎥ A = ⎢2 2 1⎥, b = ⎢⎢9⎥⎥ . ⎢⎣1 1 3⎥⎦ ⎢⎣6⎥⎦
Capitolul 3 REZOLVAREA SISTEMELOR DE ECUAŢII ALGEBRICE LINIARE ÎN SENSUL CELOR MAI MICI PĂTRATE
3.1
Formularea problemei
Se consideră sistemul cu m ecuaţii algebrice liniare cu n necunoscute:
A ⋅ x = b, A ∈ ℜ m×n , b ∈ ℜ m×1 , x ∈ ℜ n×1 .
(3.1)
Problema generală de calcul este determinarea unei soluţii x care să satisfacă la relaţia (3.1). Dacă m > n , atunci se spune că sistemul de ecuaţii este supradeterminat, iar dacă m < n , atunci se spune că sistemul de ecuaţii este subdeterminat. În cele ce urmează, discuţia se referă la sisteme supradeterminate de ecuaţii. În final, este tratat şi cazul sistemelor subdeterminate de ecuaţii algebrice liniare. Exemplul 3.1:
Se reia Exemplul 2.1 referitor la identificarea modelului de regim staţionar al unui proces dinamic. De această dată, funcţia care descrie comportarea procesului este: p
p −1
y = f (u 1 , … , u p ) = c 0 + ∑ c i ⋅ u i + ∑ i =1
p
p
∑ c i, j ⋅ u i ⋅ u j + ∑ c i,i ⋅ u i2 .
i =1 j=i +1
i =1
Pentru intrările şi ieşirea procesului se consideră m valori experimentale prezentate în tabelul următor: nr. experiment
u1
up
y
1
a11
a1p
b1
m
am1
amp
bm
84
3.
Rezolvarea sistemelor de ecuaţii algebrice liniare în sensul celor mai mici pătrate
În continuare se realizează următoarele notaţii: b = [b1 … b m ]T ;
x = [c 0 … c p
c1, 2 … c1,p
⎡1 a 11 … a 1p ⎢ A=⎢ ⎢1 a … a mp m1 ⎣
c 2,3 … c 2,p … c p −1,p
a 11 ⋅ a 12
…
a 1,p −1 ⋅ a 1,p
a m1 ⋅ a m 2
… a m ,p −1 ⋅ a m ,p
2 a 11
a 2m1
c1,1 … c p,p ]T … a 12p ⎤ ⎥ ⎥, 2 ⎥ … a mp ⎦
unde se numesc: A – matricea de date, vectorul b - vectorul măsurătorilor (observaţiilor) care, în general, este afectat de eroare şi x - vectorul coeficienţilor care trebuie determinat. Rezultă aşadar o problemă de tipul (3.1), numărul de necunoscute fiind, în acest caz, n = 1 + p + p ⋅ (p − 1) / 2 + p . Se rescrie matricea de date A, din ecuaţia (3.1), sub o altă formă punând în evidenţă vectorii coloană ai săi: A = [a 1 … a j … a n ], a j ∈ ℜ m×1 , j = 1, … n . Definiţii: • Matricea A ∈ ℜ m×n se spune că are coloanele liniar independente sau că este monică, dacă vectorii colană ai săi sunt liniar independenţi: n
∑ α j ⋅ a j = 0m j=1
⇒ α j = 0, ∀j = 1, … , n .
• Se numeşte subspaţiu imagine al matricei A, notat cu Im(A), mulţimea: Im(A) = {y ∈ ℜ m×1 / y = A ⋅ x, ∀x ∈ ℜ n×1 } ⊆ ℜ m×1 . • Se numeşte subspaţiu nul (nucleu) al matricei A şi se notează cu nul(A) sau N(A), mulţimea: N ( A ) = {x ∈ ℜ n×1 / A ⋅ x = 0 m } ⊆ ℜ n×1 .
Pornind de la aceste definiţii, se poate scrie următoarea relaţie: dim( N (A )) + rang( A) = n , unde dim(.) reprezintă dimensiunea spaţiului implicat, iar rang(.) semnifică rangul matricei considerate. Propoziţie: Pentru orice matrice
A ∈ ℜ m×n , m > n , următoarele afirmaţii sunt
echivalente: i.) A este o matrice monică; ii.) rang( A ) = n ;
3.1
Formularea problemei
85
iii.)
N(A) = {0 n } ;
iv.)
matricea A T ⋅ A este pozitiv definită, deci inversabilă (nesingulară).
Concluzia care se desprinde este aceea că problema (3.1) va avea o soluţie unică dacă vectorul b ≠ 0 m aparţine subspaţiului imagine al matricei A, b ∈ Im(A ) , sau, altfel spus, vectorul b este o combinaţie liniară a coloanelor matricei A, acesta în ipoteza că rang( A ) = n .
Este posibil, însă, ca vectorul b să fie (uşor) perturbat, deci să nu mai aparţină subspaţiului imagine al matricei A. Şi în astfel de cazuri se doreşte determinarea unei soluţii pentru problema de calcul (3.1). De aceea, pentru rezolvarea în orice condiţii a problemei (3.1), este nevoie de un criteriu pentru determinarea unei soluţii unice. Principiul folosit este minimizarea unei funcţii criteriu de tipul: (3.2) Vα ( x ) =|| b − A ⋅ x || α . *
Astfel, se consideră că vectorul x este o pseudosoluţie a problemei (3.1) dacă acesta minimizează funcţia criteriu dată de relaţia (3.2): *
Vα ( x ) = minim. Mărimea b − A ⋅ x se notează cu r şi se numeşte reziduu asociat vectorului x . Pentru funcţia criteriu aleasă, cele mai utilizate sunt normele 1, infinit şi norma euclidiană. În funcţie de norma folosită, va rezulta o pseudosoluţie diferită. Problema determinării unei pseudosoluţii care minimizează criteriul dat prin relaţia (3.2) este în fond o problemă de optimizare. Astfel, pentru o funcţie criteriu scalară, minimul se obţine pentru acel argument care anulează derivata de ordinul întâi a funcţiei (criteriu), iar derivata de ordinul al doilea este pozitivă. În cazul de faţă, argumentul fiind un vector, se vor lua în discuţie gradientul şi hesianul funcţiei criteriu Vα , în raport cu argumentul său x , şi anume: T
⎡ ∂V ( x ) ∂Vα ( x ) ⎤ n×1 … gradient: ∇ x {Vα ( x )} = ⎢ α ⎥ ∈ℜ , ∂ ∂ x x 1 n ⎣ ⎦ not
hesian: ∇ x x {Vα ( x )} = Δ x {Vα ( x )} = ∇ x {∇ Tx {Vα ( x )}} ∈ ℜ n×n . Din cele enunţate, rezultă condiţia esenţială ca funcţia criteriu Vα să fie diferenţiabilă în raport cu vectorul x . Astfel, dacă se foloseşte norma 1 sau infinit în definirea funcţiei criteriu, atunci aceasta nu satisface condiţia de
86
3.
Rezolvarea sistemelor de ecuaţii algebrice liniare în sensul celor mai mici pătrate
diferenţiabilitate, deoarece normele respective se exprimă în raport cu funcţia modul, la rândul ei nediferenţiabilă: m
V1 ( x ) = ∑ | ri | , V∞ ( x ) = max{| ri |} , ri = b i − ( A ⋅ x ) i , i = 1, … , m . 1≤i ≤ n
i =1
Ca urmare, se foloseşte norma 2 (euclidiană), rezultând următoarea funcţie criteriu de minimizat: 1 1 1 T 1 m (3.3) V ( x ) = ⋅ || b − A ⋅ x || 22 = ⋅ || r || 22 = ⋅ r ⋅ r = ⋅ ∑ ri2 . 2 2 2 2 i =1 *
Ca urmare, problema de calcul este determinarea unei pseudosoluţii x a sistemului (3.1), care să aibă proprietatea: * || b − A ⋅ x || 22 = min {|| b − A ⋅ x || 22 } . n ×1 x∈ℜ
(3.4)
Pseudosoluţia care îndeplineşte condiţia (3.4) se numeşte pseudosoluţie în sensul celor mai mici pătrate, deoarece ea determină producerea unui reziduu cu norma euclidiană minimă. Cu alte cuvinte, se minimizează suma pătratelor componentelor reziduului sau suma pătratelor diferenţelor dintre observaţiile b i şi estimaţiile ( A ⋅ x ) i . *
Determinarea vectorului x care minimizează funcţia criteriu V ( x ) implică satisfacerea următoarelor condiţii: * * ∇ x {V( x )} = 0 n şi Δ x {V( x )} > 0 . (3.5) În continuare se folosesc următoarele rezultate. Considerând matricea C ∈ ℜ n×m şi vectorii w ∈ ℜ n×1 , z ∈ ℜ m×1 , atunci se poate scrie relaţia: T
∇ w {w ⋅ C ⋅ z} = C ⋅ z . n×n
(3.6) n ×1
Considerând matricea C ∈ ℜ şi vectorul w ∈ ℜ , atunci se poate scrie relaţia: T ∇ w {w ⋅ C ⋅ w} = (C + C T ) ⋅ w . (3.7) Ca urmare, condiţiile de minim (3.5) se rescriu, folosind relaţiile (3.6) şi (3.7), sub forma: ∇ x {V ( x )} = (1 / 2) ⋅ 2 ⋅ (A T ⋅ A ⋅ x − A T ⋅ b) = 0 n . (3.8) Δ x {V( x )} = (1 / 2) ⋅ 2 ⋅ (A T ⋅ A ) > 0 Din relaţiile (3.8) rezultă: A T ⋅ A ⋅ x = A T ⋅ b şi A T ⋅ A - matrice pozitiv definită. Definiţie: Sistemul de ecuaţii algebrice liniare:
3.1
Formularea problemei
87
AT ⋅ A ⋅ x = AT ⋅ b
(3.9)
se numeşte sistem de ecuaţii normale asociat problemei (3.1).
Sistemul (3.9) este un sistem determinat, de ordinul n. În cele ce urmează se enunţă şi se demonstrează următorul rezultat. Teoremă de existenţă şi unicitate: Dacă matricea A ∈ ℜ m×n , m > n , este monică, atunci oricare ar fi vectorul
b ∈ ℜ m×1 există şi este unică o pseudosoluţie x ∈ ℜ n×1 a sistemului (3.1), *
numită şi soluţie generalizată în sensul celor mai mici pătrate. Aceasta se scrie sub forma: * x = A+ ⋅ b , unde matricea A + ∈ ℜ n×m este numită pseudoinversă sau inversă generalizată şi este teoretic egală cu:
A + = (A T ⋅ A ) −1 ⋅ A T . Demonstraţia teoremei se bazează pe propoziţia precedentă şi cele enunţate anterior, materializate în relaţiile (3.8). În plus, pentru suportul intuitiv, se poate apela la reprezentarea geometrică din Figura 3.1.
r =b−A⋅x
*
r =b−A⋅x
*
⊥ Im(A)
b
y=A⋅x
*
y =A⋅x
*
Im(A)
Fig. 3.1. Interpretarea geometrică a soluţiei în sensul celor mai mici pătrate (lema proiecţiei ortogonale)
Astfel, conform Lemei proiecţiei ortogonale, reziduul asociat pseudosoluţiei * * x , r = b − A ⋅ x , trebuie să fie ortogonal pe subspaţiul Im(A) pentru ca el să fie de normă euclidiană minimă. Aceasta conduce la relaţia: *
88
3.
Rezolvarea sistemelor de ecuaţii algebrice liniare în sensul celor mai mici pătrate
(A ⋅ x ) T ⋅ r = 0, ∀x ∈ ℜ n×1 , *
ceea ce implică: x ⋅ A T ⋅ (b − A ⋅ x ) = 0, ∀x ∈ ℜ n×1 . T
*
De aici rezultă: *
(A T ⋅ A) ⋅ x = A T ⋅ b , ceea ce pune în evidenţă existenţa soluţiei în sensul celor mai mici pătrate, * x . Observaţie: Conform celor prezentate în capitolul 2, pentru sistemul determinat de * ecuaţii normale (3.9), pseudosoluţia x este unic determinată dacă matricea acestui sistem, A T ⋅ A , este inversabilă. Această condiţie este îndeplinită dacă matricea A T ⋅ A este pozitiv definită. În practică, însă, nu se recomandă rezolvarea sistemului de ecuaţii normale (3.9) deoarece matricea A T ⋅ A , deşi teoretic este pozitiv definită, prin calcul, datorită erorilor de rotunjire, ea poate deveni pozitiv semidefinită, deci neinversabilă. Astfel, în general, matricea A T ⋅ A este prost condiţionată deoarece calculul său este afectat de erori de rotunjire deseori cu caracter catastrofal. Exemplul 3.2:
Fie o matrice A de forma: ⎡1 1 + ε ⎤ A = ⎢⎢1 1 ⎥⎥ , cu ε 2 < ε m < ε , fl(1 + ε m ) > 1 , fl(1 + ε 2 ) = 1 . ⎢⎣1 1 ⎥⎦ Matricea A are, evident, coloanele liniar independente, la precizia maşinii ε m . În schimb, efectuând calculele în virgulă mobilă, matricea fl(A T ⋅ A) nu este pozitiv definită, ci pozitiv semidefinită, deci neinversabilă: 3+ε ⎤ 3+ε ⎤ ⎡ 3 ⎡ 3 , fl(A T ⋅ A ) = ⎢ AT ⋅ A = ⎢ ⎥. 2⎥ ⎣3 + ε 3 + 2 ⋅ ε + ε ⎦ ⎣3 + ε 3 + 2 ⋅ ε ⎦ T
Există un vector x = [1 − 1] T ≠ [0 0] T , astfel încât fl( x ⋅ A T ⋅ A ⋅ x ) = 0 .
3.2
Triangularizarea ortogonală a matricelor
89
Calculul numeric automat pentru rezolvarea problemei (3.1), în sensul celor mai mici pătrate, foloseşte alte proceduri care sunt descrise în continuare. Ele apelează la triangularizarea ortogonală a matricei sistemului (3.1).
3.2
Triangularizarea ortogonală a matricelor
3.2.1 Matrice ortogonale Definiţie: Fie o matrice Q ∈ ℜ m×m . Matricea Q se numeşte ortogonală dacă este îndeplinită una din relaţiile: Q T ⋅ Q = I m sau Q T = Q −1 .
Se consideră matricea ortogonlă Q scrisă pe coloane: Q = [q 1 … q i … q j … q m ], q i ∈ ℜ m×1 , i = 1,..., m . Conform definiţiei, coloanele matricei Q sunt vectori ortogonali şi de normă unitară: T q i ⋅ q j = 0, ∀i ≠ j, i, j = 1,..., m; || q i || 22 = 1 , sau altfel spus, aceştia sunt vectori ortonormali. În contimuare se enunţă următoarele proprietăţi ale matricelor ortogonale: 1. o matrice ortogonală păstrază norma vectorială euclidiană: ∀z ∈ ℜ m×1 , || Q ⋅ z || 22 =|| z || 22 ; 2. matricele ortogonale păstrează norma matricială euclidiană, precum şi norma Frobenius: ∀A ∈ ℜ m×n , ∀Q ∈ ℜ m×m ortogonală, ∀Z ∈ ℜ n×n ortogonală, || Q ⋅ A ⋅ Z || 22 =|| A || 22 , || Q ⋅ A ⋅ Z || 2F =|| A || 2F . De o deosebită aplicabilitate se bucură un anumit tip de matrice ortogonale şi anume matricele Householder, definite prin relaţia: T u⋅u , (3.10) U = Im − β 1 T 1 în care u ∈ ℜ m×1 şi β = ⋅ u ⋅ u = ⋅ || u || 22 . Vectorul u se numeşte vector 2 2 Houseolder. Matricea U astfel definită este ortogonală şi, în plus, este şi simetrică:
90
3.
Rezolvarea sistemelor de ecuaţii algebrice liniare în sensul celor mai mici pătrate
U T = U = U −1 . Acest tip de matrice se mai numesc şi reflectori Householder, deoarece, considerând un vector real x ∈ ℜ m×1 , atunci se poate spune că prin
transformarea y = U ⋅ x, y ∈ ℜ m×1 , vectorul x este reflectat (proiectat) într-un hiperplan ce trece prin origine şi este ortogonal pe hiperplanul care conţine vectorul u . Matricele otogonale Householder pot fi folosite în scopul zerorizării unor elemente ale unui vector, impunând o anumită structură pentru vectorul u din definiţia (3.10). Revenind la problema găsirii pseudosoluţiei în sensul celor mai mici pătrate, criteriul V ( x ) , precizat în relaţia (3.3), rămâne invariant la transformările ortogonale deoarece, conform proprietăţii 1 enunţate anterior, se poate scrie: 1 1 V( x ) = ⋅ || r || 22 = ⋅ || U ⋅ r || 22 , 2 2 unde U este o matrice ortogonală. În concluzie, problema de calcul nu se modifică dacă se aplică sistemului de ecuaţii (3.1) o transformare ortogonală. În felul acesta, utilizând reflectori Householder, sistemul (3.1) poate fi adus la o formă simplă, determinând apoi pseudosoluţia prin mijloace elementare cum ar fi substituţia inversă. Nu se folosesc transformările elementare gaussiene deoarece acestea, nefiind matrice ortogonale, nu păstrează norma vectorială euclidiană şi modifică funcţia criteriu de minimizat. 3.2.2 Procedura de triangularizare ortogonală a unei matrice de rang complet
Se enunţă şi demonstrează următorul rezultat: Propoziţie: Fie
ξ = [ξ1 … ξ k −1
ξk
ξ k +1 … ξ m ]T ∈ ℜ m×1 .
Dacă
mărimea
m
σ 2k = ∑ ξ i2 este nenulă, atunci există un reflector Householder U k ∈ ℜ m×m i=k
astfel încât:
U k ⋅ ξ = [ξ1 … ξ k −1 ρ k
0 … 0]T ,
în care ρ 2k = σ 2k .
Matricea U k din enunţul propoziţiei se numeşte reflector Householder de ordin m şi indice k.
3.2
Triangularizarea ortogonală a matricelor
91
Demonstraţia este constructivă şi implică determinarea vectorului Householder u k pentru care U k = I m − u k ⋅ u Tk / β k , în care β k =|| u k || 22 / 2 . Astfel, se consideră vectorul u k de forma: u k = [0 … 0 u k , k
u k +1,k
… u m,k ]T ,
care este complet determinat prin următoarele relaţii de calcul: σ k = sign (ξ k ) ⋅
m
∑ ξ i2 ,
i =k
u k ,k = ξ k + σ k , u i ,k = ξ i , i = k + 1,..., m,
β k = σ k ⋅ u k , k , ρ k = −σ k .
Funcţia semn, sign(.), este folosită pentru a evita fenomenul de neutralizare a termenilor la sinteza termenului u k ,k . m
Dacă σ 2k = ∑ ξ i2 = 0 , aceasta este echivalentă cu ξ i = 0, ∀i = k ,..., m , de i=k
unde rezultă că σ k = 0 , u k = 0 m , β k = 0 , ceea ce înseamnă că transformarea U k nu există.
Se enunţă, în continuare, următoarea proprietate. Fie η ∈ ℜ m×1 un vector oarecare de forma η = [η1 … η m ]T ≠ ξ , unde ξ este vectorul pentru care s-a determinat reflectorul U k (propoziţia anterioară). Atunci se poate scrie: T T ⎛ u ⋅u ⎞ u ⋅u (3.11) Uk ⋅ η = ⎜ Im − k k ⎟ ⋅ η = η − k k ⋅ η . ⎜ ⎟ β β k k ⎝ ⎠ T
Se introduce mărimea: τ =
uk ⋅η βk
şi, înlocuind în (3.11), se obţine:
i = 1,..., k − 1 ⎧η i , U k ⋅ η = η − τ ⋅ u k sau U k ⋅ η i = ⎨ , ⎩η i − τ ⋅ u i , k , i = k ,..., m m u j, k ⋅ η j în care τ = ∑ . βk j= k
(
)
În particular, dacă vectorul este de T m×1 cu j = 1,..., k − 1 , atunci: η[ j] = [η1 … η j 0 … 0] ∈ ℜ
forma
U k ⋅ η[ j] = η[ j] , deoarece, în acest caz τ = 0 . Cu aceste elemente precizate, se enunţă şi se demonstrează următorul rezultat.
92
3.
Rezolvarea sistemelor de ecuaţii algebrice liniare în sensul celor mai mici pătrate
Propoziţie: Oricare ar fi matricea A ∈ ℜ m×n , m > n , de rang complet pe coloane n, există o matrice Q ∈ ℜ m×m ortogonală, astfel încât matricea A se poate scrie: A =Q⋅R, (3.12) unde matricea R ∈ ℜ m×n are următoarea structură: ⎡ R1 ⎤ ⎢ ⎥ R=⎢ ⎥, ⎢0 ( m − n )×n ⎥ ⎣ ⎦ n×n unde matricea R 1 ∈ ℜ este superior triunghiulară ( rii ≠ 0, ∀i = 1,..., n ).
nesingulară
Demonstraţia este constructivă şi constituie însuşi algoritmul de triangularizare ortogonală a matricei A, descompunerea din relaţia (3.12) numindu-se descompunere QR. Descrierea principială în limbaj pseudocod a acestui algoritm este următoarea: atribuie A 1 ← A pentru k = 1, n execută ⎡ * determinare reflector U k astfel încât: ( U k ⋅ A k ) i,k = 0, i = k + 1,..., m ; ⎢ ⎢ atribuie A k +1 ← U k ⋅ A k ⎣ atribuie R ← A n +1 Pentru determinarea reflectorilor U k la fiecare iteraţie k, se va considera drept vector ξ , coloana numărul k a matricei A k transformate. Astfel, se vor zeroriza, coloană cu coloană, elementele de sub pseudo-diagonala principală a matricei A. În urma calculului matricei A k +1 , primele k − 1 coloane din matricea A k se păstrează, iar coloanele de la k + 1 la n se modifică în liniile de la k la m. Algoritmul eşuează dacă matricea A este deficientă de rang. În acest caz, la calculul reflectorului U k , mărimea σ k ar fi nulă, ceea ce va conduce la β k = 0 în aritmetica reală ( | β k |≤ ε impus în virgulă mobilă). Ca o consecinţă a acestui fapt, elementul rk ,k de pe diagonala principală a matricei R 1 va rezulta nul, dacă algoritmul eşuează la iteraţia k. Pentru continuarea procesului de
3.3
Rezolvarea sistemelor supradeterminate de ecuaţii algebrice liniare
93
triangularizare (condiţia de executarea a unei iteraţii), testul uzual care ţine cont de erorile în virgulă mobilă este: | β k |> ε impus . În urma aplicării acestui algoritm se obţine: U n ⋅ U n −1 ⋅ … ⋅ U 1 ⋅ A = R . Notând cu U matricea obţinută prin multiplicarea reflectorilor Householder: U = U n ⋅ U n −1 ⋅ … ⋅ U 1 se obţine: U⋅A =R . Multiplicând ultima relaţie la stânga cu U −1 , se obţine: A = Q ⋅ R , unde Q = U −1 = U T = U 1 ⋅ U 2 ⋅ … ⋅ U n . Matricea Q rezultată este ortogonală, fiind rezultatul unui produs de matrice ortogonale.
3.3
Rezolvarea sistemelor supradeterminate de ecuaţii algebrice liniare
3.3.1 Cazul sistemelor cu matrice de rang complet
Se consideră sistemul supradeterminat de ecuaţii algebrice liniare (3.1), unde matricea sistemului este de rang complet pe coloane: A ∈ ℜ m×n , rang( A) = n , m > n . Se multiplică la stânga ecuaţia (3.1) cu secvenţa de reflectori Householder care realizează triangularizarea ortogonală a matricei sistemului şi “acumulate” în matricea U. Se obţine: (3.13) U⋅A⋅x = U⋅b.
Conform ultimei propoziţii din paragraful 3.2.2 anterior, relaţia (3.13) devine: (3.14) R ⋅ x = d; R = U ⋅ A , d = U ⋅ b , unde matricea R este (quasi-)superior triunghiulară. Sistemul (3.14) se numeşte sistem ortogonal echivalent cu sistemul (3.1). Ecuaţia (3.14) se poate scrie sub forma: ⎡ R1 ⎤ ⎡ d1 ⎤ ⎢ ⎥ ⎢ ⎥ n ×1 ( m − n )×1 , (3.15) ⎢ ⎥ ⋅ x = ⎢ ⎥, d 1 ∈ ℜ , d 2 ∈ ℜ ⎢0 ( m − n )×n ⎥ ⎢⎣d 2 ⎥⎦ ⎣ ⎦ unde matricea pătratică R 1 , de ordin n, este superior triunghiulară şi nesingulară. În general d 2 ≠ 0 ( m − n ) , caz în care se spune că sistemele de ecuaţii
94
3.
Rezolvarea sistemelor de ecuaţii algebrice liniare în sensul celor mai mici pătrate
(3.1) şi (3.14) sunt incompatibile. Dar, ceea ce interesează este determinarea * unui vector x care minimizează norma euclidiană a reziduului: (3.16) r =b−A⋅x. Multiplicând la stânga relaţia (3.16) cu matricea ortogonală U, se obţine conform relaţiilor (3.13) - (3.15): ⎡d 1 − R 1 ⋅ x ⎤ ⎥. (3.17) U ⋅ r = U ⋅ b − U ⋅ A ⋅ x = d − R ⋅ x = ⎢⎢ ⎥ ⎢⎣ ⎥⎦ d2 Matricea U fiind ortogonală, aceasta păstrează norma vectorială euclidiană. Ca urmare, din relaţia (3.17) rezultă: (3.18) V ( x ) =|| r || 22 =|| U ⋅ r || 22 =|| d 1 − R 1 ⋅ x || 22 + || d 2 || 22 . Cum în general d 2 ≠ 0 ( m − n ) , deci || d 2 || 22 ≠ 0 , rezultă că singura minimizare care se poate realiza, în ceea ce priveşte funcţia criteriu din relaţia (3.18), este: || d 1 − R 1 ⋅ x || 22
!
=0 ,
ceea ce conduce, în corpul numerelor reale, la: * R 1 ⋅ x = d1 .
(3.19)
Cum matricea R 1 este superior triunghiulară şi nesingulară, pseudosoluţia x se obţine prin rezolvarea sistemului (3.19), prin substituţie inversă.
*
Concluzie: Triangularizarea bazată pe transformări ortogonale prezervă norma euclidiană matricială. Aşadar, se păstrează condiţionarea numerică a matricei sistemului în raport cu norma euclidiană, fiind singura metodă adecvată pentru calculul pseudosoluţiei în sensul celor mai mici pătrate.
Probleme conexe
• Calculul reziduului de normă minimă asociat pseudosoluţiei în sensul celor mai mici pătrate, se realizeată considerând relaţia (3.17) în care se ţine cont de ecuaţia (3.19). Se obţine: ⎡0 n ⎤ * U ⋅ r = ⎢⎢ ⎥⎥ . ⎢⎣d 2 ⎥⎦ Rezultă:
3.3
Rezolvarea sistemelor supradeterminate de ecuaţii algebrice liniare
⎡0 n ⎤ r = U ⋅ ⎢⎢ ⎥⎥ = U 1 ⋅ U 2 ⋅ … ⋅ U n ⎢⎣d 2 ⎥⎦ *
T
95
⎡0 n ⎤ ⋅ ⎢⎢ ⎥⎥ ⎢⎣d 2 ⎥⎦
• Calculul pseudoinversei matricei A se realizează plecând de la descompunerea QR a acesteia: ⎡ In ⎤ ⎢ ⎥ T A = Q ⋅ R = U ⋅ R = U1 ⋅ U 2 ⋅ … ⋅ U n ⋅ ⎢ ⎥ ⋅ R1 . ⎢0 ( m − n )×n ⎥ ⎣ ⎦ Rezultă, aşadar: T
⎡ In ⎤ ⎥ + −1 −1 ⎢ T T A = (A ⋅ A) ⋅ A = (R 1 ) ⋅ ⎢ ⎥ ⋅ U n ⋅ … ⋅ U1 . ⎢0 ( m − n )×n ⎥ ⎣ ⎦ Exemplul 3.3:
Fie sistemul (3.1) cu următoarele valori numerice: ⎡1 1 ⎤ ⎡ 2⎤ ⎢1 2 ⎥ ⎢ 3⎥ ⎢ ⎥ ⎢ ⎥ A = ⎢0 1 ⎥ , b = ⎢ 1 ⎥ . ⎢ ⎥ ⎢ ⎥ ⎢1 0 ⎥ ⎢1 ⎥ ⎢⎣1 − 1⎥⎦ ⎢⎣0⎥⎦ În urma rezolvării în sensul celor mai mici pătrate a sistemului considerat, rezultă: −1 ⎤ ⎡− 2 ⎡ −3 ⎤ ⎡ 1 ⎤ ⎡1⎤ , d1 = ⎢ , x* = ⎢ R1 = ⎢ ⎥ ⎥ ⎥≅⎢ ⎥, ⎣ 0 − 2.44949⎦ ⎣− 2.44949⎦ ⎣0.99999 ⎦ ⎣1⎦ unde [1 1] reprezintă pseudosoluţia exactă a sistemului. T
Capitolul 4 CALCULUL VALORILOR ŞI VECTORILOR PROPRII
4.1
Formularea problemei
Se consideră o matrice pătratică reală, de ordinul n, notată cu A. Definiţie: Oricare ar fi matricea A ∈ ℜ n×n , un număr în general complex, λ ∈ C , se numeşte valoare proprie a matricei A dacă există un vector x ∈C n×1 , x ≠ 0 n , astfel încât
A⋅x =λ⋅x.
(4.1)
În acest caz, x se numeşte vector propriu al matricei A, asociat valorii proprii λ.
Relaţia de definiţie (4.1) se poate scrie şi sub forma: (λ ⋅ I n − A) ⋅ x = 0 n ,
x ≠ 0 n , de unde rezultă că matricea λ ⋅ I n − A trebuie să fie singulară. În continuare, se construieşte un polinom în variabila λ , definit prin relaţia: p n (λ ) = det( λ ⋅ I n − A ) ,
(4.2)
numit polinom caracteristic al matricei A. Acesta este un polinom cu coeficienţi reali, de gradul n: p n (λ ) = λn + α 1 ⋅ λn −1 + … + α n −1 ⋅ λ + α n , unde coeficienţii α i ∈ ℜ, i = 1,..., n . Deoarece matricea λ ⋅ I n − A este singulară, rezultă că valoarea proprie λ verifică ecuaţia caracteristică: (4.3) p n (λ ) = 0 . Conform teoremei fundamentale a algebrei, orice polinom de gradul n are n rădăcini. Ca urmare, poate fi enunţat următorul rezultat. Teoremă de existenţă: Orice matrice pătratică reală, de ordin n, are exact n valori proprii, în general complexe şi nu neapărat distincte, care coincid cu rădăcinile
110
4.
Calculul valorilor şi vectorilor proprii
polinomului caracteristic ataşat matricei. Dacă există valori proprii complexe, atunci acestea apar în perechi complex conjugate.
Definiţie: Mulţimea valorilor proprii ale unei matrice pătratice σ( A ) = {λ 1 ( A ),..., λ n ( A )} , se numeşte spectrul matricei A.
reală
A,
O consecinţă a teoremei enunţate anterior este: Orice matrice A ∈ ℜ n×n are cel puţin un vector propriu.
Altfel spus, fiecărei valori proprii λ i ∈ σ( A ), i = 1,..., n , îi corespunde cel puţin un vector propriu x i aparţinând nucleului matricei λ i ⋅ I n − A : x i ∈ N (λ i ⋅ I n − A ) . Vectorii proprii corespunzători valorilor proprii complex conjugate pot fi aleşi complex conjugaţi. Definiţie: Matricea A ∈ ℜ n×n se numeşte matrice simplă, dacă ea admite n vectori proprii liniar independenţi. Aceşti vectori proprii constituie o bază în spaţiul C n×1 , numită bază proprie a matricei A.
Astfel, se poate sintetiza o matrice pe baza celor n vectori proprii x i , i = 1,..., n , după cum urmează: X = [ x 1 x 2 … x i … x n ] . Folosind relaţia (4.1) pentru toate valorile proprii ale matricei A, atunci se poate scrie: A ⋅ X = X ⋅ Λ , unde Λ = diag{λ 1 ,..., λ i ,..., λ n } este o matrice diagonală. Matricea Λ se numeşte forma canonică diagonală a matricei A. Aşadar, orice matrice pătratică reală, de ordin n, este diagonalizabilă peste mulţimea numerelor complexe C : Λ = X −1 ⋅ A ⋅ X . Metodele numerice pentru calculul automat al valorilor şi vectorilor proprii nu se bazează pe rezolvarea ecuaţiei caracteristice asociată matricei A, definită prin relaţiile (4.2) şi (4.3). Astfel, de multe ori, rezolvarea ecuaţiei caracteristice se dovedeşte a fi imposibilă. În continuare sunt expuse două din motivele pentru care, în practică, nu se preferă rezolvarea ecuaţiei caracteristice. 1. Plecând de la matricea A, calculul coeficienţilor polinomului caracteristic, α i ∈ ℜ, i = 1,..., n , necesită un volum de calcul ridicat. Ca urmare, aceşti coeficienţi sunt afectaţi, în general, de erori de rotunjire. O metodă uzuală de determinare a acestora este algoritmul Leverrier – Fadeeva, care constă în următoarele: atribuie B1 ← I n atribuie α 1 ← ( −1 / 1) ⋅ tr ( B1 ⋅ A ) pentru k = 2, n execută
4.1
⎡ ⎢
Formularea problemei
111
atribuie B k ← B k −1 ⋅ A + α k −1 ⋅ I n atribuie α k ← ( −1 / k ) ⋅ tr ( B k ⋅ A )
⎣ Acest algoritm necesită un număr de operaţii în virgulă mobilă de ordinul lui n 4 . În descrierea anterioară, tr(Z) este notaţia pentru urma matricei oarecare n
Z, definită ca fiind: Z = [z ij ]1≤i , j≤ n , tr ( Z) = ∑ z i ,i . i =1
2. În general, problema rezolvării ecuaţiilor polinomiale este o problemă prost condiţionată, în sensul că mici perturbaţii în coeficienţii polinomului conduc la perturbaţii mari în rădăcinile calculate (a se revedea Exemplul 1.12, subcapitolul 1.3.1 şi Exemplul 1.13). Metodele practice pentru calculul numeric automat al valorilor proprii sunt, în esenţă, proceduri iterative de aducere a matricei A la anumite forme (“canonice”) simple, prin intermediul unor transformări de asemănare. Deoarece forma canonică Jordan este foarte sensibilă la perturbaţii (Exemplul 1.13), în practică se utilizează aşa-numita formă canonică Schur, obţinută prin transformări ortogonale de asemănare. Aplicaţii:
În general, calculul valorilor şi vectorilorproprii intervine ca etapă esenţială în analiza şi sinteza sistemelor dinamice liniare (continue de timp), în probleme legate de: • studiul stabilităţii (interne); • studiul răspunsului sistemelor. Astfel, în ceea ce priveşte analiza stabilităţii sistemelor automate, tehnicile matriceale bazate pe localizarea valorilor proprii au o deosebită importanţă. În funcţie de natura problemei, uneori este suficient a determina plasarea valorilor proprii ale unei matrice în planul complex, alteori este absolut necesară determinarea cu precizie a valorilor proprii. Pentru a răspunde acestor cerinţe diferite, au fost abordate metode ce necesită un efort de calcul adecvat şi a căror aplicare eficientă presupune utilizarea tehnicii de calcul: • localizarea valorilor proprii prin metoda inegalităţilor lui Gherşgorin (a se vedea problema propusă P4.2); • calculul valorilor şi vectorilor proprii bazat pe algoritmul QR şi forma canonică Schur (conţinutul prezentului capitol). În studiul răspunsului sistemelor dinamice liniare se disting următoarele cazuri:
112
4.
•
Calculul valorilor şi vectorilor proprii
răspunsul liber pentru care evoluţia stării sistemului este cauzată numai de starea sa iniţială la un anumit moment de timp t 0 şi în lipsa oricărui
semnal exterior; • răspunsul forţat pentru care evoluţia în timp a semnalului de ieşire este cauzată de aplicarea unui semnal la intrarea sistemului. Pentru rezolvarea unor astfel de probleme intervine calculul matricei variante în timp: Φ ( t ) = e A⋅t , unde: A ∈ ℜ n×n este o matrice constantă; t ∈ ℜ este o variabilă scalară cu semnificaţia de moment de timp, oarecare dar fixat. Matricea Φ ( t ) este întâlnită sub denumirea de matrice de tranziţie.
• •
În continuare, se notează B = A ⋅ t , B ∈ ℜ n×n , t ∈ ℜ oarecare. În urma calculului valorilor şi vectorilor proprii pentru matricea B, se obţin următoarele: • D = diag{d i ,i }, d i ,i = λ i , λ i ∈ σ( B), D ∈ C n×n , o matrice diagonală care conţine, pe diagonala principală, valorile proprii ale matricei B; • V ∈ C n×n , o matrice conţinând, corespunzător, în fiecare coloană, vectorii proprii ai matricei B. Astfel, valoarea proprie din poziţia (i,i) a matricei D corespunde vectorului propriu din coloana numărul i a matricei V ( i = 1,..., n ). Ca urmare, calculul matricei e B implică utilizarea relaţiei: V ⋅ diag{e
d1,1
,..., e
d n ,n
} ⋅ V −1 ,
unde V −1 este inversa matricei V. Cum, în general, V este o matrice cu elemente în corpul numerelor complexe, pentru calculul inversei ei se poate aplica metodologia expusă în subcapitolul 2.3.4 privitoare la rezolvarea sistemelor cu elemente numere complexe. De asemenea, pentru calculul elementelor de tip e relaţiile:
d i ,i = ri + j ⋅ c i , e
4.2
d i ,i
d i ,i
, se ţine cont de
= e ri ⋅ cos(c i ) + j ⋅ e ri ⋅ sin(c i ), i = 1,..., n; j 2 = −1 .
Forma canonică Schur
Definiţie: Două matrice A, A ' ∈ ℜ n×n se numesc ortogonal asemenea, dacă există o matrice ortogonală Q ∈ ℜ n×n , astfel încât:
A' = QT ⋅ A ⋅ Q .
(4.4)
4.2
Forma canonică Schur
113
Matricele ortogonal asemenea au proprietatea esenţială că au aceleaşi valori proprii: λ i (A) = λ'i (A ' ), i = 1,..., n . Relaţia dintre vectorii proprii ai două matrice ortogonal asemenea este: ' x i = Q ⋅ x i , i = 1,..., n , '
unde prin x i , x i s-au notat vectorii proprii ai matricei A şi, respectiv, A ' . Definiţie: O matrice T ∈ ℜ n×n se spune că este în formă bloc superior triunghiulară, dacă are următoarea structură:
⎡T11 ⎢0 T=⎢ ⎢ ⎢ ⎣0
T12 … T1m ⎤ T22 … T2 m ⎥⎥ , Tii ∈ ℜ pi ×pi , ⎥ ⎥ … 0 Tmm ⎦
unde Tii , i = 1,..., m sunt submatrice pătratice. Dacă, în plus, blocurile diagonale sunt matrice de ordin maxim 2, atunci se spune că matricea este în formă cvasi-superior triunghiulară.
Teoremă de existenţă: ~ Oricare ar fi matricea A ∈ ℜ n×n , există o matrice ortogonală Q ∈ ℜ n×n , astfel încât matricea:
~ ~ S = QT ⋅ A ⋅ Q
(4.5)
este în formă cvasi-superior triunghiulară. Blocurile diagonale de ordin întâi ale matricei S reprezintă valorile proprii reale ale matricei A şi ale matricei S, iar blocurile diagonale de ordin doi au valori proprii complex conjugate reprezentând valori proprii complex conjugate ale matricelor A şi S.
Definiţie: Matricea S din relaţia (4.5) se numeşte forma canonică Schur reală a ~ matricei A. Coloanele ~ q k , k = 1,..., n ale matricei Q se numesc vectori Schur ai matricei A. Aceştia fiind vectori ortogonali, formează o bază ortogonală în ℜ n×1 numită bază Schur a matricei A.
Demonstraţia teoremei anterioare se realizează ţinând cont de ambele situaţii care pot apare, anume cazul valorilor proprii reale şi cazul valorilor proprii complex conjugate.
114
4.
Calculul valorilor şi vectorilor proprii
1. Fie λ ∈ σ(A), λ ∈ ℜ , şi fie x vectorul propriu asociat valorii proprii λ . Fără T
a restrânge generalitatea, se presupune că x ⋅ x =|| x || 22 = 1 . Se construieşte matricea ortogonală Q astfel: Q = [ x Y], Y ∈ ℜ n×( n −1) , unde Y este o matrice de completare, având coloanele ortogonale cu vectorul x şi ortogonale între ele: x ⊥ Im(Y) ⇔ Y T ⋅ x = 0 ( n −1)×1 . (4.6) Cu matricea Q astfel construită şi ţinând cont de definiţia (4.1), produsul A ⋅ Q este: A ⋅ Q = A ⋅ [x Y] = [A ⋅ x A ⋅ Y ] = [λ ⋅ x A ⋅ Y] . Dar, conform definiţiei (4.4), rezultă: A ⋅ Q = Q ⋅ A ' , şi deci:
⎤ ⎡xT ⋅ x ⋅ λ ⎡xT ⎤ * ⎥ ⎢ ⎥ ⎢ ' T A ⋅ Y] = ⎢ A = Q ⋅ A ⋅ Q = ⎢ ⎥ ⋅ [λ ⋅ x ⎥ . (4.7) T T T ⎢λ ⋅ Y ⋅ x ⎢Y ⎥ Y ⋅ A ⋅ Y⎥ ⎦ ⎣ ⎣ ⎦ T 2 Cum s-a făcut presupunerea că x ⋅ x =|| x || 2 = 1 , folosind relaţia (4.6) egalitatea (4.7) devine: ⎡ λ *⎤ ⎢ ⎥ ' ( n −1)×( n −1) , A =⎢ ⎥, B ∈ ℜ ⎢0 B ⎥⎦ ⎣ ( n −1)×1 în care s-a notat prin B matricea Y T ⋅ A ⋅ Y . În concluzie, dacă λ ∈ ℜ , există o matrice ortogonală Q, astfel încât aplicând aceasta matricei A, se obţine o matrice ortogonal asemenea, A ' . Aceasta din urmă are pus în evidenţă un bloc diagonal de ordinul întâi care coincide chiar cu valoarea proprie reală λ a matricei iniţiale A. 2. Fie λ1, 2 = α ± j ⋅ β, α, β ∈ ℜ, β ≠ 0 , o pereche de valori proprii complex conjugate ale matricei A. Fie atunci, u ± j ⋅ v vectorii proprii complex conjugaţi asociaţi valorilor proprii λ 1, 2 ∈ C . Se construieşte matricea X ∈ ℜ n×2 de forma: X = [ x 1 x 2 ] , unde x 1 , x 2 formează o bază ortogonală pentru subspaţiul imagine Im([u v ]) . Astfel, se poate scrie
relaţia: A ⋅ X = X ⋅ M, M ∈ ℜ 2×2 , unde matricea M satisface la relaţia: det(λ ⋅ I 2 − M) = 0 ⇔ λ 1, 2 = α ± j ⋅ β . Se construieşte matricea ortogonală Q ' de forma:
4.3
Algoritmul QR pentru calculul formei canonice Schur
115
Q ' = [X Y ], Y ∈ ℜ n×( n − 2 ) , unde Y este o matrice de completare având coloanele ortogonale între ele. În plus: Y T ⋅ X = 0 ( n − 2)×2 . Atunci, urmând un procedeu analog cu cel descris la punctul 1 al demonstraţiei, se obţine: ⎡ M *⎤ ⎢ ⎥ " ' T ' ( n − 2 )×( n − 2 ) A = (Q ) ⋅ A ⋅ Q = ⎢ . ⎥, C ∈ ℜ ⎢0 ( n − 2)×2 C ⎥⎦ ⎣ În concluzie, dacă matricea A are două valori proprii complex conjugate, atunci există o matrice ortogonală Q ' care, aplicată matricei A, să conducă la o matrice A " ortogonal asemenea cu aceasta. Matricea A " are pe diagonala principală un bloc de ordinul doi care, la rândul său, are drept valori proprii, valorile proprii complex conjugate ale matricei A de la care sa plecat. Demonstraţia teoremei de existenţă se obţine dacă se repetă procedurile prezentate anterior la punctele 1 şi 2 asupra matricelor B şi, respectiv, C. Acestea se numesc proceduri de deflaţie. În final se obţine o matrice în formă cvasi-superior triunghiulară care are pe diagonala principală blocuri de ordin maxim doi. Blocurile de ordinul întâi reprezintă chiar valorile proprii reale ale matricei A, iar blocurile de ordin doi, la rândul lor având valori proprii complex conjugate, oferă baza pentru calculul valorilor proprii complex conjugate ale matricei A. ~ Matricea Q din enunţul teoremei se obţine prin produsul matricelor de tipul Q, Q ' de la punctele 1 şi, respectiv, 2 ale procedurilor de deflaţie. Observaţie: Matricea S este bloc superior triunghiulară, cu blocurile diagonale de ordin maxim doi, iar fiecare bloc de ordin doi are valori proprii complex conjugate. În particular, dacă matricele A şi S au numai valori proprii reale, atunci matricea S este chiar superior triunghiulară.
4.3
Algoritmul QR pentru calculul formei canonice Schur
Algoritmul QR pentru calculul valorilor şi vectorilor proprii construieşte un şir de matrice ortogonal asemenea A 0 = A, A 1 ,..., A k ,... convergent către forma
116
4.
canonică
[ ]
Calculul valorilor şi vectorilor proprii
Schur:
[k ]
A k = a ij
1≤ i , j≤ n
→∞ A k ⎯k⎯ ⎯→ S .
Altfel
spus,
considerând
matricea
, elementele sale tind la 0 pentru k tinzând la infinit:
→∞ →∞ a [ijk ] ⎯k⎯ ⎯→ 0 pentru i ≥ j + 2 şi există elemente a [ik,i]+1 ⎯k⎯ ⎯→ 0 pentru
i=1,...,n-1, astfel încât să fie puse în evidenţă, pe diagonală, blocuri de ordin maxim doi. Se defineşte şirul de matrice {A k }k ≥ 0 , A 0 = A , prin următoarele relaţii de recurenţă:
A k − μ k ⋅ I n = Q k ⋅ R k , A k +1 = R k ⋅ Q k + μ k ⋅ I n ,
(4.8)
unde matricea Q k ∈ ℜ n×n este o matrice ortogonală, matricea R k ∈ ℜ n×n este o matrice superior triunghiulară, iar scalarul μ k ∈ ℜ se numeşte deplasare şi este un parametru de accelerare a convergenţei. Se demonstrează că dacă μ k ∉ σ( A k ) , atunci matricea R k este o matrice nesingulară. Practic, are loc descompunerea QR a matricei A k − μ k ⋅ I n prin triangularizare ortogonală (prima relaţie din (4.8)), aşa cum s-a descris în capitolul 3, subcapitolul 3.2.2 . Folosind rezultatele acestei descompuneri, se calculează apoi următorul element al şirului de matrice (a doua relaţie din (4.8)). Definiţie: Şirul de matrice {A k }k ≥0 , A 0 = A , definit prin relaţiile (4.8), se numeşte şir QR ataşat matricei A, iar relaţiile (4.8) se numesc pas QR cu deplasare explicită.
În continuare se enunţă şi demonstrează următorul rezultat. Propoziţie: Matricele şirului QR sunt ortogonal asemenea:
A k +1 = Q Tk ⋅ A k ⋅ Q k . Demonstraţia porneşte de la relaţiile de recurenţă (4.8), din care rezultă: R k = Q Tk ⋅ (A k − μ k ⋅ I n ) . (4.9) A k +1 = Q Tk ⋅ (A k − μ k ⋅ I n ) ⋅ Q k + μ k ⋅ I n = Q Tk ⋅ A k ⋅ Q k Exprimând matricea A k în funcţie de matricea A k −1 şi, mai departe, matricea A k −1 în funcţie de matricea A k − 2 , folosind relaţiile (4.9) rezultă: A k = Q Tk −1 ⋅ A k −1 ⋅ Q k −1 ⎫ T T ⎬ ⇒ A k = Q k −1 ⋅ Q k − 2 ⋅ A k − 2 ⋅ Q k − 2 ⋅ Q k −1 A k −1 = Q Tk − 2 ⋅ A k − 2 ⋅ Q k − 2 ⎭
şi, continuând în această manieră, rezultă:
4.3
Algoritmul QR pentru calculul formei canonice Schur
117
A k = Q Tk −1 ⋅ Q Tk − 2 ⋅ … ⋅ Q1T ⋅ Q T0 ⋅ A ⋅ ⋅Q 0 ⋅ Q1 ⋅ … ⋅ Q k − 2 ⋅ Q k −1 .
(4.10)
~ Se notează cu Q Tk produsul de matrice k
∏Qj . j= 0
k
∏ Q Tk −1− j , j= 0
~ iar cu Q k produsul
~ ~ Relaţia (4.10) devine: A k = Q Tk ⋅ A ⋅ Q k . Pentru k → ∞ se obţine
~ ~ ~ ~ Q Tk → Q T şi Q k → Q , iar matricea A k va tinde la matricea S, care este forma canonică Schur a matricei A. Algoritmul original QR, descris de relaţiile (4.8), este în general consumator de timp. De aceea se foloseşte o formă optimizată a algoritmului QR cu deplasare explicită, pentru calculul valorilor şi vectorilor proprii. Algoritmul optimizat cuprinde două faze, decsrise principial în continuare, iar în detaliu în subcapitolul următor. Faza I-a este o etapă pregătitoare, de obţinere a formei superior Hessenberg a matricei A, printr-un şir de transformări ortogonale de asemănare. Se notează cu H forma superior Hessenberg a matricei A. Matricele A şi H sunt ortogonal asemenea. Matricea H are structura prezentată în Figura 4.1.
A=
H=
0 c1 c2 ck
cn-2
Fig. 4.1. Forma implementabilă a algoritmului QR pentru obţinerea formei canonice Schur: faza I-a Aşadar, matricea H are elementele h ij = 0, j = 1,..., n − 2, i = j + 2,..., n . Faza I-a implică o procedură directă ce se desfăşoară în n − 2 iteraţii. Faza a II-a implică o procedură iterativă cu un număr finit, dar necunoscut de paşi. Plecând de la forma superior Hessenberg a matricei A, se construieşte un şir de matrice ortogonal asemenea, convergent către forma canonică Schur S. Astfel, se urmăreşte zerorizarea unor elemente aflate pe sub-diagonala principală a matricei H atfel încât, în final, să se obţină forma canonică Schur. Figura 4.2 prezintă principial rezultatul urmărit.
118
4.
Calculul valorilor şi vectorilor proprii
s11 H=
S=
0
sii
0 0
0
smm
Fig. 4.2. Forma implementabilă a algoritmului QR pentru obţinerea formei canonice Schur – faza a II-a Aplicând în această fază algoritmul QR cu deplasare explicită, plecând de la matricea superior Hessenberg, se poate demonstra că se obţine un şir de matrice aflate tot în forma superior Hessenberg. Altfel spus, forma superior Hessenberg este invariantă la algoritmul QR. Astfel, dacă matricea H k are pe diagonală structura generală de forma:
h [iik ] h [i +k1] .i
h [i ,ki +] 1 h [i +k1],i +1
, h [i +k1],i ≠ 0 ,
atunci, în urma aplicării algoritmului QR cu deplasare explicită, şi matricea H k +1 va avea elementul din poziţia (i + 1, i) tot nenul. Dacă, însă, blocul pus în evidenţă va conduce la două blocuri de ordinul întâi, pentru k → ∞ se obţine următoarea structură:
h ii∞ 0
0 h i∞+1,i +1
→∞ , h [i +k1],i ⎯k⎯ ⎯→ 0 .
Ca urmare, algoritmul QR conduce la rezultatul: | h [i +k1+,1i ] |≤| h [i +k1],i | . În cazul blocurilor de ordinul întâi, inegalitatea anterioară este strictă, iar pentru blocurile de ordin doi, după un anumit număr de iteraţii, inegalitatea se transformă în egalitate. Ca urmare, pentru detecţia blocurilor de ordin întâi, se aplică următorul test: dacă | h [i +k1+,1i ] |≤ ε ⋅ (| h [iik +1] | + | h [i +k1+,1i +] 1 |) atunci ⎡ atribuie h [i +k1+,1i ] ← 0 ⎣
4.4
Forma implementabilă a algoritmului QR cu deplasare explicită
119
Astfel, se vor corecta eventualele erori datorate calculului în virgulă mobilă. Observaţie: Dacă se aplică direct algoritmul QR asupra matricei iniţiale A, atunci fiecare iteraţie necesită un număr de operaţii în virgulă mobilă de ordinul lui n 3 . Dacă, însă, algoritmul QR se aplică formei superior Hessenberg, atunci la fiecare pas QR numărul de operaţii în virgulă mobilă este de ordinul lui n 2 .
4.4
Forma implementabilă deplasare explicită
a
algoritmului
QR
cu
După cum s-a arătat în cadrul subcapitolului 4.3, forma implementabilă a algoritmului QR cuprinde două faze detaliate în continuare. Faza I-a este o fază preliminară, care implică o procedură directă de aducere a matricei A ∈ ℜ n×n la forma superior Hessenberg, notată cu H. În cadrul acestei proceduri se folosesc reflectori Householder în scopul anulării, coloană cu coloană, a elementelor matricei A situate sub sub-diagonala principală. Algoritmul care descrie această fază este următorul: atribuie A 1 ← A pentru k = 1, n − 2 execută ⎡ * determinare reflector Householder U k +1 astfel încât: ( U k +1 ⋅ A k ) i,k = 0, i = k + 2,..., n ⎢ ⎢ atribuie A 'k +1 ← U k +1 ⋅ A k ⎢ atribuie A k +1 ← A 'k +1 ⋅ U Tk +1 = A 'k +1 ⋅ U k +1 ⎣ atribuie H ← A n −1
În final, se obţine matricea H care reprezintă forma superior Hessenberg a matricei A. Matricea H, astfel obţinută, are nule elementele: h i , j = 0, j = 1,..., n − 2, i = j + 2,..., n . Reflectorii Householder de ordin n şi indice k + 1 , U k +1 , k = 1,..., n − 2 , sunt matrice ortogonale şi simetrice care se sintetizează cu ajutorul relaţiei: T
U k +1 = I n − ( u k +1 ⋅ u k +1 / β k +1 ) ,
în care u k +1 = [0 … 0 u k +1,k +1 … u n , k +1 ] T şi este complet definit de relaţiile:
120
4.
Calculul valorilor şi vectorilor proprii
σ k +1 = sign (a [kk+]1, k ) ⋅
u i ,k =
a [i ,kk] ,
n
∑ (a [i,kk] ) 2 ,
i = k +1
u k +1, k +1 = a [kk+]1,k + σ k +1 ,
i = k + 2,..., n, β k +1 = σ k +1 ⋅ u k +1,k +1 .
Multiplicarea la dreapta cu matricea U Tk +1 = U k +1 se efectuează pentru ca matricea obţinută, A k +1 , să aibă aceleaşi valori proprii ca şi matricea A k . Astfel, mergând din aproape în aproape, matricea A k +1 va avea aceleaşi valori proprii ca şi matricea iniţială, A 1 = A, matricele {A k } k ≥1 fiind ortogonal asemenea. În sinteză, tabloul transformărilor este: U n −1 ⋅ … ⋅ U 2 ⋅ A ⋅ U 2 ⋅ … ⋅ U n = H .
Notând cu U = U n −1 ⋅ … ⋅ U 2 şi cu U T = U 2 ⋅ … ⋅ U n , rezultă: H = U ⋅ A ⋅ UT .
Această procedură necesită exact n − 2 iteraţii. Faza a II-a constă într-o procedură iterativă, de construcţie a unui şir de matrice ortogonal asemenea, convergent către forma canonică Schur, pornind de la matricea H obţinută la finalul primei faze. În cadrul acestei faze de lucru, se aplică algoritmul QR cu deplasare explicită într-o formă optimizată, după cum se prezintă în continuare. Se pleacă de la forma superior Hessenberg a matricei A obţinută în faza I-a şi, printr-un şir de transformări ortogonale de asemănare, se urmăreşte obţinerea formei canonice Schur a matricei A. Scopul este de a anula o parte din elementele de pe sub-diagonala principală a matricei H astfel încât, în final, matricea S (forma canonică Schur) să conţină pe diagonala principală blocuri de ordin maxim doi. Blocurile diagonale de ordin doi, dacă există, trebuie să aibă valori proprii complex conjugate. Algoritmul QR cu deplasare explicită, în forma sa originală, parcurge următoarele etape: 1. determinare deplasare μ ; 2. atribuire H ← H − μ ⋅ I n ; 3. descompunere H = Q ⋅ R , în care R este o matrice superior
4. 5.
triunghiulară, iar Q este o matrice ortogonală; atribuire H ← R ⋅ Q ; refacere deplasare H ← H + μ ⋅ I n ;
6. 7.
corecţie matrice H (efectuare test de decuplare); atribuire S ← H şi efectuare teste reluare algoritm QR (de la etapa 1).
4.4
Forma implementabilă a algoritmului QR cu deplasare explicită
121
Etapele de la 1 la 6 implementează un pas QR cu deplasare explicită şi comportă n − 1 iteraţii în etapa 2, de realizare a descompunerii QR a matricei H. În continuare se detaliază aceste etape. La nivelul etapei 1 se determină deplasarea μ . Se poate demonstra că viteza de convergenţă cea mai mare se obţine pentru o alegere a deplăsării de tipul: μ = h n ,n (ultimul element de pe diagonala principală a matricei H). La nivelul etapei 2, deplasarea se scade de pe diagonala principală a matricei H, lucrându-se în continuare (etapele 3 şi 4) cu această nouă matrice. Etapa 3 se referă la descompunerea QR a matricei H obţinută la etapa 2. Descompunerea se poate realiza aplicând reflectori Householder: U n −1 ⋅ … ⋅ U k ⋅ … ⋅ U 1 ⋅ H = R , unde R este o matrice superior triunghiulară. Notând cu Q T produsul de matrice U n −1 ⋅ … ⋅ U k ⋅ … ⋅ U 1 , se obţine: H = Q ⋅ R . Matricele U k , k = 1,..., n − 1 sunt reflectori Householder de ordin n şi indice k, ele zerorizând elementele de pe prima sub-diagonală a matricei H:
( U k ⋅ H) k +1,k = 0 . Dacă se aplică definiţia reflectorului Householder, atunci se obţine pentru acesta următoarea formă: I k −1 ⎡ ⎢ ⎢ ⎢ 01×( k −1) Uk = ⎢ ⎢ 01×( k −1) ⎢ ⎢ ⎢⎣0 ( n − k −1)×( k −1)
0 ( k −1)×1
0 ( k −1)×1
α
δ
δ
−α
0 ( n − k −1)×1
0 ( n − k −1)×1
0 ( k −1)×( n − k −1) ⎤ ⎥ ⎥ 01×( n − k −1) ⎥ ⎥, 01×( n − k −1) ⎥ ⎥ ⎥ I n − k −1 ⎥⎦
unde: α = − h k ,k / σ k , δ = − h k +1,k / σ k , σ k = sign ( h k , k ) ⋅ h 2k ,k + h 2k +1,k .
O procedură mai eficientă este de a folosi alte matrice ortogonale de transformare şi anume matricele de rotaţie plană Givens. Pentru a înţelege principiul modului de lucru al acestora din urmă, se consideră planul (k + 1, k ) ca în Figura 4.3. Astfel, se roteşte sistemul de axe cu unghiul θ , astfel ca punctul de coordonate (h k ,k , h k +1,k ) să aibă coordonatele ( rk , 0) în noul sistem de axe, unde rk = h 2k ,k + h 2k +1, k . Aceasta corespunde situaţiei în care vectorului [ h k ,k
h k +1,k ] T i se aplică o matrice de rotaţie R, de forma:
122
4.
Calculul valorilor şi vectorilor proprii
⎡ ck R =⎢ ⎣− d k obţinându-se:
dk ⎤ h k ,k h k +1,k cu c k = cos (θ) = , d k = sin (θ) = , ⎥ ck ⎦ rk rk ⎡ h k ,k ⎤ ⎡rk ⎤ R ⋅⎢ ⎥ = ⎢ ⎥. ⎣h k +1,k ⎦ ⎣ 0 ⎦ planul (k, k+1) k+1 (k)r
(k+1)r hk+1,k
(rk, 0)
θ
k hk,k
Fig. 4.3. Principiul rotaţiei plane Matricea de rotaţie Givens este, în acest caz: I k −1 ⎡ ⎢ ⎢ Pk = ⎢ 0 2×( k −1 ) ⎢ ⎢ ⎢0( n − k −1 ) ×( k −1 ) ⎣
0( k −1 ) ×2 R 0( n − k −1 ) ×2
0( k −1 ) ×( n − k −1 ) ⎤ ⎥ ⎥ 0 2×( n − k −1 ) ⎥ ⎥ ⎥ ⎥ I n − k −1 ⎦
.
n×n
Ţinând cont de faptul că c 2k + d 2k = 1 , se poate arăta că: I k −1 ⎡ ⎢ ⎢ Pk ⋅ PkT = ⎢ 0 2×( k −1 ) ⎢ ⎢ ⎢0( n − k −1 ) ×( k −1 ) ⎣ ⎡c 2k + d 2k unde Q = ⎢ ⎣ 0
0( k −1 ) ×2 Q 0( n − k −1 ) ×2
0( k −1 ) ×( n − k −1 ) ⎤ ⎥ ⎥ 0 2×( n − k −1 ) ⎥ ⎥ ⎥ I n − k −1 ⎥⎦
⎤ ⎡1 0 ⎤ T =⎢ ⎥ , deci Pk ⋅ Pk = I n . 2 2⎥ 0 1 ck + dk ⎦ ⎣ ⎦ 0
,
n×n
4.4
Forma implementabilă a algoritmului QR cu deplasare explicită
123
Matricea de rotaţie plană Givens este ortogonală, însă nu este simetrică. Numărul de operaţii pentru sinteza matricei Pk este redus în comparaţie cu volumul de calcul necesar sintezei unui reflector Householder. În concluzie, la etapa 3, asupra matricei H se aplică rotaţiile plane Givens, obţinând: Pn −1 ⋅… ⋅ P1 ⋅ H = R , în care se notează Q T = Pn −1 ⋅…⋅ P1 , Q fiind o matrice ortogonală. Matricea R este o matrice superior triunghiulară. La etapa 4, matricei R i se aplică, la dreapta, matricea Q definită mai sus, iar rezultatul obţinut se atribuie matricei H: H = R ⋅ P1T ⋅…⋅ PnT−1 . La etapa 5 se adună deplasarea μ la elementele de pe diagonala prinicipală, pentru a păstra nemodificate valorile proprii. Altfel spus, are loc refacerea deplasării pe diagonala principală. La etapa 6 se aplică un test de decuplare. Aplicarea acestuia este justificată de faptul că , în general, forma superior Hessenberg este invariantă la lagoritmul QR, după cum s-a menţionat principial în subcapitolul anterior. În continuare se detaliază acest aspect. Matricea Pk , aplicată la stânga, acţionează efectiv asupra blocului determinat de liniile şi, respectiv, coloanele k şi k + 1 din matricea H:
h k ,k h k +1,k
h k , k +1 h k +1, k +1
, k = 1,..., n − 1
conducând la:
h 'k ,k 0
h 'k ,k +1 h 'k +1,k +1
.
Când se aplică matricea PkT , la dreapta rezultatului Pk ⋅ H , blocul anterior devine:
h "k ,k h "k +1, k
h "k ,k +1 h "k +1,k +1
şi, în general, | h k +1,k |≥| h "k +1,k | . Inegalitatea este strictă dacă elementului din poziţia (k + 1, k ) îi corespunde un zerou în forma canonică Schur. Acest zerou pune în evidenţă blocurile de ordin maxim doi de pe diagonala matricei S sau, altfel spus, decuplează blocurile formei canonice Schur, în forma superior
124
4.
Calculul valorilor şi vectorilor proprii
Hessenberg. Pentru a compensa eventualele erori de rotunjire, se aplică următorul test pentru decuplare: dacă | h "k +1,k |< ε ⋅ (| h "k , k | + | h "k +1,k +1 |) atunci ⎡ atribuie h "k +1,k ← 0 ⎣ Parametrul ε caracterizează precizia dorită a calculelor. La etapa 7 se aplică testele care condiţionează reluarea sau nu a algoritmului QR. Testele realizate în această etapă au ca punct de plecare structura formei canonice Schur prezentată în Figura 4.4.
Mi 0
sii 0
0
sii
si,i+1
si+1,i
si+1,i+1 0
(a)
(b)
Fig. 4.4. Structura formei canonice Schur; (a) bloc de ordinul I; (b) bloc de ordinul II Analizând structura formei canonice Schur, se desprind următoarele concluzii: • nu există pe sub-diagonala formei canonice Schur două elemente consecutive nenule; • dacă există blocuri de ordinul doi pe diagonala matricei S, atunci acestea trebuie să aibă, la rândul lor, valori proprii complex conjugate. Astfel, testele care se realizează la această etapă sunt: dacă ∃i ∈{1, 2, ..., n − 2} pentru care s i +1,i ≠ 0 şi s i + 2,i +1 ≠ 0 atunci (T1) ⎡ ⎣
(T2) |
matricea S nu este în forma canonică Schur (reluare de la etapa 1) dacă ∃/ i care să satisfacă (T1), dar ∃i ∈ {1, 2, ..., n − 1} pentru care ⎡ s i ,i blocul M i = ⎢ ⎣s i +1,i
s i ,i +1 ⎤ are valori proprii reale atunci s i +1,i +1 ⎥⎦
4.5
Calculul valorilor şi vectorilor proprii
125
| matricea S nu este în forma canonică Schur (reluare de la etapa 1) ⎣ Dacă aceste teste sunt satisfăcute (cel puţin unul din ele), atunci algoritmul se reia de la etapa 1. Tabloul general al transformărilor din faza a doua a algoritmului QR este: S = [ Pn[ s−]1 ⋅ … ⋅ P1[ s ] ] ⋅ … ⋅ [ Pn[1−]1 ⋅ … ⋅ P1[1] ] ⋅ H ⋅ [( P1[1] ) T ⋅ … ⋅ ( Pn[1−]1 ) T ] ⋅ … ⋅ , ⋅ [( P1[ s ] ) T ⋅ … ⋅ ( Pn[ s−]1 ) T ] unde [s] este indexul iteraţiei la care se obţine forma canonică Schur, cu precizia impusă ε . Notând cu P produsul matricelor care înmulţesc la stânga matricea H şi cu P T produsul de matrice caree înmulţesc la dreapta matricea H, se obţine: P ⋅ H ⋅ PT = S . În urma aplicării ambelor faze ale formei implementabile a algoritmului QR asupra matricei A, rezultă: P ⋅ U ⋅ A ⋅ U T ⋅ P T = S . Se notează în continuare ~ QT = P ⋅ U . ~ ~ ~ Atunci, relaţia anterioară devine: S = Q T ⋅ A ⋅ Q , unde Q = U T ⋅ P T se numeşte matrice generală de transformare. Această matrice acumulează toate transformările ortogonale care se aplică matricei A, în vederea obţinerii formei canonice Schur. În general, se afirmă că forma implementabilă a algoritmului QR este o procedură stabilă numeric, iar forma canonică Schur calculată pentru o matrice A, notată prin Sˆ , coincide cu forma canonică Schur exactă, S, a ˆ =A+E: matricei A uşor perturbată, A Sˆ ≡ S A + E , || E || α <<|| A || α .
4.5
Calculul valorilor şi vectorilor proprii
Calculul valorilor proprii se realizează prin inspecţia blocurilor diagonale ale formei canonice Schur, conţinută în matricea rezultată S (a se revedea Figura 4.4). Astfel: • dacă s i +1,i = 0 , atunci pe diagonala principală a formei canonice Schur este un bloc de ordinul întâi, care coincide cu o valoare proprie a sa:: λ i = s i ,i ; •
dacă s i +1,i ≠ 0 , atunci este un bloc de ordin doi, M i , şi rezolvând ecuaţia: det( λ ⋅ I 2 − M i ) = 0 ,
126
4.
Calculul valorilor şi vectorilor proprii
vor rezulta valorile proprii complex conjugate λ i , λ i+1 . Astfel, dacă s i ,i +1 ⎤ ⎡ s i ,i blocul de ordinul doi are forma generală M i = ⎢ ⎥ , valorile ⎣s i +1,i s i +1,i +1 ⎦ proprii complex conjugate rezultă în urma rezolvării ecuaţiei algebrice de gradul al II-lea: λ 2 −(s i ,i + s i +1,i +1 ) ⋅ λ + (s i ,i ⋅ s i +1,i +1 − s i +1,i ⋅ s i ,i +1 ) = 0. Inspecţia formei canonice Schur se realizează asupra elementelor aflate pe prima sub-diagonală a matricei S, pentru i = 1,..., n − 1 . Având calculate valorile proprii, vectorii proprii ai matricei S se pot calcula cu relaţia: S ⋅ r i = λ i ⋅ r i , i = 1,..., n , unde r i este vectorul propriu al matricei S corespunzător valorii proprii λ i . Atunci:
~ x i = Q ⋅ r i , i = 1,..., n ,
unde x i este vectorul propriu al matricei A corespunzător valorii proprii λ i , iar ~ Q este matricea ortogonală generală de aducere a matricei iniţiale A la forma canonică Schur. Se realizează, în cele ce urmează, notaţiile: X = [x 1 … x i
… x n ] ; R = [r 1 … r i
şi atunci se poate scrie că:
… rn ] ,
~ X =Q⋅R,
relaţie care se numeşte factorizare cvasi-QR a matricei vectorilor proprii X, vectori corespunzători matricei A. R este o matrice cvasi-superior triunghiulară. În practică, însă, se folosesc cu succes drept vectori proprii ai matricei A, ~ vectorii Schur ai săi, anume vectorii coloană ai matricei Q : ~ Q = [~ q … ~ q … ~ q ]. 1
i
n
Vectorii ~ q i , i = 1,..., n au proprietatea că sunt ortogonali şi, în plus,
|| ~ q i || 22 = 1, i = 1,..., n , deci sunt vectori ortonormali.
Dacă λ i = s ii ∈ ℜ ( s i +1,i = 0 ), atunci vectorului propriu corespunzător, x i , i ~ se asociază coloana i a matricei Q , care este de fapt vectorul Schur asociat valorii proprii λ i . Dacă λ i , λ i +1 ∈ C ( s i +1,i ≠ 0 ), atunci vectorilor proprii x i , x i +1 corespunzători acestor valori proprii (complex conjugate), li se asociază vectorii
4.5
Calculul valorilor şi vectorilor proprii
127
complex conjugaţi ~ qi + j⋅ ~ q i +1 , respectiv ~ qi − j⋅ ~ q i +1 , unde j 2 = −1 , iar ~ ~ qi, ~ q i +1 sunt coloanele matricei Q din poziţiile i şi i + 1 .
Capitolul 5 DESCOMPUNEREA VALORILOR SINGULARE
5.1
Formularea problemei
Se consideră o matrice A ∈ ℜ m×n şi fie p = min{m, n} . Se notează cu r rangul matricei A. Acesta satisface la relaţia: r ≤ p . Dacă r < p , se spune că matricea este deficientă de rang, iar dacă r = p , atunci se spune că matricea este de rang complet. Teoremă: ~ Oricare ar fi matricea A ∈ ℜ m×n , există două matrice ortogonale U ∈ ℜ m×m ~ şi V ∈ ℜ n×n , astfel încât: ~ ~ ~ ~ (5.1) U T ⋅ A ⋅ V = Σ sau A = U ⋅ Σ ⋅ V T ,
unde Σ ∈ ℜ m×n este o matrice pseudo-diagonală, elementele nenule ale acesteia satisfăcând relaţia:
Σ = diag{σ1 , … , σ p }, σ1 ≥ σ 2 ≥ … ≥ σ p ≥ 0 .
(5.2)
Definiţie: Numerele σ1 , … , σ p ∈ ℜ + (relaţiile (5.1) şi (5.2)) se numesc valori singulare ale matricei A. Matricea Σ ∈ ℜ m×n (relaţia (5.1)) se numeşte forma canonică pseudodiagonală a matricei A. A doua expresie din (5.1) se numeşte descompunerea valorilor singulare a matricei A..
Demonstraţia teoremei constituie însuşi algoritmul de descompunere a valorilor singulare care va fi prezentat într-un subcapitol următor. Teorema arată că orice matrice este ortogonal echivalentă bilateral cu o matrice pseudodiagonală. Detaliind structura matricei Σ ∈ ℜ m×n , pot apare următoarele situaţii: a.)
m ≥ n şi rang(A) = r = p = n . În acest caz, matricea Σ are structura:
138
5.
Descompunerea valorilor singulare
⎡ Σ1 ⎤ ⎢ ⎥ Σ=⎢ ⎥, Σ 1 = diag{σ1 , … , σ n } , ⎢0 ( m − n )×n ⎥ ⎣ ⎦ iar dacă rang( A ) = r < p , atunci matricea Σ are forma: ⎡ Σ1 ⎢ Σ=⎢ ⎢0 ( m − r )×r ⎣ b.)
0 r ×( n − r ) ⎤ ⎥ r× r ⎥, Σ 1 ∈ ℜ , Σ1 = diag{σ1 , … , σ r } ; 0 ( m − r )×( n − r ) ⎥⎦
m < n şi rang(A) = r = p = m . În acest caz, matricea Σ are structura:
Σ = [Σ 1
0 m×( n − m ) ], Σ 1 = diag{σ1 , … , σ m } ,
iar dacă rang( A ) = r < p , atunci matricea Σ are forma: ⎡ Σ1 ⎢ Σ=⎢ ⎢0 ( m − r )×r ⎣
0 r ×( n − r ) ⎤ ⎥ r× r ⎥, Σ 1 ∈ ℜ , Σ1 = diag{σ1 , … , σ r } . 0 ( m − r )×( n − r ) ⎥⎦
În general, valorile singulare pot fi dispuse în ordine descrescătoare pe diagonala principală a formei canonice pseudodiagonale, satisfăcând relaţia: σ1 ≥ σ 2 ≥ … ≥ σ r > 0, σ r +1 = … = σ p = 0 . Din cele prezentate, rezultă că rangul matricei A este egal cu rangul matricei Σ ∈ ℜ m×n , care este egal cu r. Altfel spus, rangul acestor matrice este egal cu numărul valorilor singulare nenule. Relaţia (5.1) se poate scrie şi sub forma: ~ ~ (5.3) A⋅V = U⋅Σ. ~ v i vectorii coloană ai matricei V şi cu ~ u i vectorii coloană ai Notând cu ~ ~ matricei U , atunci relaţia (5.3) se mai poate scrie sub forma: T T A⋅~ v i = σi ⋅ ~ ui ⇔ ~ u i ⋅ A = σi ⋅ ~ v i , i = 1,..., p .
Definiţie: ~ Coloanele matricei V se numesc vectori singulari la dreapta ai matricei A, ~ iar coloanele matricei U se numesc vectori singulari la stânga ai matricei A.
În cele ce urmează se enunţă o serie de proprietăţi ale valorilor singulare: P1. valorile singulare ale matricei A sunt egale cu rădăcina pătratică pozitivă a valorilor proprii ale matricei A T ⋅ A :
5.1
Formularea problemei
139
σ i (A) = + λ i ( A T ⋅ A) , i = 1,..., n ; P2.
dacă A ∈ ℜ n×n este o matrice simetrică şi pozitiv semidefinită, atunci valorile proprii ale matricei A sunt reale, pozitive, iar valorile singulare ale matricei A sunt egale cu valorile ei proprii: λ i ( A ) = σ i ( A ), i = 1,..., n . Vectorii proprii ai matricei A sunt, în acest caz, egali cu vectorii singulari la dreapta ai matricei A: x i ( A) = ~ v i (A), i = 1,..., n ;
P3.
descompunerea valorilor singulare are următoarea interpretare geometrică: valorile singulare ale unei matrice A sunt excat semiaxele unui hiperelipsoid definit de: E = {A ⋅ x , || x || 2 = 1} .
Exemplul 5.1:
Se consideră A ∈ ℜ 2×2 . Mulţimea punctelor aflate pe cercul de rază egală cu 1 (care reprezintă mulţimea vectorilor din ℜ 2×1 cu norma euclidiană egală cu 1) este transformat în mulţimea punctelor aflate pe o elipsă ale cărei semiaxe sunt egale cu valorile singulare ale operatorului matricial A, care realizează proiecţia (a se vedea Figura 5.1). Punctele de pe elipsă reprezintă mulţimea vectorilor din ℜ 2×1 descrişi de relaţia y = A ⋅ x, || x || 2 = 1 . y2
x2 y = A⋅x
σ1 σ2
x1
y1
||x||2 = 1
E = {A⋅x / ||x||2 = 1
Fig. 5.1. Interpretarea geometrică a valorilor singulare ale unei matrice P4.
~ scriind matricele U ~ U = [~ u1 … ~ ~ V = [v … 1
~ şi V sub forma: ~ ~ ur u r +1 … ~ ~v vr … r +1
~ ~ u m ] = [U1 ~ ~ v ] = [V n
atunci relaţia (5.1) mai poate fi scrisă sub forma:
1
~ U2 ] , ~ V2 ] ,
140
5.
Descompunerea valorilor singulare
~ ⎡ Σ1 0 r×( n − r ) ⎤ ⎡V1T ⎤ ~ ~ ~ ~ ⎢ ⎥ ⎢ ⎥ A = U ⋅ Σ ⋅ V T = [U1 U2 ]⋅ ⎢ ⎥⋅⎢ ⎥. ~ ⎢0 ( m − r )×r 0 ( m − r )×( n − r ) ⎥⎦ ⎢⎣V2T ⎥⎦ ⎣ Efectuând calculele, relaţia (5.4) devine: r ~ ~ T A = U 1 ⋅ Σ ⋅ V1T = ∑ σ i ⋅ ~ ui ⋅ ~ vi ;
(5.4)
i =1
P5.
~ primele r coloane ale matricei U , unde r = rang(A ) , formează o bază
ortogonală pentru subspaţiul imagine al matricei A:
Im(A) = {y / y = A ⋅ x , ∀x ∈ ℜ n×1 }, r
r
i =1
i =1
T y = A⋅x = ∑~ u i ⋅ (σ i ⋅ ~ v i ⋅ x) = ∑ α i ⋅ ~ ui
P6.
.
~ ultimele n − r coloane ale matricei V formează o bază ortogonală pentru subspaţiul nul al matricei A: N ( A ) = {x / A ⋅ x = 0 m , x ∈ ℜ n×1 } , ~ ~ ~ ~ ~ ~ A ⋅ V = U ⋅ Σ ⇒ A ⋅ [V1 V2 ] = [ U 1 U2 ]⋅ Σ . ~ ~ ~ A ⋅ V1 = U1 ⋅ Σ1 , A ⋅ V2 = 0 m×( n − r )
Din relaţiile scrise mai sus şi formele pe care le poate lua matricea Σ , ~ rezultă că ultimele n − r coloane ale matricei V pot constitui o bază pentru N(A) . Subspaţiul nul astfel determinat conţine doar vectorul 0 n numai dacă matricea A este de rang complet şi m > n .
5.2
Norma matricială euclidiană şi numărul de condiţie
Norma euclidiană a unei matrice A ∈ ℜ m×n este definită ca fiind:
⎧ || A ⋅ x || 2 ⎫ || A || 2 = max ⎨ ⎬, n ×1 x∈ℜ ⎩ || x || 2 ⎭ x ≠0 n
iar numărul de condiţie al matricei A, folosind norma euclidiană, este:
⎧ || A ⋅ x || 2 ⎫ ⎧ || A ⋅ x || 2 ⎫ k 2 (A) = max ⎨ ⎬ / min ⎨ ⎬. n ×1 n ×1 x∈ℜ ⎩ || x || 2 ⎭ x∈ℜ ⎩ || x || 2 ⎭ x ≠0 x ≠0 n
n
Ţinând cont de relaţia (5.1), norma euclidiană a vectorului A ⋅ x este:
5.2
Norma matricială euclidiană şi numărul de condiţie
~ ~ ~ ~ || A ⋅ x || 2 =|| U ⋅ Σ ⋅ V T ⋅ x || 2 =|| U ⋅ Σ ⋅ y || 2 =|| U ⋅ z || 2 ,
141
(5.5)
~ în care s-a notat cu y produsul V T ⋅ x şi cu z produsul Σ ⋅ y . Ţinând cont de ~ faptul că U este o matrice ortogonală, atunci relaţia (5.5) devine: ~ || A ⋅ x || 2 =|| U ⋅ z || 2 =|| z || 2 =|| Σ ⋅ y || 2 . (5.6) ~ Pe de altă parte, ţinând cont de faptul că V este o matrice ortogonală, norma euclidiană a vectorului x este egală cu: ~ || x || 2 =|| V T ⋅ x || 2 =|| y || 2 . (5.7)
Cum Σ = diag{σ1 , … , σ p } , atunci relaţia (5.6) devine:
|| A ⋅ x || 2 =|| Σ ⋅ y || 2 = σ12 ⋅ y12 + … + σ 2p ⋅ y 2p .
(5.8)
Ţinând cont de relaţia σ1 ≥ σ 2 ≥ … ≥ σ p ≥ 0 , se definesc mărimile: σ max = σ1 şi σ min = σ p . Ca urmare, minorând şi majorând expresia (5.8), se
obţine:
σ p ⋅ || y || 2 ≤ σ12 ⋅ y12 + … + σ 2p ⋅ y 2p ≤ σ1 ⋅ || y || 2 .
(5.9)
Folosind relaţiile (5.7) şi (5.9), precum şi relaţiile de definiţie pentru norma matricială euclidiană şi pentru numărul de condiţie al unei matrice, se obţin expresiile: x ≠ 0 n ⇒ || x || 2 ≠ 0 ⇒ σ min = σ p ≤|| A ⋅ x || 2 / || x || 2 ≤ σ1 = σ max , || A || 2 = σ1 = σ max şi k 2 (A ) = σ1 / σ p = σ max / σ min .
Ştiind că sunt îndeplinite relaţiile: k 2 (A) =|| A || 2 ⋅ || A −1 || 2 , || A || 2 = σ1 , k 2 (A) = σ1 / σ p , atunci se poate calcula norma euclidiană a matricei A −1 astfel: 1 1 . || A −1 || 2 = = σ p σ min Studiile efectuate au arătat că norma euclidiană matricială reprezintă cea mai mică valoare dintre toate normele matriciale uzuale. Pe de altă parte, abordările care calculează numărul de condiţie al unei matrice se bazează pe determinarea unui estimant al cantităţii || A −1 || 2 şi, astfel, şansa de eroare în estimarea numărului de condiţie este mai mare. Abordarea bazată pe descompunerea valorilor singulare furnizează, din acest punct de vedere, cel mai sigur rezultat referitor la numărul de condiţie al unei matrice, valorile σ max şi σ min rezultând direct din calculul numeric al descompunerii.
142
5.
Descompunerea valorilor singulare
În plus, dacă rang( A ) = r < p , unde p = min{m, n} , atunci σ p = 0 şi rezultă k 2 ( A ) = ∞ , ceea ce înseamnă că matricea A este o prost condiţionată
(deficientă de rang). Alt rezultat se referă la norma Forbenius a unei matrice A, definită ca fiind: || A || F =
m
n
∑ ∑ a ij2
.
i =1 j=1
~ ~ Matricele U şi V fiind matrice ortogonale, acestea păstrează norma Frobenius şi atunci: ~ ~ || A || F =|| U ⋅ A ⋅ V T || F = σ12 + … + σ 2p .
5.3
Algoritmul SVD
Algoritmul SVD (SVD este abrevierea consacrată din limba engleză de la “Singular Value Decomposition”; în traducere: descompunerea valorilor singulare) constă în construirea unui şir de matrice ortogonal echivalente bilateral, şir convergent către forma canonică pseudo-diagonală a unei matrice. Se consideră matricea A ∈ ℜ m×n . Algoritmul SVD se bazează pe faptul că: σ i (A) = + λ i (A T ⋅ A) , cum s-a prezentat în subcapitolul 5.1. Însă nu se calculează matricea A T ⋅ A şi apoi valorile ei proprii, deoarece procesul de calcul ar putea fi afectat de erori de rotunjire care să depăşească limite acceptabile, atât timp cât matricea A T ⋅ A este prost condiţionată, în general. Principiul de calcul este de a aplica “mascat”, anume direct asupra matricei A, algoritmul QR pentru obţinerea formei canonice Schur a matricei B = A T ⋅ A . Altfel spus, se aplică matricei iniţiale A, transformările corespunzătoare celor care s-ar aplica matricei B în cadrul algoritmului QR de aducere la forma canonică Schur. “Masca” este dată de corespondenţa: A ↔ B = A T ⋅ A, B = B T , B ∈ ℜ n × n . În cele ce urmează, fără a restrânge generalitatea, se face presupunerea că m > n . Algoritmul comportă două faze, după cum este descris în continuare. Faza I-a este una pregătitoare, de aducere a matricei A la forma superior bidiagonală, cum este prezentat principial în Figura 5.2.
5.3
Algoritmul SVD
143
L1 Lk Ln-2
A=
0 J=
0 c1
ck
cn
Fig. 5.2. Algoritmul descompunerii valorilor singulare: faza I-a În această fază, se folosesc reflectori Householder, atât pentru coloane cât şi pe linii. Reflectorii care acţionează pe coloane au rolul de a anula elementele situate sub diagonala principală a matricei A, iar cei care acţionează pe linii au rolul de a zeroriza elementele aflate deasupra primei supradiagonale: • U k ∈ ℜ m×m , k = 1,..., n sunt reflectori de ordin m şi indice k care acţionează pe coloane; • Vk +1 ∈ ℜ n×n , k = 1,..., n − 2 sunt reflectori de ordin n şi indice k + 1 care acţionează pe linii. Tabloul general al transformărilor aplicate matricei A este următorul : U n ⋅ … ⋅ U k ⋅ … ⋅ U 1 ⋅ A ⋅ V2 ⋅ … ⋅ Vk +1 ⋅ … ⋅ Vn −1 = J .
Facând următoarele notaţii: U = U n ⋅ … ⋅ U k ⋅ … ⋅ U 1 , V = V2 ⋅ … ⋅ Vk +1 ⋅ … ⋅ Vn −1 ,
se obţine: U⋅A⋅V = J.
(5.10)
Observaţie: Dacă s-ar fi aplicat algoritmul QR, de aducere la forma canonică Schur, asupra matricei B = A T ⋅ A , matrice care teoretic este simetrică, atunci după prima fază de lucru s-ar fi obţinut: U n −1 ⋅ … ⋅ U 2 ⋅ B ⋅ U 2 ⋅ … ⋅ U n −1 = H ,
unde H este forma superior Hessenberg corespunzătoare matricei B. În acest caz, matricea H rezultă o matrice tridiagonală, între ea şi matricea J obţinută la finalul primei faze a algoritmului SVD putând fi scrisă relaţia: H = JT ⋅ J .
144
5.
Descompunerea valorilor singulare
• Faza a II-a constă într-o procedură iterativă, de construcţie a unui şir de matrice ortogonal echivalente bilateral, convergent către forma canonică pseudo-diagonală a matricei A. În cadrul acestei faze, se urmăreşte zerorizarea elementelor de pe prima supradiagonală a formei superior bidiagonale J, obţinută la sfârşitul primei faze de lucru, aşa cum este prezentat principial în Figura 5.3.
0
0 Σ=
J=
0
0
0
Fig. 5.3. Algoritmul descompunerii valorilor singulare: faza a II-a Astfel, se regăsesc cele şapte etape de la algoritmul QR cu deplasare explicită, algoritm prezentat în cadrul capitolului 4, după cum urmează. Etapa 1 constă în determinarea deplasării μ . În cadrul algoritmului QR de aducere la forma canonică Schur, transformările ortogonale de asemănare s-ar fi aplicat, în cadrul fazei a doua, asupra matricei H, iar deplasarea s-ar fi ales de forma: μ = h n ,n . În cazul de faţă, H = J T ⋅ J şi atunci se alege: μ = h n , n = j 2n −1,n + j n2 , n , J = [ ji ,k ]1≤i ≤ m . 1≤ k ≤ n
În cadrul etapei 2, se scade deplasarea μ din elementele de pe diagonala principală a matricei J, cu scopul măririi vitezei de convergenţă a algoritmului: atribuie ji ,i ← ji,i − μ, i = 1,..., n . Etapele 3 şi 4 urmăresc zerorizarea elementelor supradiagonalei matricei J rezultate: ji ,i +1 = 0, i = 1,..., n − 1 . Pentru aceasta se folosesc matrice de rotaţie plană Givens, similar algoritmului QR pentru calculul formei canonice Schur. Principial, au loc transformările: j i ,i 0
ji,i +1 ji +1,i +1
⋅Pi ⎯J⎯→ ⎯
ji' ,i ' ji +1,i
0 ji' +1,i +1
i ⋅( J⋅Pi ) ⎯R⎯ ⎯ ⎯→
Matricea Pi este o matrice de rotaţie plană Givens de forma:
j"i,i 0
j"i,i +1 " ji +1,i +1
.
5.3
Algoritmul SVD
145
I i −1 ⎡ ⎢ ⎢ ⎢ 01×(i −1) Pi = ⎢ ⎢ 01×(i −1) ⎢ ⎢ ⎢⎣0 ( n −i −1)×(i −1)
0 (i −1)×1
0 (i −1)×1
ci
− di
di
ci
0 ( n −i −1)×1
0 ( n −i −1)×1
0 (i −1)×( n −i −1) ⎤ ⎥ ⎥ 01×( n −i −1) ⎥ ⎥ ∈ ℜ n×n , 01×( n −i −1) ⎥ ⎥ ⎥ I n −i −1 ⎥⎦
c i = jii / jii2 + ji2,i +1 , d i = ji ,i +1 / jii2 + ji2,i +1 .
Matricea R i este o matrice de rotaţie plană Givens de forma: I i −1 ⎡ ⎢ ⎢ ⎢ 01×(i −1) Ri = ⎢ ⎢ 01×(i −1) ⎢ ⎢ ⎢⎣0 ( m −i −1)×(i −1)
0 (i −1)×1
0 (i −1)×1
ai − bi
bi ai
0 ( m −i −1)×1
0 ( m −i −1)×1
0 (i −1)×( m −i −1) ⎤ ⎥ ⎥ 01×( m −i −1) ⎥ ⎥ ∈ ℜ m× m , 01×( m −i −1) ⎥ ⎥ ⎥ I m −i −1 ⎥⎦
a i = ji' ,i / ( jii' ) 2 + ( ji' ,i +1 ) 2 , b i = ji' ,i +1 / ( jii' ) 2 + ( ji' ,i +1 ) 2 .
În final se obţine | j"i ,i +1 |<| ji ,i +1 | . Aceasta înseamnă că, în urma transformărilor aplicate în cadrul unei iteraţii a alogoritmului, nu se zerorizează elementul de pe supradiagonală, dar se obţine o valoare mai mică în modul decât a fost anterior. Aceasta se obţine deoarece forma superior Hessenberg este invariantă la algoritmul QR de obţinere a formei canonice Schur. În cadrul etapei 5 se reface deplasarea μ pe diagonala principală a matricei J, pentru a nu altera forma canonică pseudo-diagonală: atribuie ji ,i ← ji,i + μ, i = 1,..., n . Etapa 6 constă în corecţia elementelor de pe supradiagonală. Aceste elemente se micşorează în modul după parcurgerea etapelor 2 şi 3 şi este posibil însă, datorită erorilor de rotunjire, ca ele să nu rezulte nule ci foarte mici în modul. Ca urmare, se aplică următorul test: dacă | j"i ,i +1 |< ε ⋅ (| j"i ,i | + | j"i +1,i +1 |) atunci ⎡ atribuie j"i ,i +1 ← 0 ⎣
146
5.
Descompunerea valorilor singulare
Parametrul ε caracterizează precizia descompunerii. În cadrul etapei 7 se realizează un test asupra matricei J pentru a vedea dacă aceasta este în forma canonică pseudo-diagonală: dacă ( ∃i ∈{1,..., n − 1} pentru care ji,i +1 ≠ 0 ) atunci ⎡ * J nu este în forma canonică pseudo-diagonală ⎢ * reluare de la Etapa 1 ⎢altfel ⎢ atribuie Σ ← J ⎢ * stop algoritm ⎣
Tabloul general al transformărilor efectuate în faza a II-a este: [R [nΣ−]1 ⋅ … ⋅ R 1[ Σ ] ] ⋅ … ⋅ [R [n1−] 1 ⋅ … ⋅ R 1[1] ] ⋅ J ⋅ [P1[1] ⋅ … ⋅ Pn[1−]1 ] ⋅ … ⋅ [P1[ Σ ] ⋅ … ⋅ Pn[ Σ−1] ] = Σ . În relaţia anterioară, [Σ] reprezintă numărul iteraţiei în care s-a obţinut forma canonică pseudo-diagonală, cu precizia ε . Notând cu R produsul de matrice care înmulţeşte la stânga matricea J şi cu P produsul de matrice care înmulţeşte la dreapta matricea J, se obţine: R ⋅ J ⋅ P = Σ . ~ ~ Cele două matrice, U şi V , se obţin multiplicând matricele de transformare care se aplică asupra matricei iniţiale A, în cele două faze ale algoritmului SVD: R ⋅U⋅A⋅V⋅P =Σ .
(5.11)
~ ~ Matricele U şi V sunt următoarele: ~ ~ U T = R ⋅ U şi V = V ⋅ P , şi atunci relaţia (5.11) se scrie: ~ ~ UT ⋅ A ⋅ V = Σ .
Ordonarea descrescătoare a elementelor de pe pseudo-diagonala matricei Σ se realizează prin permutări adecvate de linii şi coloane. Astfel, permutările de ~ coloane în matricea Σ vor determina permutări de coloane în matricea V . Permutările de linii în matricea Σ vor determina permutări de linii în matricea ~ ~ U T sau, altfel spus, permutări de coloane în matricea U .
5.4
Aplicaţii ale descompunerii valorilor singulare
Fie matricea A ∈ ℜ m×n şi fie q = min{m, n} , r = rang(A ) . Rezultatul algoritmului de descompunere a valorilor singulare (SVD) este aducerea matricei A la forma canonică pseudo-diagonală. În urma calculelor efectuate,
5.4
Aplicaţii ale descompunerii valorilor singulare
147
rezultă matricea Σˆ ca fiind un aproximant pentru forma canonică pseudodiagonală exactă Σ a matricei A: Σˆ ≅ Σ . Se demonstrează că, în urma aplicării algoritmului SVD, valorile singulare calculate σˆ i , i = 1,..., q şi valorile singulare exacte σ i , i = 1,..., q sunt în relaţia: | σˆ i − σ i |< τ ' . Mărimea τ ' reflectă erorile de reprezentare ale datelor iniţiale (matricea A), precum şi erorile de calcul în virgulă mobilă. Această mărime poate fi calculată ca o funcţie de dimensiunea matricei A şi de precizia ε m a maşinii. Studiile referitoare la precizia matricei calculate, Σˆ , au condus la concluzia că această matrice coincide cu forma canonică pseudo-diagonală exactă a ˆ =A+E: matricei A uşor perturbată, A Σˆ A ≡ Σ A + E , || E || 2 <<|| A || 2 .
Ca urmare, datorită transformărilor ortogonale folosite, valorile singulare obţinute sunt puţin sensibile la perturbaţii. Altfel spus, valorile singulare sunt bine condiţionate în raport cu perturbaţiile care afectează matricea A, anume erorile de reprezentare şi erorile datorate calculului în virgulă mobilă. Principalele aplicaţii ale descompunerii valorilor singulare sunt: a) calculul rangului unei matrice; b) rezolvarea sistemelor de ecuaţii algebrice liniare în sensul celor mai mici pătrate generalizate; c) rezolvarea sistemelor de ecuaţii algebrice liniare în sensul celor mai mici pătrate totale. Acestea vor fi prezentate în cele ce urmează. 5.4.1 Calculul rangului unei matrice
În urma aplicării algoritmului SVD asupra matricei A, se obţin valorile singulare ale acesteia: σˆ 1 ≥ σˆ 2 ≥ … ≥ σˆ q ≥ 0 . Definiţie: Se numeşte rang efectiv sau numeric, notat cu pˆ , al matricei A, acel index pentru care are loc relaţia de ordine: σˆ pˆ σˆ pˆ +1 , (5.12) ≥ τ' > σˆ 1 σˆ 1
ceea ce este echivalent cu:
148
5.
Descompunerea valorilor singulare
σˆ pˆ ≥ σˆ 1 ⋅ τ ' > σˆ pˆ +1 .
(5.13)
Bibliotecile performante de programe consideră mărimea τ ' ca fiind egală cu: τ ' = max{m, n} ⋅ ε m , unde ε m reprezintă precizia maşinii de calcul. Mărimea σˆ 1 ⋅ τ ' se notează cu τ . Rezultă, aşadar: τ = σˆ 1 ⋅ τ ' = max{m, n} ⋅ ε m ⋅ σˆ 1 .
Folosind relaţia (5.13), rezultă următoarea relaţie de ordine: σˆ 1 ≥ … ≥ σˆ pˆ ≥ τ > σˆ pˆ +1 ≥ … ≥ σˆ q ≥ 0 .
Ca urmare, se consideră indexul pˆ drept rang efectiv al matricei A, valorile σˆ i ≠ 0, i = 1,..., pˆ drept valori singulare nenule şi σˆ i = 0, i = pˆ + 1,..., q drept valori singulare nule. În acest fel, se corectează eventualele erori de reprezentare şi de calcul în virgulă mobilă. În consecinţă, norma euclidiană a matricei A este: || A || 2 = σˆ max = σˆ 1 , iar numărul de condiţie este: k 2 (A ) = σˆ max / σˆ min = σˆ 1 / σˆ q . Astfel, dacă pˆ = q , numărul de condiţie este finit, iar dacă pˆ < q , atunci numărul de condiţie este infinit. În acest din urmă caz, matricea A este o matrice prost condiţionată. Aplicaţie:
Se subliniază faptul că modalitatea prezentată pentru determinarea rangului unei matrice reprezintă singurul procedeu sigur şi eficient pentru calculul automat al acestei mărimi. Această problemă are o deosebită importanţă în analiza şi sinteza sistemelor automate, atunci când sunt investigate proprietăţile structurale de controlabilitate şi observabilitate, pentru procese dinamice descrise prin modele bazate pe sisteme de ecuaţii diferenţiale ordinare, cu condiţii iniţiale. Principial, aceste modele sunt introduse în capitolul 8 al acestei lucrări. Fără a intra în detalii care nu constituie obiectul cărţii de faţă, doar se menţionează această aplicaţie. Astfel, investigarea proprietăţilor structurale menţionate anterior necesită construirea unor matrice cu structură specială, urmată de către calculul rangului efectiv al acestora. În acest sens, se recomandă abordarea problemei propuse P5.9 aflată la finele acestui capitol.
5.4
Aplicaţii ale descompunerii valorilor singulare
149
5.4.2 Rezolvarea sistemelor de ecuaţii algebrice liniare în sensul celor mai mici pătrate generalizate
Fie sistemul de ecuaţii: A ⋅ x = b, A ∈ ℜ m×n , b ∈ ℜ m×1 , x ∈ ℜ n×1 ,
(5.14)
în care vectorul x trebuie determinat, cunoscând matricea sistemului A şi termenul liber b . Dacă A este o matrice de rang complet, atunci sistemul are o pseudosoluţie în sensul celor maii mici pătrate: soluţia este unică pentru m ≥ n şi există o infinitate de pseudosoluţii dacă m < n . Dacă A este o matrice deficientă de rang, atunci există o infinitate de * pseudosoluţii. Pentru m ≥ n se poate determina pseudosoluţia de bază x B apelându-se la triangularizarea ortogonală a matricei A şi pivotarea de coloane. Pentru cazul în care m < n , se pot alege p = rang( A) ecuaţii liniar independente, existând o infinitate de soluţii. Aceste aspecte au fost detaliate, corespunzător, în capitolul 3 al prezentei lucrări. Descompunerea valorilor singulare oferă posibilitatea determinării unei pseudosoluţii unice, în sensul celor mai mici pătrate (generalizate), indiferent * de rangul matricei A. Această pseusosoluţie se notează cu x SVD şi este caracterizată de următoarele proprietăţi: • minimizează norma euclidiană a reziduului: *
r = b − A ⋅ x ⇒ x = arg min {|| r || 22 } ; n×1 x∈ℜ
•
(5.15)
dacă există o infinitate de pseudosoluţii care satisfac (5.15), atunci se * alege x SVD ca fiind pseudosoluţia cu norma euclidiană minimă: *
*
|| x SVD || 2 = *minn×1{|| x || 2 } . x ∈ℜ
Aceasta se numeşte pseudosoluţie normală sau pseudosoluţie în sensul celor * * mai mici pătrate generalizate. Se demonstrează că || x SVD || 2 ≤ || x B || 2 . Teoremă: Oricare ar fi matricea A ∈ ℜ m×n şi vectorul b ∈ ℜ m×1 , problema (5.14) are o soluţie unică, aceasta fiind pseudosoluţia normală obţinută pe baza descompunerii valorilor singulare. * Această pseudosoluţie se scrie: x SVD = A + ⋅ b, A + ∈ ℜ n×m , unde A + se
numeşte pseudoinversă normală (Moore-Penrose) şi este egală cu:
150
5.
Descompunerea valorilor singulare
T p ~ v ⋅~ u ~ ~ A + = V1 ⋅ Σ1−1 ⋅ U 1T = ∑ i i . σi i =1
Ca urmare, pseudosoluţia este: T ⎛ p ~v i ⋅ ~ u i ⎞⎟ ⎜ ⋅b. = ∑ ⎜ i =1 σ i ⎟ ⎝ ⎠ Demonstraţia teoremei porneşte de la ecuaţia (5.14) care este înmulţită la ~ stânga cu matricea U T din descompunerea valorilor singulare a matricei A. În ~ ~ plus, se inserează produsul V ⋅ V T = I n , rezultând: * x SVD
~ ~ ~ ~ UT ⋅ A ⋅ V ⋅ VT ⋅ x = UT ⋅ b .
~ ~ Dar U T ⋅ A ⋅ V = Σ şi atunci ecuaţia (5.16) devine:
Σ⋅y=d, ~T ~T unde y = V ⋅ x şi d = U ⋅ b . Matricea Σ are forma generală: ⎡ Σ1 ⎢ Σ=⎢ ⎢0 ( m − p )×p ⎣
Scriind
vectorul
(5.16) (5.17)
0 p× ( n − p ) ⎤ ⎥ p× p ⎥, Σ1 ∈ ℜ , Σ1 = diag{σ1 , … , σ p } . 0 ( m − p )×( n − p ) ⎥⎦
⎡y ⎤ ⎢ 1⎥ ~ ~ y = ⎢ ⎥, y1 = V1T ⋅ x ∈ ℜ p×1 , y 2 = V2T ⋅ x ∈ ℜ ( n − p )×1 ⎢y ⎥ ⎣ 2⎦
şi
⎡ d1 ⎤ ~ ~ vectorul d = ⎢⎢ ⎥⎥, d 1 = U 1T ⋅ b ∈ ℜ p×1 , d 2 = U T2 ⋅ b ∈ ℜ ( m − p )×1 , atunci ecuaţia ⎢⎣d 2 ⎥⎦ (5.17) devine:
⎡ Σ1 ⎢ ⎢ ⎢0 ( m − p )×p ⎣
0 p×( n − p ) ⎤ ⎡ y1 ⎤ ⎡ d 1 ⎤ ⎡ Σ1 ⋅ y1 ⎤ ⎡ d 1 ⎤ ⎥ ⎢ ⎥ ⎥ ⎢ ⎥ ⎢ ⎥ ⎢ ( n − p )×1 . ⎥ = ⎢ ⎥, ∀ y 2 ∈ ℜ ⎥⋅⎢ ⎥=⎢ ⎥⇒⎢ 0 ( m − p )×( n − p ) ⎥⎦ ⎢⎣ y 2 ⎥⎦ ⎢⎣d 2 ⎥⎦ ⎢⎣0 ( m − p )×1 ⎥⎦ ⎢⎣d 2 ⎥⎦
Pseudosoluţia în sensul celor mai mici pătrate se obţine minimizând norma ~ euclidiană a reziduuluui. Astfel, ţinând cont de faptul că matricea U este ortogonală şi, în consecinţă, păstrează norma euclidiană vectorială, se obţine: ~ ~ ~ ~ ~ ~ || r || 22 =|| U T ⋅ r || 22 =|| U T ⋅ (b − A ⋅ x ) || 22 =|| U T ⋅ b − U T ⋅ A ⋅ V ⋅ V T ⋅ x || 22 =|| d − Σ ⋅ y || 22 =|| d 1 − Σ 1 ⋅ y1 || 22 + || d 2 || 22 .
5.4
Aplicaţii ale descompunerii valorilor singulare
151
În general d 2 ≠ 0 m − p , deci || d 2 || 22 ≠ 0 şi atunci singura minimizare posibilă este: *
*
|| d 1 − Σ1 ⋅ y1 || 22 = 0 ⇒ d 1 − Σ 1 ⋅ y1 = 0 p
*
⇒ Σ 1 ⋅ y1 = d 1 . ~ * Din ecuaţia (5.18) se obţine soluţia: y1 = Σ 1−1 ⋅ d 1 = Σ1−1 ⋅ U T ⋅ b .
(5.18)
Dar, conform notaţiilor făcute anterior, se obţine: ⎡ y* ⎤ ⎢ 1⎥ ~T ~ ~ * * V ⋅ x = y ⇒ x = V ⋅ y = V ⋅ ⎢ ⎥, ∀ y 2 ∈ ℜ ( n − p )×1 . ⎢y ⎥ ⎣ 2⎦ Aşadar, există o infinitate de pseudosoluţii care minimizează mărimea || r || 22 . *
Un criteriu de alegere a unei pseudosoluţii unice este acela ca || x || 22 = minim. ~ Ţinând cont că matricea V este ortogonală, se obţine: ~ * * * * || x || 22 =|| V T ⋅ x || 22 =|| y || 22 =|| y1 || 22 + || y 2 || 22 . ~ * În general, y1 = Σ1−1 ⋅ U T ⋅ b ≠ 0 p şi atunci singura minimizare posibilă este *
*
|| y 2 || 22 = 0 , adică y 2 = 0 n − p . Atunci pseudosoluţia normală este: ~T ⎡Σ1−1 ⋅ U ⎤ 1 ⋅b ⎥ ~ ~ * ~ ~ ⎢ * −1 ~ T x SVD = V ⋅ y SVD = [V1 V2 ] ⋅ ⎢ ⎥ = V1 ⋅ Σ1 ⋅ U 1 ⋅ b = ⎢ 0 ⎥ n −p ⎣ ⎦ T ⎛~ vi ⋅ ~ ui ⎜ =∑ ⎜ σi i =1 ⎝ p
⎞ ⎟ ⋅ b. ⎟ ⎠
Definiţie: Oricare ar fi matricea A ∈ ℜ m×n , matricea X ∈ ℜ n×m se numeşte pseudoinversă Moore-Penrose dacă satisface următoarele condiţii: (i) A⋅X⋅A =A ; (ii) X⋅A⋅X =X ; (iii) A ⋅ X este o matrice simetrică; (iv) X ⋅ A este o matrice simetrică.
Observaţii: 1. Dacă A este o matrice de rang complet şi m = n , atunci X = A −1 . 2. Dacă A este o matrice de rang complet şi m > n , atunci X = X L se numeşte pseudoinversă la stânga: X L ⋅ A = I n , X L = (A T ⋅ A) −1 ⋅ A T .
152
5.
Descompunerea valorilor singulare
3. Dacă A este o matrice de rang complet şi m < n , atunci X = X R se numeşte pseudoinversă la dreapta: A ⋅ X R = I m , X R = A T ⋅ ( A ⋅ A T ) −1 . 4. Dacă A este o matrice deficientă de rang, atunci X este pseudoinversa Moore-Penrose: T p ⎛~ v ⋅~ u ⎞ ~ ~ X = A + = V1 ⋅ Σ1−1 ⋅ U1T = ∑ ⎜ i i ⎟ . ⎜ σi ⎟ i =1 ⎝ ⎠ În acest ultim caz sunt îndeplinite condiţiile (ii) ÷ (iv) din definiţia anterioară, condiţia (i) devenind: || A ⋅ X ⋅ A − A || 2 ≤ τ ' , în care τ ' este mărimea care caracterizează calitatea descompunerii valorilor singulare, cum este prezentat în paragraful anterior. Pentru rezolvarea sistemelor de ecuaţii algebrice în sensul celor mai mici pătrate, se poate formula următoarea interpretare generală. Fie sistemul: A ⋅ x = b , în care matricea A este “matricea de date” şi b este “vectorul de observaţii”. Pseudosoluţia în sensul celor mai mici pătrate a acestui sistem se obţine minimizând norma euclidiană la pătrat a reziduului asociat: || r || 22 . Aceasta înseamnă că, de fapt, sistemul de ecuaţii exact care se rezolvă este: A ⋅ x + r = b . Notând e = r se obţine: A ⋅ x + e = b , unde vectorul e este numit eroare de ecuaţie, acest vector urmărindu-se a se minimiza în normă euclidiană. O astfel de abordare caracterizează clasa metodelor care găsesc soluţia x pe baza erorii de ecuaţie, metode care intervin în identificarea sistemelor dinamice (a se vedea Exemplul 3.1). Aşadar, se poate scrie: A ⋅ x = b − e . Notând Δ b = −e , atunci se obţine: A ⋅ x = b + Δ b . *
În concluzie, soluţia în sensul celor mai mici pătrate x CMMP se determină minimizând mărimea || Δ b || 22 . Aceasta reprezintă, de fapt, funcţia criteriu: J CMMP =|| Δ b || 22 . Altfel spus, matricea A şi termenul liber b conţin date achiziţionate în urma unor experimente. Soluţia în sensul celor mai mici pătrate se găseşte minimizând suma pătratelor perturbaţiilor (abaterilor) în vectorul observaţiilor b , considerând implicit că matricea de date A este exactă. Exemplul 5.2:
Se prezintă o ilustrare geometrică intuitivă pentru cazul n = 1 . Astfel, având setul de date (a i , b i ) i =1,...,m , se găseşte necunoscuta x astfel încât şirul de date să fie aproximat de către dreapta din plan: b = x ⋅ a . Pseudosoluţia găsită x *CMMP
5.4
Aplicaţii ale descompunerii valorilor singulare
153
defineşte, astfel, dreapta care aproximează în sensul celor mai mici pătrate setul de date experimentale (a i , b i ) i =1,...,m , aşa cum este arătat în Figura 5.4.
J CMMP = ∑ e i2 = min
b
i
e = Δb 2 i
2 i
(ai, bi)
~ b i + Δb i = b i
ei
~ bi
b = a⋅x tg (θ) = x = ?
θ
a ~ ai = a i
Fig. 5.4. Aproximarea în sensul CMMP: minimizarea sumei pătratelor abaterilor pe verticală Mai mult, se poate realiza o interpretare geometrică generalizată, aşa cum este ilustrat în Figura 5.5.
r
a2
*
Im(A) b
a1 b
*
A⋅x = b A = [a 1 a 2 ] *
*
b ∈ Im(A) ⇔ A ⋅ x = b
*
Fig. 5.5. Interpretare geometrică generalizată a aproximării în sensul CMMP
154
5.
Descompunerea valorilor singulare
Astfel, metoda celor mai mici pătrate conduce la o soluţie care verifică, în fapt, ecuaţia: * * A⋅x =b . (5.19) *
Metoda încearcă să găsească cea mai bună aproximaţie b a vectorului b , care *
să verifice ecuaţia (5.19). Aceasta se întâmplă dacă şi numai dacă b ∈ Im(A ) , *
b fiind proiecţia vectorului b pe subspaţiul imagine al matricei A. Concluzia finală care se desprinde este aceea că soluţia în sensul celor mai mici pătrate este găsită prin proiectarea termenului liber b pe subspaţiul imagine Im(A ) şi apoi se rezolvă sistemul compatibil (5.19). Aici, vectorul b este o combinaţie liniară de coloanele (liniar independente ale) matricei A.
*
Capitolul 6 ECUAŢII ŞI SISTEME DE ECUAŢII ALGEBRICE NELINIARE
6.1
Formularea problemei
Se consideră ecuaţia vectorială: f ( x ) = 0 n , f : D 1 → D 2 , D 1 , D 2 ⊆ ℜ n×1 (C n×1 ) ,
(6.1)
în care x = [ x 1 … x n ] T , f ( x ) = [f 1 ( x 1 ,..., x n ) … f n ( x 1 ,..., x n )] T .
Problema constă în determinarea uneia sau a mai multor soluţii ale ecuaţiei (6.1). Se notează cu α o astfel de soluţie: α = [α 1 … α n ] T , f (α ) = 0 n . Funcţiile f i ( x ), i = 1,..., n sunt, în general, o compunere de funcţii elementare în argumentele x i , i = 1,..., n , funcţii de tip polinomial, trigonometric sau transcendent (exponenţiale, logaritmi). În continuare, se foloseşte pentru acest tip de problemă, termenul de funcţie sau ecuaţie neliniară. Dacă n = 1, atunci relaţia (6.1) se reduce la o ecuaţie neliniară: f ( x ) = 0 , în care f este o funcţie scalară, neliniară. Dacă n ≥ 2 , atunci relaţia (6.1) reprezintă un sistem de ecuaţii neliniare. Un număr considerabil de modele matematice asociate fenomenelor fizice din lumea înconjurătoare se reduc, în anumite condiţii, la o ecuaţie neliniară de tipul (6.1). Exemplul 6.1:
Se consideră un sistem dinamic a cărui comportare este descrisă de modelul neliniar, continuu de timp: ⎧dx 1 ( t ) / dt = −b ⋅ x 1 ( t ) − x 2 ( t ) + (1 / Q) ⋅ u ( t ) = f 1 ( x 1 ( t ), x 2 ( t ), x 3 ( t ), u ( t )) ⎪ ⎨dx 2 ( t ) / dt = b ⋅ x 1 ( t ) − x 2 ( t ) − b ⋅ x 2 ( t ) − x 3 ( t ) = f 2 ( x 1 ( t ), x 2 ( t ), x 3 ( t ), u ( t )) , ⎪dx ( t ) / dt = b ⋅ x ( t ) − x ( t ) − b ⋅ x ( t ) − H = f ( x ( t ), x ( t ), x ( t ), u ( t )) 2 3 3 3 1 2 3 ⎩ 3
unde t , b, Q, H ∈ ℜ, t ≥ 0 fiind variabila timp. Se consideră u ( t ) drept mărime de intrare, cunoscută. Se consideră x 1 ( t ) , x 2 ( t ) şi x 3 ( t ) drept mărimi de ieşire, satisfăcând la relaţia de ordine: x 1 ( t ) > x 2 ( t ) > x 3 ( t ) . Acest model se
180
6.
Ecuaţii şi sisteme de ecuaţii neliniare
scrie sub formă vectorială: d x ( t ) / dt = f ( x ( t ), u ( t )), x ( t ) = [ x 1 ( t ) x 2 ( t ) x 3 ( t )] T .
(6.2)
Se consideră că la momentul t 0 = 0 sistemul este în stare iniţială:
x(t 0 ) = 0 3 .
(6.3)
Aplicându-se un semnal de tip treaptă la intrarea sistemului, u ( t ) = U = constant , t > 0 , după un anumit interval de timp, cele trei mărimi de ieşire au valori nemodificate, ceea ce înseamnă că s-a atins regimul staţionar de funcţionare. Ecuaţia diferenţială (6.2) cu condiţia iniţială (6.3) devine: f ( x s , U ) = 0 3 , x s = [ x 1,s
x 2 ,s
x 3, s ] T .
(6.4)
Pentru a determina punctul de echilibru x s , se rezolvă sistemul de ecuaţii neliniare de ordinul trei, (6.4), de tipul (6.1), în care componentele f i ( x ), i = 1, 2, 3 sunt obţinute din (6.2), unde se înlocuieşte u ( t ) cu mărimea constantă U. Metodele numerice pentru rezolvarea problemei (6.1) sunt, în general, metode iterative. Acestea pornesc de la un punct de start: [ 0] x = [ x 1[ 0 ] … x [n0 ] ]T , care se recomandă a fi într-o vecinătate a soluţiei α : Vα = {x ∈ D1 / || x − α || p ≤ h , h > 0} ⊂ D1 , unde || ⋅ || p reprezintă notaţia pentru o normă vectorială uzuală p. În continuare, se construieşte un şir de aproximaţii, convergent către soluţia adevărată a ecuaţiei: [k ] [k ] [k] {x }k ≥0 , lim x = α sau lim || x − α || p = 0 . k →∞
k →∞
Definiţie: Se numeşte formulă de iterare sau şir de iterare (de rang k şi ordin m) o relaţie de recurenţă de forma:
x
[k]
= g(k, x
[ k −1]
,x
[ k − 2]
,…, x
[ k −m]
), x
[ 0]
∈ Vα , 1 ≤ m ≤ k .
(6.5)
În general, funcţia g este neliniară. Aceasta depinde de funcţia f din ecuaţia (6.1), depinde în mod explicit de rangul k al termenilor din şir şi de m estimaţii anterioare ale soluţiei. Dacă funcţia g nu depinde în mod explicit de rangul k al termenilor din şir, atunci relaţia (6.5) se numeşte formulă de iterare staţionară de ordinul m. Uzuale sunt metodele iterative care folosesc formule staţionare de ordin m = 1 :
6.1
Formularea problemei
181
x
[k ]
= g( x
[ k −1]
).
(6.6)
Propoziţie: O metodă iterativă de tipul (6.6) se spune că este convergentă pe domeniul Vα , dacă oricare ar fi x , y ∈ Vα , există λ ∈ (0,1) astfel încât, într-o normă vectorială oarecare p, aplicaţia g îndeplineşte relaţia:
|| g( x ) − g( y) || p ≤ λ⋅ || x − y || p . Altfel spus, aplicaţia g este o contracţie pe domeniul Vα . Ca urmare, pentru rezolvarea problemei (6.1), trebuie determinate următoarele: o modalitate de alegere a funcţiei g , precum şi o modalitate de [ 0]
alegere a punctului de start x , astfel încât şirul de aproximaţii dat de relaţia (6.6) să fie convergent. Ca soluţie generală pentru acest tip de problemă, de regulă ecuaţia (6.1) se rescrie sub forma: x = g( x ) , în sensul că f (α ) = 0 ⇔ α = g (α) . Altfel spus, soluţia α este un punct fix pentru aplicaţia g . În general, modul de alegere a funcţiei g , convergenţa şirului de iterare (6.6), existenţa şi unicitatea soluţiei calculate sunt garantate, în anumite condiţii, de teorema de punct fix pentru funcţiile de tip contracţie. Convergenţa şi precizia soluţiei calculate în virgulă mobilă
În aritmetica virgulei mobilei trebuie să se reprezinte atât vectorul [k] aproximant x , cât şi valoarea funcţiei g în argumentul corespunzător. [k]
astfel:
[ k −1]
) = g( x
Aceasta face ca, de fapt, să se calculeze x
x unde e
[k]
[k]
= G(x
[ k −1]
), G ( x
[ k −1]
)+e
[k]
,
(6.7)
reprezintă eroarea de reprezentare în virgulă mobilă la iteraţia [k]. [ k −1]
Aceasta cuprinde eroarea comisă la reprezentarea aproximativă a lui x , erorile datorate evaluării aplicaţiei g , precum şi eroarea de reprezentare a rezultatului g( x
[ k −1]
) . Eroarea totală este în general necunoscută, cel mult
182
6.
Ecuaţii şi sisteme de ecuaţii neliniare
putându-se estima un majorant al ei: || e
[k ]
|| p < ε .
Convergenţa şirului (6.7) este greu de precizat, în general. Cel mult, în anumite condiţii, se va obţine o soluţie aproximativă a ecuaţiei (6.1), caracterizată de o anumită eroare impusă, deci conştientizată. Pentru a ilustra aceste concepte generale, în cele ce urmează se consideră n = 1 , cazul unei ecuaţii neliniare. În plus, se presupune că, pe un interval [a , b] , funcţia f este o funcţie de clasă C1[ a ,b ] (continuă şi derivabilă, cu derivată continuă) şi că pe acest interval funcţia f îşi schimbă semnul. Conform consecinţei teoremei lui Rolle, rezultă că există un număr α ∈ (a , b) astfel încât f (α) = 0 . La rezolvarea numerică a ecuaţiei neliniare f ( x ) = 0 , pot apare următoarele situaţii: a.)
Soluţia adevărată α nu aparţine mulţimii F, care reprezintă sistemul de numere în virgulă mobilă. În acest caz, α se află între două numere consecutive c1 , c 2 ∈ F . Astfel,
soluţia adevărată nu va fi niciodată găsită de către metoda numerică şi atunci ceea ce se poate realiza este găsirea unui interval [β δ] ⊂ [a b] , cât mai mic posibil, unde funcţia f îşi schimbă semnul. În practică, impunând o anumită precizie asupra soluţiei α , se spune că şirul iterativ (6.6) converge cu precizia ε x dacă la un index al iterării [s], este îndeplinită condiţia: | x s − x s −1 |≤ ε x ⇒ α = x s (ε x ) . b.)
Soluţia adevărată α aparţine mulţimii numerelor în virgulă mobilă F, dar datorită erorilor de calcul f (α) ≠ 0 . În această situaţie, se acceptă soluţia aproximativă x s , obţinută la iteraţia [s] cu eroarea ε f , dacă | f ( x s ) |≤ ε f .
De regulă, cele două criterii de stop se combină, parametrii ε x şi ε f alegându-se în funcţie de natura aplicaţiei şi/sau de ordinul de mărime al preciziei maşinii de calcul. În cazul rezolvării numerice a unui sistem de ecuaţii neliniare, se obţine următorul criteriu general de stop al metodei iterative: impunând ε x şi ε f , se [s ]
consideră drept soluţie a ecuaţiei (6.1), α = x , dacă este îndeplinită condiţia:
|| x
6.2
[s ]
−x
[ s −1]
[s ]
|| p ≤ ε x sau || f ( x ) || p ≤ ε f .
Rezolvarea ecuaţiilor algebrice neliniare
6.2
Rezolvarea ecuaţiilor algebrice neliniare
183
Se consideră ecuaţia algebrică neliniară: f (x ) = 0 .
(6.8)
Fie α o soluţie exactă a ecuaţiei (6.8) şi fie Vα o vecinătate a acesteia: Vα = {x / | x − α |≤ h , h > 0}, α, h ∈ ℜ . Se prezintă în cele ce urmează, câteva dintre cele mai reprezentative metode numerice de rezolvare a unei ecuaţii algebrice neliniare. 6.2.1 Metoda iterării
Ecuaţia (6.8) se rescrie, prin rearanjare convenabilă, sub forma: x = g( x ) .
(6.9)
Exemplul 6.2:
Se consideră ecuaţia: 3 ⋅ x + sin( x ) = e x . Rezultă: f ( x ) = 3 ⋅ x + sin( x ) − e x . Această funcţie este continuă şi derivabilă. În plus f (0) < 0 şi f (1) > 0 . Rezultă că în vecinătatea [0, 1] funcţia f se anulează. Ecuaţia 3 ⋅ x + sin( x ) = e x se poate rescrie sub una din formele: e x − sin( x ) e x − sin( x ) x= , deci g ( x ) = , 3 3 x = ln(3 ⋅ x + sin( x )) , deci g( x ) = ln(3 ⋅ x + sin( x )) . Revenind la cazul general, plecând de la o estimaţie iniţială x 0 ∈ Vα , se obţine un şir de aproximaţii ale soluţiei necunoscute α , astfel: x 1 = g ( x 0 ) , x 2 = g ( x 1 ) , ... sau, în general: x k +1 = g ( x k ), k = 0, 1, ...
(6.10)
în care x 0 ∈ Vα este cunoscut (precizat). Algoritmul care descrie metoda iterării pentru rezolvarea ecuaţiei neliniare (6.8) este următorul: * defineşte funcţiile f şi g citeşte ε x , ε f citeşte x 0 atribuie x n ← x 0 atribuie flag ← 1 cât timp ( flag = 1 ) execută ⎡ atribuie x v ← x n
184
6.
Ecuaţii şi sisteme de ecuaţii neliniare
⎢ atribuie x n ← g ( x v ) ⎢ dacă ( | x n − x v |≤ ε x ) sau ( | f ( x n ) |≤ ε f ) atunci ⎢ ⎡ atribuie flag ← 0 ⎢ ⎣ ⎣ scrie ‘soluţie x = ’, x n scrie ‘f(x) = ‘, f ( x n )
În funcţie de alegerea funcţiei g, acest algoritm poate avea viteze diferite de convergenţă sau, plecând de la un punct de start din vecinătatea unei soluţii, algoritmul poate fi convergent către o altă soluţie a ecuaţiei neliniare sau poate fi divergent. O modalitate de a determina o vecinătate a soluţiei este reprezentarea grafică a funcţiei y = f ( x ) , pentru diverse intervale în care argumentul x poate lua valori. În acest caz, vecinătatea unei soluţii a ecuaţiei neliniare (6.8) este reprezentată de un interval în care funcţia f îşi schimbă semnul (o singură dată). O altă modalitate de determinare a vecinătăţii unei soluţii se bazează pe reprezentarea grafică a funcţiilor y = x şi y = g( x ) în acelaşi sistem de coordonate. În acest caz, vecinătatea soluţiei este reprezentată de un interval în care x ia valori, în care există doar un punct de intersecţie între cele două grafice. Pentru a asigura convergenţa metodei iterării, este necesar un criteriu de alegere a funcţiei g, deci a formulei de iterare. Se enunţă următoarea condiţie suficientă de convergenţă. Propoziţie: Fie ecuaţia neliniară (6.8), rescrisă sub forma (6.9), care admite soluţia α . Fie Vα o vecinătate a soluţiei. Dacă oricare ar fi x ∈ Vα este îndeplinită condiţia:
| g ′( x ) |≤ c < 1 ,
(6.11)
atunci şirul {x k } k ≥0 , x 0 ∈ Vα , definit de (6.10), converge către soluţia α pentru k → ∞ .
Demonstraţia acestui rezultat cuprinde următoarele elemente. Pentru început, se utilizează teorema Lagrange a valorii medii a derivatei unei funcţii. Conform acesteia, există un punct dintr-un interval (a , b) , peste care o funcţie h este continuă şi derivabilă, în care tangenta la graficul funcţiei y = h ( x ) este paralelă cu dreapta determinată de punctele de coordonate (a , h (a )) şi (b, h (b)) .
6.2
Rezolvarea ecuaţiilor algebrice neliniare
185
Astfel, se consideră ecuaţia (6.8), rescrisă sub forma (6.9), şi formula de iterare (6.10). Soluţia α îndeplineşte condiţia de punct fix pentru aplicaţia g: α = g(α ) . Atunci, eroarea comisă la iteraţia [k + 1] este:
e k +1 = x k +1 − α = g( x k ) − g (α) =
g ( x k ) − g (α ) ⋅ ( x k +1 − α) . x k +1 − α
(6.12)
Dar x k +1 − α = e k şi aplcând teorema Lagrange amintită, există un punct ξ k ∈ ( x k , α ) , astfel ca g ′(ξ k ) = [g ( x k ) − g (α )] /( x k − α ) , dacă funcţia g este continuă şi derivabilă pe intervalul ( x k , α ) . Relaţia (6.12) devine: e k +1 = g ′(ξ k ) ⋅ e k .
(6.13)
Mai departe, se consideră îndeplinită condiţia (6.11), într-o vecinătate a soluţiei considerate. În aceste condiţii, se afirmă că dacă estimaţia iniţială x 0 ∈ Vα , atunci şi estimaţiile următoare x 1 , … , x k , … aparţin lui Vα şi →∞ ⎯→ α . x k ⎯k⎯
Într-adevăr, plecând de la relaţia (6.13) şi folosind (6.11), se obţine: | e k +1 |=| g ′(ξ k ) | ⋅ | e k |≤ c⋅ | e k |≤ c 2 ⋅ | e k −1 |≤ … ≤ c k +1 ⋅ | e 0 | . →∞ →∞ Dar | e 0 |≠ 0 şi c k +1 ⎯k⎯ ⎯→ 0 . ⎯→ 0 deoarece 0 < c < 1 . Aşadar, | e k +1 | ⎯k⎯
Observaţii: 1. De multe ori este greu de evaluat derivata funcţiei g pentru a constata îndeplinirea condiţiei (6.11). Practic, se poate verifica aceasta pe baza şirului de valori x 0 , x 1 , … . Astfel, ţinând cont de relaţia de recurenţă (6.10), dacă sunt îndeplinite condiţiile: | x 1 − x 0 |>| x 2 − x 1 |> … , atunci rezultă că funcţia g este o contracţie. 2. Dacă | g ′( x ) |≥ 1 , este posibil ca şirul de aproximaţii ale soluţiei să fie divergent. În funcţie de alegerea funcţiei g, pot exista mai multe tipuri de convergenţă a şirului (6.10), descrise în continuare. a) Dacă 0 < g ′( x ) < 1 , atunci şirul de aproximaţii, obţinut cu relaţia de recurenţă (6.10), este monoton convergent (relaţia (6.13)). Acest caz este prezentat principial în Figura 6.1.
186
6.
Ecuaţii şi sisteme de ecuaţii neliniare
y=x
y
y = g( x ) g(x 0 ) = x 1 = y1
g( x 1 ) = x 2 = y 2
x α ... x2
x1
x0
Fig. 6.1 Proces iterativ (monoton) convergent, 0 < g ′( x ) < 1
b) Dacă − 1 < g ′( x ) < 0 , atunci şirul de aproximaţii obţinut cu relaţia de recurenţă (6.10) este oscilant convergent. Ţinând cont de relaţia (6.13), erorile de aproximare a soluţiei alternează ca semn de la o iteraţie la alta şi se micşorează în modul. Acest caz este prezentat principial în Figura 6.2. y=x
y g( x 0 ) = x 1 = y1
g( x 1 ) = x 2 = y 2
y = g( x )
x x0
x2 ... α ... x1
Fig. 6.2 Proces iterativ (oscilant) convergent, − 1 < g ′( x ) < 0
c) dacă | g ′( x ) |≥ 1 , atunci şirul de aproximaţii obţinut cu relaţia de recurenţă (6.10) poate fi divergent, situaţie ilustrată în Figura 6.3.
6.2
Rezolvarea ecuaţiilor algebrice neliniare
187
y = g( x )
y
y=x
g( x 1 ) = x 2 = y 2 g( x 0 ) = x 1 = y1
x α
x0
x1
x2
Fig. 6.3 Proces iterativ divergent, | g ′( x ) |≥ 1
Se demonstrează că eroarea la iteraţia [k] poate fi majorată: | e k | ≤ | x1 − x 0 | ⋅
λk , λ ∈ (0, 1) , 1− λ
(6.14)
unde λ = sup {| g ′( x ) |} . Convergenţa este rapidă dacă mărimea λ ∈ (0, 0.5) . x∈Vα
Inegalitatea (6.14) poate fi utilizată pentru a estima numărul minim de iteraţii pentru care eroarea de aproximare se înscrie într-o anumită precizie λk impusă: | e k |≤ ε . Astfel, din relaţia | x 1 − x 0 | ⋅ ≤ ε rezultă, prin 1− λ logaritmare, în cazul egalităţii, valoarea celui mai apropiat întreg superior k = k min . Definiţie: O metodă iterativă se spune că este convergentă, având ordinul de convergenţă d, dacă este îndeplinită condiţia:
lim
k →∞
e k +1 = cons tan t ≠ 0 . e dk
188
6.
Ecuaţii şi sisteme de ecuaţii neliniare
6.2.2 Metoda Newton (metoda tangentei)
Dacă funcţia f, care apare în membrul stâng al ecuaţiei neliniare (6.8), îndeplineşte anumite condiţii, atunci metoda Newton, denumită şi metoda tangentei, se dovedeşte a fi cea mai rapidă din clasa metodelor iterative. Principiul acestei metode este ilustrat în Figura 6.4. y
y = f ( x)
(Tk)∩(0x)={[xk+1, 0]}
(Tk) [xk, f(xk)]
x α ...
xk+1 ... xk
Fig. 6.4 Metoda Newton: reprezentare principială
Fie x k elementul din şirul de aproximaţii obţinut la iteraţia [k]. Ecuaţia tangentei (Tk) la graficul funcţiei y = f ( x ) , dusă în punctul {x k , f ( x k )} , este: y − f ( x k ) = f ′( x k ) ⋅ ( x − x k ) . Intersecţia tangentei (Tk) cu axa absciselor (0x) este punctul de coordonate ( x k +1 ,0) . Acesta furnizează următorul element al şirului de apromixaţii. Punctul ( x k +1 ,0) verifică ecuaţia tangentei: f (x k ) 0 − f ( x k ) = f ′( x k ) ⋅ ( x k +1 − x k ) ⇒ x k +1 = x k − , f ′( x k ) ≠ 0 .(6.15) f ′( x k ) Încadrând formula de iterare funcţia g ( x ) este:
(6.15) în metoda iterării, corespunzător,
g( x ) = x −
f (x) . f ′( x )
(6.16)
Ca urmare, se poate imagina un algoritm care să se încadreze în algoritmul general descris la metoda iterării. Acesta trebuie să conţină următoarele: atribuie x v ← x n
6.2
Rezolvarea ecuaţiilor algebrice neliniare
189
dacă [f ( x v ) ≠ 0] şi [f ′( x v ) ≠ 0] atunci ⎡ atribuie x n ← x v − f ( x v ) / f ′( x v ) ⎣
Sunt, astfel, implementate relaţiile de iterare Newton:
⎧x − f ( x k ) / f ′( x k ), f ′( x k ) ≠ 0 x k +1 = ⎨ k . ⎩x k , f ′( x k ) = f ( x k ) = 0 Rezultă că aplicarea acestui algoritm necesită existenţa şi definirea funcţiei f şi a derivatei acesteia, f ′ . Metoda Newton fiind o metodă iterativă, convergenţa acesteia este asigurată dacă: | g ′( x ) |< 1, ∀x ∈ Vα . Astfel, derivând relaţia (6.16), se obţine: g ′( x ) = 1 −
[f ′( x )] 2 − f ( x ) ⋅ f ′′( x ) f ( x ) ⋅ f ′′( x ) . = [f ′( x )] 2 [f ′( x )] 2
(6.17)
Aşadar, dacă este îndeplinită condiţia: | f ( x ) ⋅ f ′′( x ) /[f ′( x )] 2 |< 1, ∀x ∈ Vα , atunci metoda Newton converge. Această condiţie implică existenţa derivatelor de ordin întâi şi doi ale funcţiei f ( x ) şi, de asemenea, faptul că f ′( x ) ≠ 0, ∀x ∈ Vα . Din relaţia (6.17) şi ţinând cont de faptul că soluţia ecuaţiei neliniare are proprietatea de punct fix pentru funcţia de iterare, g ( x ) , rezultă că: f (α) ⋅ f ′′(α) α = g(α), g ′(α) = =0, [f ′(α)] 2 deoarece f (α) = 0 . Dezvoltând funcţia g ( x k ) în serie Taylor în jurul punctului α , se obţine: g ′′(ξ) g( x k ) = g(α) + g ′(α) ⋅ ( x k − α) + ⋅ ( x k − α) 2 , ξ ∈ ( x k , α) . 2 Ţinând cont de faptul că: x k +1 = g ( x k ) şi g ′(α ) = 0 , rezultă că: x k +1 − α = (1 / 2) ⋅ g ′′(ξ) ⋅ ( x k − α) 2 . Dar e k +1 = x k +1 − α şi e k = x k − α . Atunci relaţia (6.18) devine: e k +1 = (1 / 2) ⋅ g ′′(ξ) ⋅ e 2k . Cele prezentate până acum conduc la enunţarea următorului rezultat.
(6.18)
190
6.
Ecuaţii şi sisteme de ecuaţii neliniare
Teoremă: Fie ecuaţia neliniară (6.8) care admite soluţia α . Fie Vα o vecinătate a acestei soluţii. Dacă f este o funcţie de clasă C 2Vα , cu f (α) = 0 , dar f ′(α ) ≠ 0 şi dacă oricare ar fi x ∈ Vα sunt îndeplinite relaţiile: | f ( x ) ⋅ f ′′( x ) /[f ′( x )] 2 |< 1 şi f ′( x ) ≠ 0 , atunci şirul de aproximaţii corespunzător metodei Newton, definit de relaţia
(6.15), este convergent. În plus:
lim (e k +1 / e 2k ) = (1 / 2) ⋅ [f ′′(α) / f ′(α)] = constant ≠ 0 .
k →∞
Se poate demonstra că dacă metoda Newton se poate aplica, atunci aceasta are ordinul de convergenţă doi. Practic, aceasta înseamnă că la fiecare iteraţie numărul de cifre zecimale exacte ale soluţiei se dublează. Însă, convergenţa metodei depinde critic de alegerea punctului de start x 0 . Astfel, dacă x 0 nu se găseşte într-o vecinătate (imediată) a soluţiei, atunci este posibil ca metoda să nu conducă la soluţie. Exemplul ilustrat în Figura 6.5 se referă la situaţia în care metoda Newton se blochează în jurul unui punct de minim local al funcţiei f ( x ) . Din acest motiv, metoda Newton se foloseşte, de regulă, ca o procedură terminală, primele estimaţii ale soluţiei fiind determinate cu o metodă, în general, mai lentă. y
y = f (x)
x α
x0
x2
.....
x3 x1
Fig. 6.5 Metoda Newton: proces iterativ care nu converge către soluţia α
Dacă soluţia este de multiplicitate p, atunci se foloseşte următoarea relaţie de recurenţă: f (x k ) x k +1 = x k − p ⋅ . (6.19) f ′( x k ) Practic, calculele se organizează astfel:
6.2
•
Rezolvarea ecuaţiilor algebrice neliniare
primele estimaţii se calculează cu relaţia: f ( x k −1 ) x k = x k −1 − , f ′( x k −1 ) calculându-se şi mărimea: F( x k ) =
•
191
[f ′( x k )] 2 [f ′( x k )] 2 − f ( x k ) ⋅ f ′′( x k )
;
corespunzător unui index de iterare [j], când acesta există, pentru care este satisfăcută relaţia: | F( x i ) − p |≤ ε, i = j, j + 1, j + 2, j + 3, j + 4 , p ∈ Z, p > 0 ,
atunci întregul p reprezintă multiplicitatea soluţiei şi se comută pe relaţia (6.19). Altfel spus, dacă mărimea F diferă de un număr întreg, p, cu o eroare de ε = 10 −1 (10 −2 ) pentru 3 ÷ 5 valori ale estimaţiilor date de x k , atunci acesta este un semn că soluţia este de multiplicitate p. Mai mult, dacă se face media ultimelor p valori din şirul de aproximaţii ale soluţiei, se obţine: x k − p +1 + … + x k = x k +1 , p practic dublându-se numărul cifrelor exacte ale aproximaţiei x k +1 faţă de numărul de cifre exacte ale aproximaţiei anterioare x k . 6.2.3 Metoda secantei (metoda interpolării liniare inverse) Metoda secantei sau a interpolării liniare inverse reprezintă un caz particular al metodei Newton. Astfel, pornind de la relaţia de recurenţă care caracterizează metoda Newton: f (x k ) x k +1 = x k − , f ′( x k )
unde f este o funcţie de clasă C 2Vα pe o vecinătate a soluţiei Vα , şi aproximând derivata f ′( x k ) prin
f ( x k ) − f ( x k −1 ) , se obţine: x k − x k −1
x k +1 = x k −
f (x k ) , k = 1, 2, ... , f ( x k ) − f ( x k −1 ) x k − x k −1
(6.20)
unde x 0 , x 1 sunt puncte de start, precizate. Principiul metodei este ilustrat în Figura 6.6.
192
6.
Ecuaţii şi sisteme de ecuaţii neliniare
y
y = f (x)
[xk-1, f(xk-1)] (Sk-1,k)∩(0x)={[xk+1, 0]} [xk, f(xk)] x α
.....
xk+1
xk xk-1
....
Fig. 6.6 Metoda secantei: reprezentare principială
Astfel, se consideră o nouă aproximaţie a soluţiei α ca fiind abscisa punctului de intersecţie dintre secanta Sk-1,k la graficul funcţiei y = f ( x ) şi axa absciselor 0x. Secanta Sk-1,k trece prin punctele determinate de ultimele două aproximaţii ale soluţiei: ( x k −1 , f ( x k −1 )) şi ( x k , f ( x k )) . Funcţia neliniară f este astfel aproximată liniar, pe intervalul [ x k −1 , x k ] , de către dreapta Sk-1,k. Mai mult, dreapta de ecuaţie S k −1,k ( x ) = a ⋅ x + b satisface condiţiile:
S k −1,k ( x k −1 ) = f ( x k −1 ) ,
S k −1,k ( x k ) = f ( x k ) . Aceste două condiţii permit
determinarea coeficienţilor a şi b ai secantei Sk-1,k. Astfel, se spune că dreapta S k −1,k ( x ) interpolează liniar funcţia f pe intervalul [ x k −1 , x k ] . În general, pentru o valoare c a argumentului, rezultă f (c) ≅ S k −1,k (c) . Se poate pune problema ca S k −1,k ( x k +1 ) să aibă o anumită valoare f * (în cazul de faţă această valoare este 0), de aici rezultând x k +1 . În acest caz, se spune că se realizează o interpolare liniară inversă. Cu parametrii a şi b astfel determinaţi şi impunând condiţia S k −1,k ( x k +1 ) = 0 , se obţine relaţia de recurenţă (6.20). Algoritmul poate fi schiţat astfel: citeşte x 1 , x 2 ⎡ ⎢ atribuie x 0 ← x 1 ⎢ atribuie x 1 ← x 2 ⎢
6.2
Rezolvarea ecuaţiilor algebrice neliniare
193
⎢ atribuie x 2 ← x 1 − f ( x 1 ) /{[ f ( x 1 ) − f ( x 0 )] /( x 1 − x 0 )} ⎢ ⎣
scrie ‘soluţia = ‘, x 2 Pentru a asigura convergenţa şirului de aproximaţii la soluţia α a ecuaţiei neliniare, trebuie satisfăcute condiţiile: f ′(α ) ≠ 0 şi f ′′(α ) ≠ 0 . Viteza de convergenţă depinde de gradul în care funcţia f poate fi aproximată prin segmente de dreaptă. Altfel spus, aceasta depinde de viteza de variaţie a primei derivate , f ′( x ) , adică de curbura funcţiei f ( x ) caracterizată de a doua derivată f ′′( x ) . Cu alte cuvinte, cu cât curbura funcţiei f ( x ) este mai mare, cu atât viteza de convergenţă este mai mică. Se poate demonstra că ordinul de convergenţă al metodei secantei este: d = ( 5 + 1) / 2 ≅ 1.68 . Faptul că la această metodă nu se cere evaluarea derivatei funcţiei f ( x ) constituie un avantaj faţă de metoda Newton. Preţul plătit este, însă, o viteza de convergenţă mai mică. 6.2.4 Metoda Müller (a interpolării cuadrice inverse) Metoda Müller extinde rezultatele obţinute la metoda secantei. De această dată, funcţia f este aproximată printr-un polinom de gradul al doilea, motiv pentru care metoda se mai numeşte şi a interpolării cuadrice inverse. Această metodă necesită trei puncte de start, procesul iterativ continuând cu una din rădăcinile polinomului de gradul doi aproximant. Fie x 0 , x 1 şi x 2 punctele de start, care se consideră a fi în relaţia: x 2 < x 0 < x 1 şi fie f ( x 2 ), f ( x 0 ), f ( x 1 ) valorile corespunzătoare ale funcţiei neliniare care constituie membrul stâng al ecuaţiei (6.8). Cu aceste puncte de start precizate, se determină un polinom de gradul al doilea, de forma generală: T2 ( x ) = a ⋅ x 2 + b ⋅ x + c, a , b, c ∈ ℜ . Polinomul T2 ( x ) aproximează, prin interpolare, funcţia f ( x ) , dacă sunt satisfăcute condiţiilor: T2 ( x i ) = f ( x i ), i = 0, 1, 2 . Astfel, se determină coeficienţii a , b, c , după care se calculează rădăcinile acestui polinom. Una din aceste rădăcini, notată x r , se alege drept o nouă aproximaţie a soluţiei α a ecuaţiei f ( x ) = 0 .
194
6.
Ecuaţii şi sisteme de ecuaţii neliniare
Pentru optimizarea calculelor, se translează sistemul de axe x0y în punctul de coordonate ( x 0 , 0) , noul sistem de axe fiind ν0μ . Principiul metodei este ilustrat în Figura 6.7.
μ = T2(ν) = aν2 + bν + c
y
[x1, f(x1)] y = f (x)
[x0, f(x0)] x
xr x2
α x0
x1
[x2, f(x2)] Fig. 6.7 Metoda Müller: reprezentare principială
Se realizează următoarele notaţii: h 2 = x 0 − x 2 , h 1 = x 1 − x 0 . În sistemul de axe translat, ν0μ , sunt satisfăcute relaţiile: T2 (0) = f ( x 0 ) = f 0 , T2 ( − h 2 ) = f ( x 2 ) = f 2 , T2 ( h 1 ) = f ( x 1 ) = f 1 .
Ţinând cont de expresia polinomului T2 ( x ) , în sistemul de axe translat (Figura 6.7), rezultă: ⎧c = f 0 ⎪ 2 ⎨a ⋅ h 1 + b ⋅ h 1 + c = f 1 . ⎪a ⋅ h 2 − b ⋅ h + c = f 2 2 2 ⎩ Acesta este un sistem determinat de ecuaţii algebrice liniare în necunoscutele a, b şi c. În urma rezolvării acestui sistem se obţin coeficienţii polinomului aproximant, T2 ( x ) . Drept aproximaţie a soluţiei ecuaţiei (6.8), x r , se consideră rădacina polinomului T2 (ν ) care este mai aproapiată de originea sistemului de axe ν0μ . Ca urmare, în sistemul de axe ν0μ , se alege soluţia care este cea mai mică în
valoare absolută. Aceasta se determină astfel:
6.3
Rezolvarea sistemelor de ecuaţii algebrice neliniare
ν2 =
c = a ⋅ ν1
c
195
2⋅c
=
, − b ± b − 4 ⋅ a ⋅ c − b ± b2 − 4 ⋅ a ⋅ c a/ ⋅ 2 ⋅ a/ unde se consideră semnul minus dacă b > 0 şi semnul plus dacă b < 0 . În acest fel, numitorul din expresia anterioară are cea mai mare valoare absolută. Aşadar, următoarea estimaţie a soluţiei ecuaţiei neliniare (6.8) este: 2⋅c , xr = x0 − − b ± b2 − 4 ⋅ a ⋅ c unde se consideră semnul plus dacă b > 0 şi semnul minus dacă b < 0 . Calculele se pot organiza astfel: 2
* defineşte f citeşte x 0 , x 1 , x 2 * ordonează x 2 < x 0 < x 1 atribuie x r ← x 0 cât timp | f ( x r ) | > ε r execută ⎡ * evaluează f ( x i ), i = 0, 1, 2 ⎢ * calculează a, b, c ⎢ * calculează x r ⎢ dacă ( x r > x 0 ) atunci ⎯⎯⎯ ( x 0 , x r , x 1 ) ⎢ ⎡ * rearanjează în ( x 2 , x 0 , x 1 ) ←⎯ x
0
1
⎢ ⎢altfel ⎯⎯⎯ ( x 2 , x r , x 0 ) ⎢ ⎢ * rearanjează în ( x 2 , x 0 , x 1 ) ←⎯ x
0
1
⎢ ⎣ ⎣ scrie ‘soluţie = ‘, x r
Avantajul acestei metode este că nu se cere existenţa şi evaluarea derivatelor funcţiei f. În plus, nu este obligatoriu ca funcţia f să fie cunoscută analitic, valorile sale putând fi obţinute, de exemplu, în urma unor măsurători. Mai mult, cu excepţia primului pas, este necesară, la fiecare iteraţie, o singură evaluare a funcţiei f, şi anume în punctul x r . Metoda are un ordin de convergenţă ridicat, apropiat de cel al metodei Newton, acesta având valoarea d ≅ 1.85 .
6.3
Rezolvarea sistemelor de ecuaţii algebrice neliniare
Fie sistemul de ecuaţii neliniare:
196
6.
Ecuaţii şi sisteme de ecuaţii neliniare
f (x ) = 0 n , x = [x 1 … x n ]T , f ( x ) = [f 1 ( x 1 , … , x n ) … f n ( x 1 , … , x n )] T
(6.21)
în care f : D 1 → D 2 , D1 , D 2 ⊂ ℜ n (C n ) . Metodele de rezolvare a sistemelor de ecuaţii neliniare constau în construirea unui şir de aproximaţii convergent către o soluţie a sistemului. Fie α = [α 1 … α n ] T o astfel de soluţie: f (α ) = 0 n . Sistemul de ecuaţii (6.21) poate fi rescris sub forma: x = g( x ) .
(6.22)
Uzuale sunt metodele care folosesc formule iterative staţionare de ordinul întâi:
x
[ k +1]
= g( x
[k]
), k = 0, 1, … , x
[0]
− precizat .
(6.23)
Fie Vα o vecinătate a soluţiei α : Vα = {x ∈ D1 / || x − α || p ≤ h, h ∈ ℜ + } . Se enunţă următoarele rezultate. Teoremă: Fie ecuaţia vectorială neliniară (6.21), rescrisă sub forma (6.22). Se consideră Vα o vecinătate a soluţiei α . Dacă funcţia g este o funcţie continuă pe Vα , iar componentele sale, g i , i = 1, … , n , admit derivate parţiale în raport cu argumentele x j , j = 1, … , n şi satisfac la relaţia:
∂g i λ ( x ) ≤ , λ ∈ (0, 1), ∀x ∈ Vα , ∂x j n
(6.24)
atunci: [ 0] (i) dacă x ∈ Vα , atunci şi elementele şirului {x [ k ] }k = 0,1,… definit de către relaţia (6.23) aparţin vecinătăţii Vα ;
(ii) şirul definit de către relaţia (6.23) converge către soluţia α pentru k → ∞ . Observaţie: Elementele din relaţia (6.24) se referă la componentele matricei iacobian a funcţiei g în raport cu argumentul x :
G( x ) =
⎡ ∂g ( x ) ⎤ =⎢ i . ⎥ dx ⎢⎣ ∂x j ⎥⎦ 1≤i, j≤ n
dg( x )
Teorema enunţată anterior arată că şirul de aproximaţii (6.23) converge dacă,
6.3
Rezolvarea sistemelor de ecuaţii algebrice neliniare
197
într-o vecinătate a soluţiei, matricea iacobian a funcţiei de iterare g are, în modul, elementele foarte mici. Consecinţa acestui rezultat se referă la estimarea [k] [k] erorilor în procesul iterativ: e = x − α . Propoziţie: În condiţiile teoremei enunţate anterior pentru problema (6.21), reformulată în (6.22), problemă care se rezolvă construind şirul de aproximaţii (6.23), au loc relaţiile: [1] [0] || x − x || ∞ k [k ] [k] | e j |=| x j − α j |≤ ⋅ λ , ∀j = 1, … , n , λ ∈ (0, 1) , (6.25) 1− λ unde λ este definit ca fiind sup {|| G ( x ) || ∞ } . x∈Vα
Şi în acest caz se poate determina un număr minim de iteraţii pentru care relaţiile (6.25) sunt îndeplinite cu o anumită precizie impusă, şi anume:
| e [jk ] |≤ [|| x
[1]
−x
[0]
|| ∞ /(1 − λ )] ⋅ λk ≤ ε .
6.3.1 Metode iterative explicite
Din această clasă se prezintă metoda Newton. Aceasta este o metodă iterativă explicită deoarece estimaţiile la un anumit pas al iterării se obţin în mod direct, explicit, ca o funcţie de estimaţiile de la iteraţia anterioară. Pentru aceasta, se consideră funcţia g ( x ) de forma: g( x ) = x − A( x ) ⋅ f ( x ) ,
(6.26)
unde A ( x ) este o matrice pătratică de ordinul n, A( x ) = [a ij ( x )]1≤i , j≤ n . Şirul (6.23) converge dacă matricea cu elemente variabile, A ( x ) , este nesingulară pentru x ∈ Vα . Ştiind că soluţia α satisface condiţia de punct fix pentru funcţia g ( x ) , folosind relaţia (6.26), rezultă: g (α ) = α ⇒ − A (α ) ⋅ f (α ) = 0 n . Aceasta implică f (α) = 0 n dacă şi numai dacă A (α ) este o matrice nesingulară. Altfel spus, f (α ) se găseşte în nucleul matricei A (α ) . Dacă matricea A (α ) este nesingulară, atunci A (α ) ⋅ f (α ) conduce la vectorul 0 n dacă şi numai dacă
f (α ) = 0 n . În continuare se consideră că matricea A ( x ) = A = constant. Pentru a
198
6.
Ecuaţii şi sisteme de ecuaţii neliniare
construi şirul (6.23) folosind relaţia (6.26), trebuie determinată matricea A pentru care metoda să fie convergentă. Conform teoremei enunţată anterior, matricea A se alege astfel încât iacobianul funcţiei de iterare să aibă, în modul, elementele mici sau foarte mici, pe o vecinătate a soluţiei. Astfel, iacobianul funcţiei g este:
G(x) =
⎡ ∂f ⎤ ( x ) = I n − A ⋅ J f ( x ), J f ( x ) = ⎢ i ( x )⎥ . dx ⎥⎦ 1≤i, j≤ n ⎣⎢ ∂x j dg
Conform teoremei anterioare, trebuie satisfăcute relaţiile: | G ij ( x ) |≤
∂g λ , ∀ x ∈ Vα , G ij ( x ) = i ( x ) . n ∂x j
Ca urmare, in caz ideal, dacă iacobianul funcţiei f este o matrice nesingulară pe Vα , se poate alege matricea A ca fiind:
A = [J f (α)] −1 . În felul acesta, G (α) = I n − [J f (α)]−1 ⋅ J f ( x ) = 0 n×n . Însă soluţia α nu se cunoaşte şi atunci se recurge la o alegere sub-optimală a matricei A. Aceasta conduce la următoarea relaţie de recurenţă:
x
[ k +1]
=x
[k ]
− [J f ( x
[k ]
)]−1 ⋅ f ( x
[k]
), k = 0, 1, 2, … , x
[0]
∈ Vα . (6.27)
Relaţia (6.27) constituie o generalizare a metodei tangentei de la cazul scalar ( n = 1 ). De regulă, nu se lucrează cu relaţia (6.26), pentru a evita inversarea matricei iacobian. Astfel, se rezolvă sistemul pătratic, de ordinul n:
J f (x în care necunoscuta este Δ x soluţiei ecuaţiei (6.21):
[k]
[k ]
x
) ⋅ Δx
[k]
= f (x
[k]
),
. Apoi, se determină următoarea estimaţie a
[ k +1]
=x
[k ]
− Δx
[k ]
.
Se demonstrează că ordinul de convergenţă al acestei metode este 2, deci numărul de cifre exacte ale soluţiei se dublează de la o iteraţie la alta. 6.3.2 Metode iterative implicite
6.3
Rezolvarea sistemelor de ecuaţii algebrice neliniare
199
În cazul metodelor iterative implicite, fiecare componentă x [i k +1] nu se mai poate exprima în mod explicit în funcţie de estimaţiile de la iteraţia anterioară. În acest caz, legătura dintre variabile este asigurată de către funcţiile f i . Aceasta justifică denumirea de metode iterative implicite. În cazuri particulare, componentele x [i k +1] se pot exprima în funcţie de componentele de la iteraţia [k]. Metodele iterative implicite generalizează, la cazul neliniar, metodele iterative folosite la rezolvarea sistemelor determinate de ecuaţii algebrice liniare. Astfel, ecuaţia vectorială (6.21) se rescrie sub forma: ⎧ f1 (x 1 , … , x n ) = 0 ⎪ ⎪⎪ ⎨ f i (x 1 ,…, x n ) = 0 . ⎪ ⎪ ⎪⎩f n ( x 1 , … , x n ) = 0
(6.28)
Generalizând rezultatele de la metodele iterative pentru rezolvarea sistemelor determinate de ecuaţii algebrice liniare şi în concordanţă cu teorema enunţată anterior, se demonstrează că aceste metode converg către soluţia α , pentru orice x ∈ Vα , unde Vα este o vecinătate a soluţiei α , dacă raza spectrală a matricei iacobian a funcţiei f , evaluată în punctul de start x
[ 0]
, este
[ 0]
subunitară: ρ[J f ( x )] < 1 . A. Metoda Jacobi Fie x
[k]
aproximaţia obţinută la iteraţia [k]: x
[k]
= [ x 1[ k ] … x [i k ] … x [nk ] ] T .
La iteraţia [k], sistemul de ecuaţii neliniare (6.21), rescris sub forma (6.28), se rezolvă astfel:
⎧f 1 ( x 1[ k +1] , x [2k ] , … , x [nk ] ) = 0 ⎪ ⎪ ⎪ [k] [k ] [k ] [ k +1] [k ] [k] ⎨f i ( x 1 , x 2 , … , x i −1 , x i , x i +1 , … , x n ) = 0 ⎪ ⎪ ⎪⎩f n ( x 1[ k ] , x [2k ] , … , x [i k ] , … , x [nk−]1 , x [nk +1] ) = 0
⇒ x 1[ k +1] ⇒ x [i k +1] . ⇒ x [nk +1]
Astfel, cu excepţia unei singure componente, cea de la iteraţia [k + 1] , restul componentelor se consideră cunoscute de la iteraţia precedentă, [k]. Ca urmare,
200
6.
Ecuaţii şi sisteme de ecuaţii neliniare
rezolvarea sistemului neliniar se transformă în rezolvarea a n probleme, fiecare problemă însemnând rezolvarea unei ecuaţii neliniare. Pentru aceasta din urmă, se poate aplica una din metodele prezentate anterior, în subcapitolul 6.2. B. Metoda Gauss-Seidel
Se aplică acelaşi principiu de la metoda Jacobi. De această dată, în afară de aproximaţia de la iteraţia [k], anterioară, se folosesc succesiv, când este posibil, şi componentele determinate ale estimaţiei de la iteraţia curentă, [k + 1] . Astfel, sistemul (6.21) devine: ⎧f 1 ( x 1[ k +1] , x [2k ] , … , x [nk ] ) = 0 ⎪ ⎪ ⎪ [ k +1] [k ] [k ] [ k +1] [k] [k] ⎨f i ( x 1 , x 2 , … , x i −1 , x i , x i +1 , … , x n ) = 0 ⎪ ⎪ ⎪⎩f n ( x 1[ k +1] , x [2k +1] , … , x [i k +1] , … , x [nk−+11] , x [nk +1] ) = 0
⇒ x 1[ k +1] ⇒ x [i k +1] . ⇒ x [nk +1]
C. Metoda suprarelaxărilor succesive
Pentru acest tip de metodă se folosesc parametri de accelerare a convergenţei. Astfel, dacă se aplică metoda Gauss-Seidel, procesul iterativ se desfăşoară după schema: [ k +1]
f i ( x 1[ k +1] , x [2k ] , … , x [i −k1] , x i x [i k +1]
=
x [i k ]
+
[ k +1] ω ⋅ (x i
−
, x [i +k1] , … , x [nk ] ) = 0
[ k +1]
⇒ xi
x [i k ] )
,
unde | ω |> 1 este un parametru real de accelerare a convergenţei. [ 0]
precizată, se determină o valoare a Pentru o estimaţie iniţială x parametrului ω = ω optim pentru care este îndeplinită condiţia: [1]
ρ(J f ( x (ω)) = minim < 1 .
6.4
Rezolvarea ecuaţiilor polinomiale
6.4.1 Problematica generală
O categorie de ecuaţii neliniare, des întâlnită în practică, este cea a ecuaţiilor polinomiale:
6.4
Rezolvarea ecuaţiilor polinomiale
Pn ( x ) = 0, Pn ( x ) = a 0 ⋅ x n + a 1 ⋅ x n −1 + … + a n −1 ⋅ x + a n a i ∈ ℜ, i = 0, … , n , a 0 ≠ 0
201
.
(6.29)
În general, rezolvarea acestor ecuaţii se poate realiza cu metodele prezentate anterior în subcapitolul 6.2 dedicat rezolvării ecuaţiilor neliniare. Dezavantajul esenţial al aplicării acestor metode pentru rezolvarea ecuaţiilor polinomiale îl constituie necesitatea localizării intervalelor unde ecuaţia are soluţii. Ca urmare, s-au dezvoltat procedee de separare a rădăcinilor unui polinom, însă acestea sunt ineficiente din punct de vedere computaţional, necesitând un efort mare de calcul. Pe de altă parte, ecuaţia (6.29) are un număr de n soluţii care sunt, în general, numere complexe. Soluţiile complexe apar în perechi complex conjugate. În astfel de cazuri, metodele prezentate anterior, pentru determinarea soluţiilor reale ale ecuaţiilor neliniare, trebuie reformulate pentru mulţimea numerelor complexe şi, în plus, trebuie definită şi folosită, în calculatorul numeric, aritmetica în virgulă mobilă cu numere complexe. Având în vedere importanţa şi larga aplicabilitate a acestei probleme, s-au dezvoltat metode eficiente care lucrează în mod automat şi numai cu numere reale. Acestea sunt descrise principial în continuare. Aplicaţii
Rezolvarea ecuaţiilor polinomiale intervine ca o etapă esenţială în domeniul analizei şi sintezei sistemelor dinamice liniare, îndeosebi caracterizarea intrare-ieşire. Fără a intra în detalii care nu fac obiectul lucrării de faţă, se menţionează tehnicile de analiză a stabilităţii sistemelor automate, şi anume: • metoda locului rădăcinilor; • utilizarea locului de transfer; • utilizarea diagramelor Bode. A. Metode de determinare succesivă a zerourilor unui polinom
Principiul este de a pune în evidenţă divizori de grad întâi sau doi ai polinomului Pn ( x ) . Divizorii sunt separaţi succesiv, în urma unui proces iterativ. Una din metodele cele mai răspândite este algoritmul Bairstow care constă în separarea divizorilor de grad doi. Dacă gradul n al polinomului este impar, atunci ultimul divizor separat este un polinom de grad întâi. Prin găsirea rădăcinilor divizorilor separaţi se obţin soluţiile ecuaţiei polinomiale iniţiale. Ideea esenţială care stă la baza acestei metode este aplicarea metodei Newton pentru rezolvarea sistemelor de ecuaţii neliniare de ordinul doi care
202
6.
Ecuaţii şi sisteme de ecuaţii neliniare
rezultă din condiţia ca restul împărţirii unui polinom de grad oarecare la un polinom de grad doi să fie zero. Fie divizorul de gradul doi de forma: T2 ( x ) = x 2 + p ⋅ x + q, p, q ∈ ℜ şi polinomul Pn ( x ) dat de relaţia (6.29). Atunci se poate scrie: Pn ( x ) = T2 ( x ) ⋅ Q n − 2 ( x ) + R ⋅ x + S . Q n − 2 ( x ) = b 0 ⋅ x n − 2 + b 1 ⋅ x n −3 + … + b n −3 ⋅ x + b n − 2
În general, coeficienţii R şi S sunt funcţii neliniare în argumentele p şi q: R = R (p, q) , S = S(p, q ) . La rândul lor, coeficienţii p şi q depind de coeficienţii a i , i = 0, … , n ai polinomului Pn ( x ) . Aşadar, polinomul T2 ( x ) este un divizor al polinomului Pn ( x ) dacă şi numai dacă au loc relaţiile: ⎧ R ( p, q ) = 0 , ⎨ ⎩ S( p, q ) = 0
(6.30)
de unde rezultă coeficienţii p şi q. În concluzie, aplicarea metodei implică parcurgerea unui algoritm care trebuie să combine rezolvarea sistemului de ecuaţii neliniare de ordinul doi (6.30) în necunoscutele p şi q, pe de o parte, cu determinarea coeficienţilor polinomului cât, Q n− 2 ( x ) , pe de altă parte. Detalii asupra acestui algoritm sunt prezentate în subcapitolul 6.4.2 care urmează. Caracteristica acestei metode este faptul că ea favorizează acumularea şi propagarea erorilor de rotunjire. Astfel, odată ce este separat un divizor, procedeul se continuă asupra polinomului cât, Q n − 2 ( x ) , şi aşa mai departe. Drept urmare, coeficienţii ultimilor divizori pot fi afectaţi de erori de rotunjire într-o măsură inacceptabilă. B. Metode de determinare simultană a zerourilor unui polinom
Fiind dată ecuaţia (6.29), aceasta se transformă astfel încât polinomul din membrul stâng să fie monic ( a 0 = 1 ). Se obţine astfel ecuaţia:
Q n ( x ) = 0, Q n ( x ) = x n + α1 ⋅ x n −1 + … + α n −1 ⋅ x + α n , α i = a i / a 0 , i = 1, … , n . Se realizează această transformare deoarece folosirea polinoamelor monice accelerează convergenţa proceselor iterative care intervin ulterior. Polinomului Q n ( x ) i se asociază o matrice A, astfel încât polinomul caracteristic al matricei să coincidă cu polinomul pentru care se calculează rădăcinile, Q n ( x ) : det(λ ⋅ I n − A ) ≡ Q n (λ ) .
6.4
Rezolvarea ecuaţiilor polinomiale
203
Dacă se reuşeşte construirea unei astfel de matrice, în general de formă simplă, atunci valorile proprii ale acesteia vor fi chiar rădăcinile polinomului Q n ( x ) . Plecând de la această observaţie, pentru obţinerea rădăcinilor polinomului dat, se aplică matricei A o metodă de determinare a valorilor proprii cum este algoritmul QR de aduce la forma canonică Schur. O modalitate uzuală de construire a matricei A face apel la matricele de tip Frobenius. Acestea au următoarea structură: ⎧0, ⎪ F = [f ij ]1≤i, j≤ n , f ij = ⎨1, ⎪− α ⎩ n − j+1 ,
i = 1, … , n − 1, j = 1, … n , j ≠ i + 1 , i = 1, … , n − 1, j = i + 1 i = n , j = 1, … , n
polinomul caracteristic fiind: det(λ ⋅ I n − F) = x n + α 1 ⋅ x n −1 + … + α n −1 ⋅ x + α n . Caracteristica esenţială a acestui tip de metodă este aceea că, în general, valorile proprii calculate care coincid cu zerourile polinomului Pn ( x ) , sunt afectate în aceeaşi măsură de erorile de rotunjire. 6.4.2 Algoritmul Bairstow
Fie polinomul Pn ( x ) dat de relaţia (6.29), ale cărui rădăcini trebuie determinate. Acesta se poate rescrie sub forma: Pn ( x ) = ( x 2 + p ⋅ x + q) ⋅ (b 0 ⋅ x n − 2 + … + b n −3 ⋅ x + b n − 2 ) + R ⋅ x + S .(6.31) Pentru ca polinomul x 2 + p ⋅ x + q să fie divizor al polinomului Pn ( x ) , trebuie ca să fie îndeplinite condiţiile (6.30). Se realizează notaţiile:
⎡ ∂R ⎢ ∂p (p, q) ⎡p⎤ ⎡ R ( p, q ) ⎤ z = ⎢ ⎥; f = ⎢ ⎥; J f = ⎢ ∂S ⎢ ( p, q) ⎣q ⎦ ⎣ S(p, q) ⎦ ⎢⎣ ∂p
∂R ⎤ (p, q )⎥ ∂q ⎥. ∂S ( p, q ) ⎥ ⎥⎦ ∂q
Pentru rezolvarea sistemului (6.30) se aplică metoda Newton. Astfel, la iteraţia [i] se poate scrie:
[J f (z sau:
[i −1]
)] ⋅ Δ z
[ i −1]
= f (z
[i −1]
),
204
6.
Ecuaţii şi sisteme de ecuaţii neliniare
⎡ ∂R [i −1] [i −1] ⎢ ∂p ( p , q ) ⎢ ⎢ ∂S (p [i −1] , q [i −1] ) ⎢⎣ ∂p
∂R [i −1] [i −1] ⎤ (p , q )⎥ ⎡ Δp [i −1] ⎤ ⎡R (p [i −1] , q [i −1] )⎤ ∂q ⎥ ⋅ ⎢ [i −1] ⎥ = ⎢ , (6.32) [ i −1] [ i −1] ⎥ ∂S [i −1] [i −1] ⎥ Δq S ( p , q ) ⎦ ⎣ ⎦ (p , q ) ⎣ ⎥⎦ ∂q
de unde se obţin estimaţiile: p[i ] = p[i −1] − Δp [i −1] , q [i ] = q [i −1] − Δq [i −1] . Pentru aceasta, se pleacă de la un punct iniţial [0]
(p [ 0] , q [ 0] )
de regulă nul
[0]
= 0, q = 0) . Calculele implicate de rezolvarea sistemului determinat, de ordinul doi, de ecuaţii neliniare (6.32), se organizează astfel: ∂R [i −1] [i −1] ∂S [i −1] [i −1] [ i −1] δ[i ] = det[J f (z )] = (p , q ) ⋅ (p , q ) − ∂q ∂p ∂R [i −1] [i −1] ∂S [i −1] [i −1] − (p , q ) ⋅ (p , q ) ∂q ∂p (p
R (p [i −1] , q [i −1] ) P [i ] =
Q [i ]
S(p [i −1] , q [i −1] )
∂R [i −1] [i −1] (p , q ) ∂q ; ∂S [i −1] [i −1] (p , q ) ∂q
∂R [i −1] [i −1] (p , q ) R (p [i −1] , q [i −1] ) ∂p ; = ∂S [i −1] [i −1] [ i −1] [ i −1] (p , q ) S(p , q ) ∂p
P [i ] Q [i ] [ i −1] ; Δ q = , δ[i ] ≠ 0 . [i ] [i ] δ δ Condiţia de stop pentru metoda Newton, considerând precizia impusă ε , este: | Δp [i −1] + Δq [i −1] |≤ ε ⇔ | (P [i ] + Q [i ] ) / δ [i ] |≤ ε . În continuare, se precizează modalitatea de obţinere a elementelor necesare rezolvării sistemului neliniar anterior. Astfel, efectuând înmulţirile în ecuaţia (6.31) şi identificând coeficienţii cu cei ai polinomului Pn ( x ) din relaţia (6.29), se găseşte, în general, o relaţie de recurenţă între b k , pe de o parte şi coeficienţii a k , p şi q, pe de altă parte. Aceasta este de forma: Δp [i −1] =
(6.33) b k = a k − p ⋅ b k −1 − q ⋅ b k − 2 . Pentru ca această relaţie de recurenţă să fie valabilă pentru k = 0,1, …, n − 2 , se consideră b −1 = b − 2 = 0 . În plus, se notează: (6.34) b n −1 = R , b n + p ⋅ b n −1 = S .
6.4
Rezolvarea ecuaţiilor polinomiale
Rezultă: ⎧ ∂R ∂b n −1 ⎪⎪ ∂p = ∂p ⎨ ∂R ∂b ; ⎪ = n −1 ⎪⎩ ∂q ∂q
205
∂b n ∂b n −1 ⎧ ∂S ∂ ⎪⎪ ∂p = ∂p (b n + p ⋅ b n −1 ) = ∂p + b n −1 + p ⋅ ∂p . (6.35) ⎨ ∂S ∂ ∂b ∂b ⎪ (b n + p ⋅ b n −1 ) = n + p ⋅ n −1 = ⎪⎩ ∂q ∂q ∂q ∂q
Derivatele lui R şi S pot fi calculate, la rândul lor, folosind formule de recurenţă. Astfel, se introduc notaţiile: ⎧ ∂b k ⎪⎪ ∂p = −c k −1 , k = 1, … , n . ⎨ ∂b ⎪ k = −d k − 2 , k = 2, … , n ⎪⎩ ∂q
(6.36)
Se derivează relaţia (6.31) în raport cu p şi, ţinând cont de relaţiile (6.36), se obţine: (6.37) c k = b k − p ⋅ c k −1 − q ⋅ c k − 2 , k = 0, … , n − 1, c − 2 = c −1 = 0 . Analog, se derivează (6.31) în raport cu q şi se ţine cont de (6.36), obţinându-se: d k = b k − p ⋅ d k −1 − q ⋅ d k − 2 , k = 0, … , n − 2, d − 2 = d −1 = 0 .
(6.38)
Analizând relaţiile (6.37) şi (6.38), se observă că pentru k = 0, …, n − 2 practic este îndeplinită relaţia: (6.39) dk = ck . Din relaţiile (6.37), (6.38) şi (6.39), rezultă: b k = c k + p ⋅ c k −1 + q ⋅ c k − 2 , k = 0, … , n − 2, c − 2 = c −1 = 0 .
Ţinând cont de relaţiile (6.40), (6.34), (6.35) şi (6.36), se obţine: ∂R ∂R = −c n − 2 , = −c n − 3 , ∂p ∂q ∂S = −c n −1 + b n −1 − p ⋅ c n − 2 , ∂p
∂S = −c n − 2 − p ⋅ c n − 3 ∂q
.
(6.40)
Capitolul 7 APROXIMAREA NUMERICĂ A FUNCŢIILOR
7.1
Formularea problemei
Se consideră o funcţie reală de variabilă reală: f : [a , b] → ℜ, a , b ∈ ℜ . În
multe aplicaţii se pune problema evaluării, în orice punct x * ∈ [a , b] , a funcţiei
f, a derivatelor acesteia sau a integralei definite: d
f ( x * ), f ′( x * ), f ′′( x * ), … , ∫ f ( x ) ⋅ dx, a ≤ c < d ≤ b . c
În funcţie de natura problemei, pot exista mai multe situaţii descrise în continuare. I.)
Funcţia f este cunoscută analitic prin una sau mai multe expresii, în general complicate sau dificil de evaluat, derivat sau integrat. În această categorie intră funcţiile cunoscute prin una sau mai multe formule explicite, funcţiile cunoscute sub forma unei serii (în general infinite) şi funcţiile care sunt soluţii ale unor ecuaţii diferenţiale (integro-diferenţiale).
II.) Funcţia f nu este cunoscută analitic, ci printr-un şir de valori. Astfel, având un şir de argumente {x i }i = 0,..., n , x i ∈ [a , b], i = 0, … , n distincte, acestea determină o divizare a intervalului [a , b] : Δ [a , b ] : a ≤ x 0 < … < x i < … < x n ≤ b . Corespunzător, sunt cunoscute şi valorile funcţiei f în aceste puncte: {x i , f ( x i )}i =0,..., n . În această situaţie sunt funcţiile ale căror valori: se găsesc în anumite tabele uzuale specifice diferitelor domenii de aplicaţie, provin în urma unor măsurători experimentale sau sunt rezultatul aplicării unui algoritm numeric, cu număr de paşi cunoscut dinainte sau nu (algoritmul este oprit la o anumită iteraţie). În general, în aceste cazuri valorile funcţiei f sunt afectate de erori. Rezolvarea problemei generale enunţate anterior se bazează pe găsirea unei funcţii F = F( x ) cu o expresie în general simplă, uşor de evaluat, derivat sau integrat, care să aproximeze cât mai bine funcţia f: ∀x * ∈ [a , b], F( x * ) ≅ f ( x * ) .
222
7.
Aproximarea numerică a funcţiilor
Abordarea generală pentru o astfel de problemă utilizează o mulţime de funcţii: M = {ϕ / ϕ : [a , b] → ℜ} , unde ϕ sunt funcţii, în general, elementare (simple). Mulţimea M poate fi înzestrată cu o structură de spaţiu liniar de funcţii. Astfel, în acest spaţiu, există un număr de funcţii liniar independente, care formează o bază de funcţii de aproximare: ϕ 0 ( x ), ϕ1 ( x ), … , ϕ k ( x ), … ,
∑ c k ⋅ ϕ k (x) = 0 ⇔ c k
= 0, ∀x ∈ [a , b] .
k
Ca urmare, soluţia generală a problemei de aproximare este de a exprima funcţia aproximantă, F( x ) , drept o combinaţie liniară de funcţii elementare aparţinând mulţimii M. Fie m + 1 astfel de funcţii elementare liniar independente. Atunci se poate scrie: F( x ) = Fm ( x ) = c 0 ⋅ ϕ 0 ( x ) + … + c m ⋅ ϕ m ( x ) .
(7.1)
Funcţia Fm ( x ) se numeşte polinom generalizat, m fiind ordinul (gradul) polinomului generalizat. Aproximarea bazată pe acesta se numeşte aproximare cu polinoame generalizate. Exemplul 7.1:
Dacă setul de funcţii elementare este ϕ k ( x ) : 1, x , x 2 , … , x m , atunci aproximarea folosind: F( x ) = Pm ( x ) = c 0 + c1 ⋅ x + … + c m ⋅ x m ,
(7.2)
se numeşte aproximare cu polinoame algebrice. Dacă ϕ k ( x ) : 1, cos( x ), sin( x ), … , cos(m ⋅ x ), sin(m ⋅ x ) , atunci aproximarea folosind: F( x ) = Tm ( x ) = a 0 + a 1 ⋅ cos( x ) + b 1 ⋅ sin( x ) + … + a m ⋅ cos( m ⋅ x ) + b m ⋅ sin( m ⋅ x )
se numeşte aproximare cu polinoame trigonometrice. Indiferent de abordare, rezolvarea problemei necesită răspuns la următoarele chestiuni: determinarea setului de funcţii {ϕ k ( x )}k = 0,1,... ; determinarea numărului necesar de funcţii, m + 1 ; determinarea coeficienţilor polinomului generalizat, {c k }k =0,1,...,m . Pentru a rezolva acestea, precum şi pentru a putea aprecia calitatea aproximării, mulţimea de funcţii M trebuie să aibă proprietăţi suplimentare. Astfel, trebuie să se poată defini pe această mulţime o funcţie care să permită aprecierea “apropierii” dintre funcţia f ( x ) şi aproximanta ei, F( x ) , oricare ar fi x ∈ [a , b ] .
7.1
Formularea problemei
223
Definiţie: Fie funcţia d : M × M → ℜ . Aceasta se numeşte funcţie distanţă, dacă următoarele proprietăţi sunt îndeplinite: (i) oricare ar fi f , g ∈ M , atunci d (f , g ) > 0 şi d (f , g) = 0 ⇔ f ≡ g ; (ii) oricare ar fi f , g ∈ M , atunci d (f , g ) = d (g, f ) ; (iii) oricare ar fi f , g, h ∈ M , atunci d (f , g ) ≤ d (f , h ) + d (h , g ) . Mulţimea M împreună cu distanţa d formează o structură de spaţiu metric. De regulă, funcţia d se defineşte prin intermediul funcţiei normă: || ⋅ || p : M → ℜ şi, astfel, mulţimea M are o structură de spaţiu liniar normat. Distanţele uzual folosite pentru cazul continuu, când funcţia f este cunoscută analitic, sunt: a.) d ∞ (f , F) =|| f ( x ) − F( x ) || ∞ = max {| f ( x ) − F( x ) |} . x∈[ a , b ]
În ipoteza că M este mulţimea funcţiilor continue pe intervalul [a , b] , atunci o astfel de abordare se numeşte aproximare uniformă. În acest caz, d ∞ (f , F) are semnificaţie de eroare absolută în metrică a funcţiei F( x ) , faţă de funcţia f ( x ) . b.)
d 2 (f , F) =|| f ( x ) − F( x ) || 2 =
b
∫ [f ( x ) − F( x )]
2
⋅ dx .
a
În ipoteza că M este mulţimea funcţiilor de pătrat integrabil pe intervalul [a , b] , o astfel de abordare se numeşte aproximare în medie pătratică. În acest caz, d 2 (f , F) nu mai are semnificaţia de eroare absolută în metrică a funcţiei F( x ) faţă de funcţia f ( x ) şi se numeşte cvasimetrică. Pentru cazul discret, când funcţia f este cunoscută pe baza unui set de valori {x i , f ( x i )}i =0,...,n , distanţele uzual folosite sunt: a.)
d ∞ (f , F) =|| f − F || ∞ = max{| f ( x i ) − F( x i ) |} , 0≤i ≤ n
(7.3)
în care s-au notat: f = [f ( x 0 ) … f ( x n )] T şi F = [ F( x 0 ) … F( x n )] T . Abordarea bazată pe această distanţă reprezintă aproximarea uniformă pentru cazul discret. b.)
d 2 (f , F) =|| f − F || 2 =
n
∑ [f ( x i ) − F( x i )]2
.
(7.4)
i =0
Abordarea bazată pe această distanţă reprezintă aproximarea în medie pătratică pentru cazul discret. Indiferent de abordarea folosită, distanţa dintre funcţiile f şi F se poate exprima sub forma generală: d p (f , F) = Φ (m, c 0 , c1 , … , c m ) . Criteriul folosit
224
7.
Aproximarea numerică a funcţiilor
uzual în aproximare este ca funcţia Φ să fie minimă, de unde rezultă coeficienţii c 0 , c1 , … , c m pentru o valoare fixată a ordinului m al polinomului de aproximare şi o anumită alegere a bazei de funcţii de aproximare. În continuarea acestui capitol, discuţia se restrânge la cazul discret şi, aici, aproximarea cu polinoame algebrice.
7.2
Interpolarea polinomială
Folosind una din distanţele (7.3), (7.4) şi polinomul algebric (7.2), F( x ) = Pm ( x ) , cunoscând setul de puncte {x i , f ( x i )}i =0,...,n , se impune o
condiţie de tipul: d p (f , Pm ) = minim. Acest minim are chiar valoarea zero pentru m = n şi:
Pm ( x i ) = f ( x i ), i = 0, … , n .
Aşadar, funcţia aproximantă F este un polinom de grad maxim n, fiind cunoscute n + 1 valori ale funcţiei f ( x ) . Polinomul de aproximare trece prin aceste puncte, {x i , f ( x i )}i =0,...,n . Un astfel de polinom se numeşte polinom de interpolare, iar procedura de detrminare a coeficienţilor acestuia se numeşte interpolare polinomială numerică. Punctele în care funcţia este cunoscută se numesc puncte de interpolare sau noduri de interpolare. Pentru funcţia f cunoscută prin intermediul unui şir de valori corespunzător unei divizări Δ a intervalului de definiţie al funcţiei, [a,b], se doreşte determinarea unui polinom de grad mai mic sau egal cu n: Pn ( x ) = c 0 + c1 ⋅ x + … + c n ⋅ x n , astfel încât:
Pn ( x i ) = f ( x i ), i = 0, … , n .
(7.5)
7.2.1 Interpolarea Lagrange Teoremă: În contextul problemei de interpolare, dacă punctele divizării Δ [a ,b ] sunt distincte, atunci oricare ar fi y 0 , y1 , … , y i , … , y n , cu y i = f ( x i ), i = 0, … , n , există şi este unic un polinom L( x ) , de grad maxim n, pentru care sunt îndeplinite condiţiile de interpolare:
L( x i ) = f ( x i ), i = 0, … , n .
(7.6)
7.2
Interpolarea polinomială
225
Demonstraţia foloseşte aşa-numitul polinom de interpolare construit de Lagrange: L( x ) =
1 ⋅ (x − x 1 ) ⋅ … ⋅ (x − x j ) ⋅ … ⋅ (x − x n ) 1 ⋅ (x 0 − x1 ) ⋅ … ⋅ (x 0 − x j ) ⋅ … ⋅ (x 0 − x n )
+ +
⋅ y0 + …
( x − x 0 ) ⋅ … ⋅ ( x − x j−1 ) ⋅ 1 ⋅ ( x − x j+1 ) ⋅ … ⋅ ( x − x n ) ( x j − x 0 ) ⋅ … ⋅ ( x j − x j−1 ) ⋅ 1 ⋅ ( x j − x j+1 ) ⋅ … ⋅ ( x j − x n ) ( x − x 0 ) ⋅ … ⋅ ( x − x j ) ⋅ … ⋅ ( x − x n −1 ) ⋅ 1 ( x n − x 1 ) ⋅ … ⋅ ( x n − x j ) ⋅ … ⋅ ( x n − x n −1 ) ⋅ 1
⋅ yj +…
⋅ yn .
Polinomul L( x ) are n + 1 termeni, fiecare termen având în expresia sa un raport de produse de n factori. Aşadar, polinomul L( x ) are gradul cel mult n. Rapoartele de produse care apar în expresia polinomului se notează: x − xk , k =0 x j − x k n
L j (x ) = ∏
j = 0, … , n .
k≠ j
Se constată că:
⎧1, i = j , unde i, j ∈{0, 1, … , n} . L j (x i ) = ⎨ ⎩0, i ≠ j
(7.7)
Astfel, polinomul L( x ) se poate scrie sub forma: n
L( x ) = ∑ L j ( x ) ⋅ y j .
(7.8)
j= 0
Ţinând cont de expresiile (7.7) şi (7.8), rezultă: L( x i ) = y i , i = 0, … , n , deci sunt îndeplinite condiţiile de interpolare (7.6). S-a demonstrat până acum faptul că există un polinom de interpolare. Polinoamele {L j ( x )} j=0,1,..., n formează baza de interpolare Lagrange determinată de către divizarea Δ a intervalului [a,b]. Se demonstrează, în cele ce urmează, unicitatea polinomului de inetrpolare Lagrange. Pentru aceasta, se presupune, prin reducere la absurd, că există un alt polinom, G ( x ) , de grad cel mult n, pentru care G ( x i ) = y i , i = 0, … , n . Fie polinomul H( x ) = L( x ) − G ( x ) . La rândul său, acesta este un polinom de grad maxim n. Evaluând polinomul H( x ) în punctele divizării Δ [ a , b ] , se obţine:
H( x i ) = L( x i ) − G ( x i ) = 0, i − 0, … , n . Rezultă, aşadar, că un polinom de grad maxim n, H( x ) , are n + 1 zerouri, ceea ce înseamnă că H este polinomul identic nul. De aici rezultă că G ( x ) ≡ L( x ) . Aşadar, polinomul de interpolare Lagrange este unic.
226
7.
Aproximarea numerică a funcţiilor
Pentru găsirea unei valori aproximative pentru f ( x * ) , nu se recomandă determinarea coeficienţilor c 0 , c1 , … , c n ai polinomului de interpolare (7.5) şi apoi evaluarea sa, deoarece numărul de operaţii în virgulă mobilă ar creşte, fapt care ar conduce la o creştere a erorilor de aproximare. Valoarea f ( x * ) se recomandă a fi aproximată de L( x * ) . Pentru x * ≠ x i , i = 0, … , n , evaluarea polinomului L( x * ) necesită un număr de operaţii în virgulă mobilă de ordinul lui n 2 . Polinomul Lagrange fiind unic şi realizând interpolarea, orice altă metodă de interpolare polinomială va conduce la acelaşi rezultat, cel puţin teoretic, dacă erorile de calcul nu sunt luate în considerare. Referitor la precizia estimării (aproximării), se enunţă următorul rezultat. Propoziţie: Fie o funcţie f ( x ) continuă şi cu derivate continue până la ordinul n pe intervalul [ x 0 , x n ] , f ∈ C [nx 0 , x n ] şi de n + 1 ori derivabilă pe acelaşi interval, f ∈ D [nx+01, x n ] . În condiţiile interpolării Lagrange, are loc egalitatea:
f ( x ) = L( x ) + R n ( x ) , în care polinomul R n ( x ) este restul de interpolare Lagrange, cu expresia: R n (x) =
( x − x 0 ) ⋅ ( x − x 1 ) ⋅ … ⋅ ( x − x n ) ( n +1) ⋅f (c), c ∈ ( x 0 , x n ) . (n + 1)!
În plus, notând h = max {x i +1 − x i } , dacă M n +1 = i = 0,..., n −1
sup {| f ( n +1) ( x ) |} , x∈[ x 0 , x n ]
atunci: | R n ( x ) |≤ [h n +1 / 4 ⋅ (n + 1)] ⋅ M n +1 .
Interpolarea Lagrange, aşa cum a fost definită în versiunea ei originală, poate eşua în anumite situaţii, în sensul că se pot produce erori de aproximare semnificative. Exemplul 7.2:
Se consideră funcţia Runge: y( x ) = 1 /(1 + 25 ⋅ x 2 ), x ∈ [−1, 1] . Se consideră n + 1 puncte x i , i = 0, … , n , echidistante în intervalul [−1, 1] . Lungimea intervalului dintre două puncte consecutive este: h = x i +1 − x i = ( x n − x 0 ) / n , i = 0, … , n − 1, x 0 = −1, x n = 1 . Fie n = 5 , deci punctele x i sunt: − 1, − 0.6, − 0.2, 0.2, 0.6, 1 . Valorile y i corespunzătoare se obţin evaluând y( x ) în punctele x i . În Figura 7.1 sunt reprezentate grafic aceste noduri de interpolare, precum şi polinomul de
7.2
Interpolarea polinomială
227
interpolare Lagrange corespunzător, p 5 ( x ) , evaluat cu un pas mai mic decât cel utilizat la interpolare, h. Se observă că rezultatele aproximării sunt afectate de erori apreciabile. În continuare, se creşte gradul polinomului Lagrange la n = 20 . Sunt necesare 21 puncte care vor fi considerate, de asemenea, echidistante: h = 0.1 ⇒ Δ : − 1, − 0.9, − 0.8, … , 0, 0.1, … , 0.8, 0.9, 1 . Repetând procedeul, se obţine polinomul de interpolare Lagrange p 20 ( x ) reprezentat grafic în Figura 7.1. Se observă că pentru | x |< 0.5 , aproximarea prin intermediul polinomului p 20 ( x ) este satisfăcătoare, după care apar diferenţe semnificative. Se repetă procedeul crescând gradul polinomului de interpolare. Ca urmare, cu cât gradul n este mai mare, cu atât abaterile la capetele intervalului vor fi mai mari. Funcţia y( x ) este aproximată satisfăcător doar pe un anumit subinterval al intervalului [−1, 1] , prin polinoame Lagrange. Apare de aici ideea de a nu folosi un polinom unic, care să aproximeze o funcţie f ( x ) pe întreg intervalul [a , b] . Se foloseşte o mulţime de polinoame, fiecare dintre acestea aproximând cât mai bine funcţia f pe un anumit subinterval al intervalului [a , b] . Acest tip de aproximare se numeşte aproximare polinomială pe porţiuni sau aproximare cu “polinoame glisante”.
y=
1 1 + 25 ⋅ x 2
p 20 ( x ) p 5 (x )
Fig. 7.1. Exemplul lui Runge: eşecul interpolării Lagrange cu polinom unic
228
7.
Aproximarea numerică a funcţiilor
Astfel, în cazul interpolării Lagrange, având n + 1 noduri de interpolare, pentru o valoare x * ≠ x i , i = 0, … , n , x * ∈ [ x 0 , x n ] , se găseşte subintervalul ( x k , x k +1 ) căruia îi aparţine valoarea x * şi se construieşte un polinom Lagrange de grad m < n (cel mult n). Se utilizează, astfel, o bază de puncte centrată în raport cu valoarea x * : {x m , … , x k , x k +1 , … , x m } . k−
2
k+
2
În acest fel, erorile sunt diminuate, restul de interpolare Lagrange având valoare minimă. 7.2.2 Interpolarea prin intermediul funcţiilor spline
În general, folosirea unui singur polinom de interpolare, p n ( x ) , pentru aproximarea unei funcţii f ( x ) pe un întreg interval unde funcţia este cunoscută, eşuează: →∞ ⎯→ ∞, ∀x ∈ [a , b] , | f ( x ) − p n ( x ) | ⎯n⎯
aşa cum s-a prezentat în Exemplul 7.2. Apare, atunci, ideea folosirii interpolării polinomiale pe porţiuni, cum s-a menţionat în comentariile anterioare. Funcţiile spline au fost introduse pentru a denumi funcţii formate din polinoame definite pe subintervale adiacente şi care se racordează în capetele subintervalelor împreună cu un număr de derivate. Denumirea de spline (din limba engleză, intraductibilă în limba română) provine din mecanică, reprezentând numele unui dispozitiv folosit de desenatori pentru a trasa o curbă netedă. Spline este un instrument format dintr-o bandă metalică subţire, susţinută prin intermediul unor greutăţi. Acestea din urmă pot fi astfel aranjate, încât banda metalică să treacă prin anumite puncte date. Numărul greutăţilor poate să fie mai mic sau egal cu numărul punctelor. Definiţie: Fiind dată reţeaua de puncte Δ a intervalului [a , b] : a ≤ x 0 < x 1 < … < x i < x i +1 < … < x n ≤ b , se numeşte funcţie spline de ordinul m pe reţeaua Δ, notată s Δ ( x ) , o funcţie care îndeplineşte următoarele condiţii: (i) restricţia la intervalul [ x i , x i +1 ], i = 0, … , n − 1 , s Δ ( x ) [ x , x i
mulţimii polinoamelor algebrice de grad maxim m;
i +1 ]
, aparţine
7.2
Interpolarea polinomială
229
(ii) funcţia s Δ ( x ) este continuă, cu derivate continue până la ordinul m − 1 pe intervalul [a , b] : s Δ ( x ) ∈ C [ma −, b1] . Dacă m = 1 , atunci funcţiile spline se numesc liniare, dacă m = 2 , atunci ele se numesc funcţii spline cuadrice, iar dacă m = 3 , atunci funcţiile spline se numesc cubice.
În continuare, discuţia se referă la cazul m = 3 , având în vedere utilitatea practică. Propoziţie: Fiind dată funcţia f ( x ) , cunoscută prin şirul de puncte distincte {x i , f ( x i )}i =0,…, n , unde x i ∈ Δ [ a , b ] , cu x i ≠ x j , i, j = 0, … , n , i ≠ j , există şi este unică o funcţie spline cubică, funcţie care interpolează funcţia f:
s Δ ( x i ) = y i , i = 0, … , n not
unde y i = f ( x i ), i = 0, … , n .
Demonstraţia acestui rezultat constituie chiar algoritmul de determinare a funcţiei s Δ ( x ) . Pentru aceasta, se consideră funcţia spline cubică de forma: s Δ (x) [x
i , x i +1 ]
= a i ⋅ (x − x i ) 3 + b i ⋅ (x − x i ) 2 + c i ⋅ (x − x i ) + d i
. (7.9) i = 0, … , n − 1 Existenţa şi unicitatea funcţiei s Δ ( x ) este echivalentă cu existenţa şi unicitatea seturilor de coeficienţi {a i , b i , c i , d i }i =0,…,n −1 , trebuind a fi determinaţi 4 ⋅ n parametri. Pentru a calcula aceşti parametri, se utilizează condiţiile din definiţia funcţiilor spline: (C1) condiţii de interpolare: s Δ ( x i ) = y i , i = 0, ….n ceea ce înseamnă (n + 1) condiţii; (C2) continuitatea funcţiei s Δ ( x ) : not
not
lim s Δ ( x ) = s Δ ( x i − ) = s Δ ( x i + ) = lim s Δ ( x ), i = 1, … , n − 1 ,
x →xi x
(C3)
x →x i x >xi
ceea ce înseamnă (n − 1) condiţii; continuitatea primei derivate, s ′Δ ( x ) : not
not
lim s ′Δ ( x ) = s ′Δ ( x i − ) = s ′Δ ( x i + ) = lim s ′Δ ( x ), i = 1, … , n − 1 ,
x →xi x
ceea ce înseamnă (n − 1) condiţii;
x →x i x >xi
230
(C4)
7.
Aproximarea numerică a funcţiilor
continuitatea derivatei a doua, s ′Δ′ ( x ) : not
not
lim s ′Δ′ ( x ) = s ′Δ′ ( x i − ) = s ′Δ′ ( x i + ) = lim s ′Δ′ ( x ), i = 1, … , n − 1 ,
x →xi x
x →x i x >xi
ceea ce înseamnă (n − 1) condiţii. Din (C1) ÷ (C4) rezultă un total de 4 ⋅ n − 2 condiţii. Pentru determinarea celor 4 ⋅ n parametri, mai sunt necesare încă două condiţii suplimentare impuse funcţiilor spline cubice de interpolare. În funcţie de cum sunt formulate aceste două condiţii, rezultă diferite tipuri de funcţii spline cubice. Există câteva posibilităţi de alegere a celor două condiţii suplimentare necesare, după cum urmează. 1. Folosirea informaţiilor furnizate de către perechile de interpolare, {x i , f ( x i )}i =0,…, n , precum şi aproximarea funcţiei f prin aşa-numitele diferenţe divizate la dreapta:
Δ( 0) ( x i ) = f ( x i ) = y i , Δ(1) ( x i ) =
y i +1 − y i ≅ f ′( x i ), x i +1 − x i
Δ( 2) ( x i ) =
Δ(1) ( x i +1 ) − Δ(1) ( x i ) 1 ≅ ⋅ f ′′( x i ), x i+2 − x i 2
Δ(3) ( x i ) =
Δ( 2) ( x i +1 ) − Δ( 2) ( x i ) 1 ≅ ⋅ f ′′′( x i ), x i +3 − x i 6
şi diferenţe divizate la stânga: ∇ ( 2) ( x i ) − ∇ ( 2) ( x i −1 ) y − y i −1 ∇ (1) ( x i ) = i , … , ∇ ( 3) ( x i ) = . x i − x i −1 x i − x i −3 Folosind primele patru perechi de puncte {x i , f ( x i )}i =0,…,3 , se poate calcula diferenţa divizată la dreapta de ordinul 3, în punctul x 0 , care va aproxima valoarea derivatei a treia f ′′′( x 0 ) : 1 Δ(3) ( x 0 ) ≅ ⋅ f ′′′( x 0 ) . 6 Folosind ultimele patru perechi de puncte {x i , f ( x i )}i = n −3,…,n , se calculează diferenţa divizată la stânga de ordinul 3, în punctul x n , care aproximează valoarea derivatei a treia f ′′′( x n ) : 1 ∇ (3) ( x n ) ≅ ⋅ f ′′′( x n ) . 6 Ţinând cont de expresia (7.9), rezultă s ′Δ′′ ( x ) [ x , x ] = 6 ⋅ a i , i = 1, … , n − 1 . i
Condiţiile suplimentare care rezultă sunt:
i +1
7.2
Interpolarea polinomială
231
(C5.1)
s ′Δ′′ ( x 0 ) = 6 ⋅ Δ(3) ( x 0 )
(C5.2)
s ′Δ′′ ( x n ) = 6 ⋅ ∇ (3) ( x n )
2. Funcţiile spline cubice pentru care sunt îndeplinite două din condiţiile: f (x 0 ) = f (x n ) (C5.1) f ′( x 0 ) = f ′( x n ) (C5.2) (C5.3) f ′′( x 0 ) = f ′′( x n ) se numesc funcţii spline cubice periodice. 3. Funcţiile spline pentru care sunt îndeplinite condiţiile: (C5.1) lim s ′Δ′ ( x ) = 0 x →x 0 x >x0
lim s ′Δ′ ( x ) = 0
(C5.2)
x →x n x
se numesc funcţii spline cubice naturale. Rezultă că, în acest caz, polinoamele de racord în punctele x 0 şi x n sunt polinoame de gradul întâi sau se comportă în vecinătatea punctelor x 0 şi x n ca polinoame de gradul întâi. De remarcat este faptul că funcţiile spline cubice naturale au proprietatea că au cea mai mică curbură: xn
∫
[s ′Δ′ ( x )] 2 ⋅ dx =
x0
n −1 x i +1
∑ ∫ [s′′ (x ) Δ
i =0 x i
[ x i , x i +1 ]
] 2 ⋅ dx = minim ,
în comparaţie cu orice alt polinom de interpolare. Ca urmare, prin condiţiile de racordare în noduri impuse funcţiei s Δ ( x ) şi derivatelor sale, funcţiile spline cubice naturale sunt cele mai netede funcţii care interpolează funcţia f. În continuare, discuţia se restrânge la cazul funcţiilor spline cubice naturale. Continuând demonstraţia propoziţiei, în cele ce urmează se determină coeficienţii funcţiei s Δ ( x ) . Prin drivarea relaţiei de definiţie (7.9), se obţin următoarele expresii:
s ′Δ ( x ) [ x , x
i +1 ]
s ′Δ′ ( x ) [ x , x
i +1 ]
i
i
= 3 ⋅ a i ⋅ ( x − x i ) 2 + 2 ⋅ b i ⋅ ( x − x i ) + c i , i = 0, … , n − 1 , = 6 ⋅ a i ⋅ ( x − x i ) + 2 ⋅ b i , i = 0, … , n − 1 .
Se realizează notaţiile: h i = x i +1 − x i , i = 0, … , n − 1 , S i = s ′Δ′ ( x i ), i = 0, … , n . Din condiţiile (C1) şi (C2) rezultă: s Δ ( x i ) = y i . Cum s Δ ( x i ) [ x , x i
rezultă:
d i = y i , i = 0, … , n − 1 .
i +1 ]
= di ,
(7.10)
232
7.
Aproximarea numerică a funcţiilor
În continuare se exprimă coeficienţii a i , b i , c i , d i în funcţie de valorile derivatelor de ordinul al doilea, S i . Se ajunge, astfel, la un sistem determinat de ecuaţii algebrice liniare, având necunoscutele S i , i = 1, … , n − 1 , ţinând cont de faptul că S 0 = S n = 0 . Din condiţia (C4) rezultă: s ′Δ′ ( x i ) [ x , x i
Pe de altă parte: s ′Δ′ ( x i +1 ) [ x , x i
i +1 ]
i +1 ]
= 2 ⋅ b i ⇒ b i = S i / 2, i = 0, … , n − 1 .
(7.11)
= 6 ⋅ a i ⋅ ( x i +1 − x i ) + 2 ⋅ b i = 6 ⋅ a i ⋅ h i + S i = S i +1 ,
de unde rezultă că:
S i +1 − S i , i = 0, … , n − 1 . 6 ⋅ hi Din condiţia de interpolare (C1) impusă funcţiei s Δ ( x ) , rezultă că: ai =
s Δ ( x i +1 ) [ x , x i
i +1 ]
(7.12)
= y i +1 .
Ca urmare: y i +1 = a i ⋅ ( x i +1 − x i ) 3 + b i ⋅ ( x i +1 − x i ) 2 + c i ⋅ ( x i +1 − x i ) + d i , de unde rezultă, folosind (7.10), (7.11) şi (7.12):
c i = ( y i +1 − y i ) / h i − h i ⋅ (S i +1 + 2 ⋅ S i ) / 6 .
(7.13)
Din condiţia (C3) rezultă: s ′Δ ( x i ) [ x , x ] = s ′Δ ( x i + ) = c i , i
s ′Δ ( x i ) [ x
i +1
i −1 , x i ]
= s ′Δ ( x i − ) = 3 ⋅ a i −1 ⋅ ( x i − x i −1 ) 2 + 2 ⋅ b i −1 ⋅ ( x i − x i −1 ) + c i −1 .
Dar s ′Δ ( x i + ) = s ′Δ ( x i − ) şi, folosind relaţiile (7.11), (7.12) şi (7.13), se obţine: y i +1 − y i h i S − S i −1 2 S − ⋅ (S i +1 + 2 ⋅ S i ) = 3 ⋅ i ⋅ h i −1 + 2 ⋅ i −1 ⋅ h i −1 hi 6 6 ⋅ h i −1 2 +
y i − y i −1 h i −1 − ⋅ (S i + 2 ⋅ S i −1 ), i = 1, … , n − 1. h i −1 6
Efectuând calculele şi ţinând cont de condiţia (C5) care defineşte funcţiile spline cubice naturale ( S 0 = S n = 0 ) rezultă un sistem determinat de ecuaţii algebrice liniare, de ordinul n − 1 , de forma: M ⋅S = Y , în care:
(7.14)
7.2
Interpolarea polinomială
233
h1 0 ⎡2 ⋅ (h 0 + h 1 ) ⎢ h1 2 ⋅ (h 1 + h 2 ) h2 ⎢ ⎢ 0 h2 2 ⋅ (h 2 + h 3 ) M=⎢ ⎢ ⎢ 0 0 0 ⎢ 0 0 0 ⎣⎢
0 …
0
0 … h3 …
0 0
0 … h n −3 0 …
0
⎤ ⎥ 0 0 ⎥ ⎥ 0 0 ⎥ ⎥ ⎥ 2 ⋅ ( h n −3 + h n − 2 ) h n −2 ⎥ h n −2 2 ⋅ (h n − 2 + h n −1 )⎦⎥ 0
0
S = [S1 … S n −1 ] T Y = [6 ⋅ (
y 2 − y1 y1 − y 0 y − y n −1 y n −1 − y n − 2 T − ) … 6⋅( n − )] h1 h0 h n −1 h n −2
Dar punctele x i sunt distincte: x i < x i +1 , i = 0, … , n − 1 , deci h i > 0 , i = 0, … , n − 1 . De aici rezultă că M este o matrice diagonal dominantă, cu elemente pozitive, simetrică. Aşadar, matricea M este bine condiţionată, de unde rezultă că este nesingulară. Aceasta înseamnă că există şi este unică soluţia S , sau, altfel spus, există şi sunt unice seturile de coeficienţi {a i , b i , c i , d i }i =0,…,n −1 . Ca urmare, există şi este unică funcţia s Δ ( x ) . Având în vedere proprietăţile matricei M, rezolvarea sistemului (7.14) se poate realiza prin eliminare gaussiană directă, matricea sistemului fiind diagonal dominantă. Structura matricei transformate este:
⎡α 1 ⎢0 ⎢ ⎢ ⎢ ⎢0 ⎢⎣ 0
h1 0 0 … 0 α2 h2 0 … 0
0 0
… 0 0
0 0 … 0 α n −2 0 0…0 0
0 ⎤ 0 ⎥⎥ ⎥. ⎥ h n −2 ⎥ α n −1 ⎥⎦
Funcţia spline cubică naturală de interpolare se determină cu următorul algoritm: citeşte {x i , y i }i =0,…, n , y i = f ( x i )
• iniţializare: h i ← x i +1 − x i , i = 0, … , n − 1 • pas 1: calcul elemente sistem cu matrice superior bidiagonală (sistem transformat): α1 ← 2 ⋅ (h 0 + h 1 )
⎛ y − y1 y1 − y 0 ⎞ ⎟ β1 ← 6 ⋅ ⎜⎜ 2 − h 0 ⎟⎠ ⎝ h1 ┌ pentru i = 2, … , n − 1 execută
234
7.
Aproximarea numerică a funcţiilor
│ α i ← 2 ⋅ ( h i −1 + h i ) −
h i2−1 α i −1
⎛ y − y i y i − y i −1 ⎞ h ⎟⎟ − β i −1 ⋅ i −1 − │ β i ← 6 ⋅ ⎜⎜ i +1 α i −1 h i −1 ⎠ ⎝ hi └ • pas 2: rezolvare sistem cu matrice superior bidiagonală prin substituţie inversă: β S n −1 ← n −1 α n −1 ┌ pentru i = n − 2, … ,1 execută β − h i ⋅ S i +1 │ Si ← i αi └ • pas 3: calcul coeficienţi funcţie spline cubică (se consideră S 0 = S n = 0 ): ┌ pentru i = 0, … , n − 1 execută S − Si │ a i ← i +1 6 ⋅ hi S │ bi ← i 2 y i +1 − y i h i − ⋅ (S i +1 + 2 ⋅ S i ) │ ci ← hi 6 │ di ← yi └ Pentru determinarea aproximativă a valorii f ( x * ), x * ≠ x i , i = 0, … , n , x * ∈ [a , b] , se procedează astfel: • •
se găseşte indexul k pentru care x * ∈ [ x k , x k +1 ] ; se extrage setul de coeficienţi {a k , b k , c k , d k } ;
•
se calculează s Δ ( x * )
7.3
[ x k , x k +1 ]
≅ f (x * ) .
Aproximarea polinomială în medie pătratică
Se consideră funcţia f cunoscută prin punctele {x i , f ( x i )}i =1,…, N . Problema este de a determina un polinom de gradul n: not
p n ( x ) = c 0 + c1 ⋅ x + … + c n ⋅ x n = y( x ) ,
7.3
Aproximarea polinomială în medie pătratică
235
unde n ≤ N − 1 , în general (uzual n << N ), care să aproximeze ”cât mai bine” funcţia dată. Utilizând notaţiile: Yi = f ( x i ) , e i = Yi − y( x i ) , i = 1, … , N , se spune că se realizează o aproximare în medie pătratică dacă se minimizează, în raport cu setul de coeficienţi {c 0 , … , c n } , funcţia criteriu definită prin: N
N
i =1
i =1
S(c 0 , … , c n ) = ∑ e i2 = ∑ (Yi − y( x i )) 2 (7.15)
N
= ∑ (Yi − c 0 − c1 ⋅ x i − … − c n ⋅ x in ) 2 i =1
Pentru gradul n fixat al polinomului de aproximare, condiţiile de minim pentru funcţia criteriu S sunt: ⎡ ∂S ⎤ ⎡ ∂ 2S ⎤ (7.16) = 0 n +1 , ΔS = ⎢ >0. ∇S = ⎢ ⎥ ⎥ ⎣⎢ ∂c j ⎦⎥ j=0,…,n ⎣⎢ ∂c j ∂c k ⎦⎥ j,k =0,…,n Condiţiile de minim referitoare la derivatele parţiale de ordinul întâi ale funcţiei S (gradientul funcţiei S) sunt: N ∂S = ∑ 2 ⋅ (Yi − c 0 − c1 ⋅ x i − … − c n ⋅ x in ) ⋅ ( −1) = 0, ∂c 0 i =1 N ∂S = ∑ 2 ⋅ (Yi − c 0 − c1 ⋅ x i − … − c n ⋅ x in ) ⋅ (− x i ) = 0, ∂c1 i =1
N ∂S = ∑ 2 ⋅ (Yi − c 0 − c1 ⋅ x i − … − c n ⋅ x in ) ⋅ (− x in ) = 0. ∂c n i =1
Se obţine, astfel, următorul sistem determinat de ecuaţii algebrice liniare, de ordinul n + 1 , cu necunoscutele c i , i = 0, … , n : ⎡ N ⎢ ⎢∑ xi ⎢ ⎢ n ⎢⎣∑ x i unde prin notaţia
∑ x in ⎤⎥ ⎡c 0 ⎤ ⎡⎢ ∑ Yi ⎤⎥ ⎢ ⎥ ∑ x in +1 ⎥ ⋅ ⎢ c1 ⎥ = ⎢ ∑ (x i ⋅ Yi ) ⎥ ,
∑ x i ∑ x i2 ∑ x i2 ∑ x 3i
… …
∑ x in +1 ∑ x in + 2
… …
∑ (.)
∑ (.) .
se înţelege
⎥ ⎢ ⎥ ⎥ ⎢ ⎥ ∑ x i2⋅n ⎥⎦ ⎣c n ⎦
⎢ ⎥ ⎢ ⎥ n ⎢⎣∑ ( x i ⋅ Yi )⎥⎦
(7.17)
N
i =1
Notând vectorul necunoscutelor cu x , matricea sistemului cu A şi vectorul termenilor liberi cu b , ecuaţia (7.17) se scrie sub forma:
A⋅x =b.
(7.18)
236
7.
Aproximarea numerică a funcţiilor
În general, calculul elementelor sistemului (7.18) conduce la disproporţii mari între elementele matricei, de unde rezultă matrice A prost condiţionate sau aproape singulare. Rezolvarea sistemului (7.18) este recomandabilă pentru ordine mici ale polinomului de interpolare, n = 1 ÷ 4 . În fapt, sistemul (7.18) reprezintă sistemul de ecuaţii normale corespunzător sistemului supradeterminat cu N ecuaţii şi n + 1 necunoscute, care se rezolvă în sensul celor mai mici pătrate: C⋅x =d, (7.19) ⎡1 x 1 x 12 … x 1n ⎤ ⎡ Y1 ⎤ ⎢ ⎢Y ⎥ 2 n ⎥ 1 x2 x2 … x2 ⎥ C=⎢ , d=⎢ 2⎥. ⎢ ⎥ ⎢ ⎥ … ⎢ ⎥ ⎢ ⎥ 2 n ⎢⎣1 x N x N … x N ⎥⎦ ⎣YN ⎦ Sistemul (7.19) se obţine impunând egalităţile: c 0 + c1 ⋅ x i + c 2 ⋅ x i2 + … + c n ⋅ x in = Yi , i = 1, ….N . Astfel, legătura dintre sistemele (7.18) şi (7.19) este: A = C T ⋅ C , b = C T ⋅ d . Sistemul supradeterminat (7.19) are soluţie unică dacă rangul matricei C este n + 1 , ceea ce este echivalent cu C T ⋅ C > 0 . Aceasta este echivalentă cu ⎡ ∂ 2S ⎤ ΔS = ⎢ > 0 , în felul acesta fiind îndeplinită şi a doua condiţie de ⎥ ⎢⎣ ∂c j ∂c k ⎥⎦ j, k =0,…,n minim din (7.16). Cele expuse până acum justifică, pentru această abordare, denumirea de aproximare polinomială în sensul celor mai mici pătrate. În general, se recomandă rezolvarea sistemului (7.19) prin transformări ortogonale sau folosind descompunerea valorilor singulare. Pentru ultima abordare, se determină şi gradul p − 1 al polinomului de aproximare din condiţia rang(C) = p < n + 1 , dacă n este ales, necorespunzător, prea mare. Astfel, cu cât gradul n al polinomului de aproximare creşte, cu atât se vor reduce deviaţiile dintre Yi − p n ( x i ) = f ( x i ) − p n ( x i ) . La limită, pentru n = N − 1 , se obţin diferenţe nule, deoarece: Yi = p N −1 ( x i ) = f ( x i ), i = 1, … , N . Aceasta face ca p N−1 ( x ) să reprezinte un polinom de interpolare şi nu unul de aproximare în medie pătratică. Un polinom de aproximare în medie pătratică ”trece” printre punctele de aproximare, urmărindu-se minimizarea funcţiei criteriu. Pentru ilustrarea practică a acestor aspecte, se recomandă abordarea problemei de studiu P7.1 prezentată în cadrul subcapitolului Error! Reference source not found..
7.4
Derivarea numerică
7.4
237
Derivarea numerică
Fie funcţia f : [a , b] → ℜ , f = f ( x ) şi Δ o divizare a intervalului [a , b] : Δ [ a , b ] : {x i }i =0,…,n , x i < x i +1 , i = 0,…, n − 1 . Se notează f i = f ( x i ), i = 0,…, n . Problema derivării numerice constă în aproximarea valorilor derivatelor funcţiei f: f ′( x * ), f ′′( x * ),… pentru orice argument x * ∈ [a , b] , utilizând setul de puncte {x i }i =0,…,n . Această problemă este rezolvabilă în funcţie de proprietăţile pe care le are funcţia f (continuitate, derivabilitate). Astfel, dacă funcţia f îndeplineşte condiţiile necesare aproximării numerice, atunci se găseşte un polinom rezonabil de aproximare. Mai departe, acesta poate fi derivat şi se poate evalua derivata sa în diverse din intervalul [a , b] . Acest principiu se aplică cu succes pentru primele două derivate, în general. Operaţiunea de derivare numerică este o problemă dificilă, de obicei, deoarece dacă datele sunt afectate de eroare (de exemplu, zgomot de măsură), atunci operaţia de derivare tinde să amplifice aceste erori. 7.4.1 Derivarea numerică bazată pe interpolarea Lagrange
Fie L( x ) polinomul Lagrange care interpolează funcţia f ( x ) : n x−x n n j f ( x ) ≅ L( x ) = ∑ {[∏ ] ⋅ f i } = ∑ Li (x) ⋅ f i . i =0 i =0 j=0 x i − x j j≠ i
Atunci funcţia f ′( x ) poate fi aproximată prin: n
f ′( x ) ≅ L′( x ) = ∑ L′i ( x ) ⋅ f i , i =0
1 ] ⋅{∑[ ( x − x j ) k =0 j=0 i n
unde L′i ( x ) = [∏ j≠i
n
n
∏ ( x − x j )]} .
j= 0 j≠ i ; j≠ k
Analog, se poate aproxima şi derivata a doua: n
f ′′( x ) ≅ L′′( x ) = ∑ L′i′( x ) ⋅ f i , i =0
n n 1 unde L′i′( x ) = [∏ ] ⋅ { ∑ [∑ ( k =0 l=0 j=0 ( x i − x j ) n
j≠ i
n
∏ (x − x j ))]} .
j=0 j≠i ; j≠ k ; j≠ l
238
7.
Aproximarea numerică a funcţiilor
7.4.2 Formule de derivare numerică bazate pe interpolarea cu funcţii spline cubice
Dacă x * ∈ [a , b] , atunci f ′( x * ) poate fi aproximată de către s′Δ ( x * ) , unde s Δ ( x ) este funcţia spline cubică (naturală) care interpolează funcţia f. În acest caz, trebuie identificat intervalul [ x i , x i +1 ] unde se află argumentul x * şi atunci: f ′( x * ) ≅ s′Δ ( x * ) = 3 ⋅ a i ⋅ (x * − x i ) 2 + 2 ⋅ bi ⋅ (x * − x i ) + ci . [ x i , x i +1 ]
Dacă se doreşte determinarea valorii f ′( x i ) , atunci f ′( x i ) ≅ c i . Aproximarea derivatei bazată pe utilizarea rezultatelor interpolării cu funcţii spline cubice (naturale), furnizează un rezultat mai precis decât folosind polinoame de interpolare Lagrange de grad n = 4 . Pentru aproximarea derivatei de ordinul al doilea, se derivează de două ori funcţia spline cubică (naturală) care interpolează funcţia f. Se obţine: f ′′( x * ) ≅ s′Δ′ ( x * ) = 6 ⋅ a i ⋅ ( x * − x i ) + 2 ⋅ b i , f ′′( x i ) ≅ 2 ⋅ b i . [ x i , x i +1 ]
În acest fel, se obţin erori comparabile cu cele produse prin evaluarea derivatei de ordinul al doilea a polinomului de interpolare Lagrange de grad n = 4 . Pentru aproximarea derivatelor de ordin superior, se folosesc funcţii spline de ordin superior pentru aproximarea funcţiei f. 7.4.3 Formule de derivare numerică polinomială în medie pătratică
bazate
pe
aproximarea
Se consideră punctele divizării Δ ca fiind echidistante: x i +1 − x i = h , i = 0,…, n − 1 , iar funcţia f este cunoscută prin perechile {x i , f ( x i )}i =0,…,n . Se ilustrează aproximarea valorilor primei derivate, f ′( x k ), k = 0,…, n . O soluţie este ca pe baza a cinci perechi de puncte, {x i , f ( x i )} , i = k − 2, k − 1, k , k + 1, k + 2 , să se găsească coeficienţii unui polinom de gradul al doilea, care aproximează funcţia f, în sensul celor mai mici pătrate: p 2 ( x ) = c 0 + c1 ⋅ x + c 2 ⋅ x 2 . Astfel, valoarea f ′( x k ) este aproximată prin p′2 ( x ) = 2 ⋅ c 2 ⋅ x k + c1 . Se obţin formulele de derivare: f ′( x k ) ≅
1 ⋅ (2 ⋅ y k −2 − y k −1 + y k +1 + 2 ⋅ y k + 2 ), k = 2,…, n − 2 , 10 ⋅ h
7.5
Cuadratura numerică
239
unde y i = f ( x i ), i = k − 2, k − 1, k , k + 1, k + 2 . Pentru aproximarea valorilor f ′( x 0 ) şi f ′( x 1 ) , se folosesc punctele x 0 , x 1 , x 2 şi x 3 , obţinând: 1 ⋅ (−21 ⋅ y 0 + 13 ⋅ y1 + 17 ⋅ y 2 − 9 ⋅ y 3 ), 20 ⋅ h 1 f ′( x 1 ) ≅ ⋅ (−11 ⋅ y 0 + 3 ⋅ y1 + 7 ⋅ y 2 + y 3 ). 20 ⋅ h
f ′( x 0 ) ≅
Pentru aproximarea valorilor f ′( x n−1 ) şi f ′( x n ) se folosesc perechile de puncte {x i , f ( x i )} , i = n − 3, n − 2, n − 1, n , obţinând: 1 ⋅ (11 ⋅ y n − 3 ⋅ y n −1 − 7 ⋅ y n −2 − y n −3 ), 20 ⋅ h 1 f ′( x n ) ≅ ⋅ (21 ⋅ y n − 13 ⋅ y n −1 − 17 ⋅ y n −2 + 9 ⋅ y n −3 ). 20 ⋅ h
f ′( x n −1 ) ≅
Se demonstrează că formulele de derivare astfel obţinute sunt mai precise decât cele bazate pe derivarea polinoamelor de interpolare Lagrange.
7.5
Cuadratura numerică
Se consideră funcţia f : [a , b] → ℜ , f = f ( x ) , cunoscută prin intermediul setului de puncte {x i , f i }i =0,…,n , f i = f ( x i ) . Problema este calculul valorii b
integralei definite I(f ) = ∫ f ( x ) ⋅ dx . Se consideră, fără a restrânge generalitatea, a
că a = x 0 şi b = x n . Dacă funcţia f este integrabilă pe intervalul [a , b] , atunci şi restricţiile sale la fiecare subinterval [ x i , x i +1 ], i = 0, … , n − 1 sunt integrabile, putându-se scrie: n −1
x i +1
i =0
xi
I(f ) = ∑ I i (f ), I i (f ) =
∫ f ( x ) ⋅ dx ,
i = 0, … , n − 1 .
Punctele x i , i = 0,…, n ale intervalului [a , b] sunt ordonate astfel: a = x 0 < x 1 < … < x i < x i +1 < … < x n = b . Pentru aproximarea numerică a integralei definite se foloseşte termenul de cuadratură numerică, realizând astfel o distincţie faţă de estimarea numerică a soluţiilor ecuaţiilor diferenţiale numită integrare numerică (a ecuaţiilor diferenţiale). Spre deosebire de operaţia de derivare numerică, cuadratura tinde să “netezească” sau să diminueze erorile ce afectează datele.
240
7.
Aproximarea numerică a funcţiilor
Definiţii: Se numeşte regulă (elementară) de cuadratură, o formulă simplă care aproximează valorile integralelor elementare I i (f ) . Se numeşte regulă compusă de cuadratură, o formulă care aproximează valoarea integralei definite I(f ) , ca o sumă a regulilor (elementare) de cuadratură. 7.5.1 Regula dreptunghiului
Principiul metodei este ilustrat în Figura 7.2. y
y = f (x )
f ( x i+1 ) f(
x i + x i +1 ) 2 f (x i )
x 0
xi
x i + x i +1 2
x i +1
h i = x i +1 − x i
Fig. 7.2. Regula dreptunchiului: aproximarea integrandului printr-un polinom de gradul zero
Funcţia f ( x ) este aproximată pe intervalul [ x i , x i +1 ] printr-un polinom de gradul zero, deci printr-o constantă: f ( x ) ≅ f (( x i + x i +1 ) / 2) . Ca urmare, se obţine: ⎛ x + x i +1 ⎞ I i (f ) ≅ D i (f ) = h i ⋅ f ⎜ i ⎟, h i = x i +1 − x i , i = 0,…, n − 1 . 2 ⎝ ⎠ Valoarea integralei definite pe intervalul [a , b] este aproximată prin:
7.5
Cuadratura numerică
241
n −1 n −1 ⎛ x + x i +1 ⎞ I( f ) ≅ D (f ) = ∑ D i (f ) = ∑ h i ⋅ f ⎜ i ⎟. 2 i =0 i =0 ⎝ ⎠ Dacă funcţia f nu este cunoscută analitică, atunci se vor considera trei perechi de puncte cu abscisele echidistante: ( x i −1 , f i −1 ) , ( x i , f i ) , ( x i +1 , f i +1 ) . Astfel, regula dreptunghiului devine: D i (f ) = ( x i +1 − x i −1 ) ⋅ f ( x i ) .
Se demonstrează că eroarea comisă utilizând această regulă satisface la b−a 2 ⋅ h ⋅ f ′′(ξ), ξ ∈ (a , b) . relaţia: e D (f ) = I(f ) − D(f ), | e D (f ) |≤ 12 7.5.2 Regula trapezului
Principiul metodei este ilustrat în Figura 7.3. y
y = p1 ( x )
y = f (x )
f ( x i+1 )
f (x i )
x 0
xi
x i +1 h i = x i +1 − x i
Fig. 7.3. Regula trapezului: aproximarea integrandului printr-un polinom de gradul unu De această dată, se consideră funcţia f aproximată printr-o dreaptă, pe intervalul [ x i , x i +1 ] . Dreapta de aproximare este determinată de punctele ( x i , f i ) şi ( x i +1 , f i +1 ) . Ca urmare: f ( x i ) + f ( x i +1 ) , i = 0, … , n − 1, I i (f ) ≅ Ti (f ) = h i ⋅ 2
242
7.
Aproximarea numerică a funcţiilor
f ( x i ) + f ( x i+1 ) . 2 i =0 i =0 Se demonstrează că eroarea comisă, e T (f ) = I(f ) − T (f ) , satisface la relaţia: b−a 2 | e T (f ) |≤ ⋅ h ⋅ f ′′(ξ), ξ ∈ (a , b) . Se constată, astfel, că regula trapezului este 24 mai precisă decât cea a dreptunghiului. n −1
n −1
I(f ) ≅ T (f ) = ∑ Ti (f ) = ∑ h i ⋅
7.5.3 Regula Simpson
Principiul acestei metode este ilustrat în Figura 7.4. Se aproximează funcţia f printr-un polinom de gradul al doilea ce trece prin punctele: x + x i +1 ⎛ x i + x i +1 ⎞ {x i , f ( x i )}, { i ,f ⎜ ⎟}, {x i +1 , f ( x i +1 )} . 2 2 ⎝ ⎠ y
y = f (x )
y = p 2 (x ) x 0
xi
x i + x i +1 2
x i +1
h i = x i +1 − x i
Fig. 7.4. Regula Simpson: aproximarea integrandului printr-un polinom de gradul al doilea
Integrând formula de interpolare care se obţine, rezultă: S i (f ) =
⎡ ⎤ 1 ⎛ x + x i +1 ⎞ ⋅ h i ⋅ ⎢f ( x i ) + 4 ⋅ f ⎜ i ⎟ + f ( x i +1 )⎥, i = 0,…, n − 1, 6 2 ⎝ ⎠ ⎣ ⎦
⎡ ⎤ ⎛ x + x i +1 ⎞ I(f ) ≅ S(f ) = ∑ Si (f ) = ∑ ⋅ h i ⋅ ⎢f ( x i ) + 4 ⋅ f ⎜ i ⎟ + f ( x i +1 )⎥. 2 i =0 i =0 6 ⎝ ⎠ ⎣ ⎦ n −1
n −1 1
(7.20)
7.5
Cuadratura numerică
243
Se demonstrează că eroarea comisă prin aplicarea regulii Simpson este: 1 n −1 5 ( 4 ) ⎛ x i + x i +1 ⎞ ⋅ ∑ hi ⋅ f ⎜ e S (f ) = I(f ) − S(f ), | e S (f ) |≅ ⎟. 2850 i −0 2 ⎝ ⎠ Dacă f nu este cunoscută analitic, atunci aproximanta Si (f ) poate fi calculată folosind punctele echidistante: x i −1 , x i , x i +1 , din prima relaţie (7.24) rezultând: S i (f ) =
2 1 ⋅ D i (f ) + ⋅ Ti (f ) . 3 3
În continuare, în legătură cu expresia anterioară, se consideră divizarea intervalului [a , b] ca fiind formată din puncte echidistante: h = x i +1 − x i , i = 0,…, n − 1 . În acest caz, se obţin următoarele dezvoltări particulare: 1. Dacă numărul de intervale, egal cu n, este impar, atunci se obţine: h ⋅ (f 0 + 4 ⋅ f 1 + f 2 + f 2 + 4 ⋅ f 3 + f 4 + …) 3 h = ⋅ (f 0 + 4 ⋅ f 1 + 2 ⋅ f 2 + … + 4 ⋅ f n −3 + 2 ⋅ f n − 2 + 4 ⋅ f n −1 + f n ). 3
S(f ) =
(7.21)
Relaţia (7.21) se numeşte regula 1/3 Simpson. Se demonstrează că eroarea comisă prin aplicarea acestei formule de cuadratură este: b − a 4 ( 4) | e1 / 3S (f ) |≤ ⋅ h ⋅ f (ξ), ξ ∈ ( x 0 , x n ) . 180 2. Dacă numărul de intervale n este impar, atunci folosind un polinom de interpolare de gradul trei se obţine:
3⋅ h ⋅ (f 0 + 3 ⋅ f 1 + 3 ⋅ f 2 + 2 ⋅ f 3 + 3 ⋅ f 4 + 3 ⋅ f 5 + … 8 + 2 ⋅ f n −3 + 3 ⋅ f n −2 + 3 ⋅ f n −1 + f n ).
S(f ) =
Această formulă se numeşte regula 3/8 Simpson. Se demonstrează că eroarea comisă prin aplicarea acestei formule de cuadratură este: b − a 4 ( 4) | e 3 / 8S (f ) |≤ ⋅ h ⋅ f (ξ), ξ ∈ ( x 0 , x n ) . 80 7.5.4 Cuadratura bazată pe interpolarea cu funcţii spline cubice
Pentru aproximarea valorii I(f ) , se utilizează rezultatele aproximării funcţiei f prin interpolare cu funcţii spline cubice (naturale). Integrând, apoi, formula de interpolare, se obţine:
244
7.
Aproximarea numerică a funcţiilor
b n −1 1 1 1 ⎡ ⎤ I(f ) = ∫ f ( x ) ⋅ dx ≅ ∑ ⎢ ⋅ h i4 ⋅ a i + ⋅ h 3i ⋅ b i + ⋅ h i2 ⋅ c i + h i ⋅ d i ⎥ , 4 3 2 ⎦ i =0 ⎣ a unde h i = x i +1 − x i , i = 0,…, n − 1 . Ţinând cont de expresiile coeficienţilor a i , b i , c i , d i , expresii prezentate la subcapitolul privind interpolarea cu funcţii
spline cubice naturale, se obţine: b
n −1
a
i =0 ⎣
⎡
∫ f ( x ) ⋅ dx ≅ ∑ ⎢h i ⋅
f ( x i ) + f ( x i +1 ) b + b i +1 ⎤ . − h 3i ⋅ i 2 12 ⎥⎦
Faţă de formula trapezului, T (f ) , se observă că apare în plus, în sumă, termenul h 3i ⋅ (b i + b i +1 ) / 12 , mărindu-se, astfel, precizia aproximării.
Capitolul 8 ECUAŢII DIFERENŢIALE ORDINARE CU CONDIŢII INIŢIALE
8.1
Formularea problemei
8.1.1 Ecuaţii diferenţiale ordinare de ordinul întâi Fie o funcţie reală de două variabile reale, f = f ( t , y( t )) :
y : [a, b] → I ⊆ ℜ, f : [a, b] × I → R , unde t ∈ [a , b] se numeşte variabilă independentă, iar y = y( t ) se numeşte variabilă dependentă. Se consideră ecuaţia diferenţială de ordinul întâi de forma:
dy( t ) = f ( t , y( t ) , dt
(8.1)
y 0 = y( t 0 ), t 0 ∈ [a , b], y 0 ∈ I
(8.2)
unde y 0 reprezintă condiţia iniţială cunoscută sau precizată. Fără a restrânge generalitatea, se poate considera t 0 = a . Problema de calcul este determinarea soluţiei (aproximative), y(t), a ecuaţiei diferenţiale (8.1), cu condiţia iniţială (8.2), pentru orice valoare a argumentului t ∈ [a , b] . Problema astfel definită se numeşte problema Cauchy. Pentru rezolvarea acesteia, se enunţă următorul rezultat. Teoremă: Fie ecuaţia (8.1) şi condiţia iniţială (8.2). Dacă sunt îndeplinite condiţiile: funcţia f este continuă în raport cu argumentul t ∈ [a , b] ; (i) (ii) funcţia f este lipschitziană în raport cu argumentul y ∈ I , anume ∃L > 0 astfel încât este îndeplinită relaţia: ∀t ∈ [a , b], ∀y1 , y 2 ∈ I, | f ( t , y1 ) − f ( t , y 2 ) |≤ L⋅ | y1 − y 2 | ,
atunci există şi este unică o soluţie a problemei Cauchy.
266
8.
Ecuaţii diferenţiale ordinare cu condiţii iniţiale
Metodele numerice de rezolvare a problemei Cauchy discretizează intervalul [a,b] într-o reţea de puncte distincte şi anume: Δ [ a ,b ] : a = t 0 < t 1 < … < t i−1 < t i < … t N = b . Prin anumite formule de recurenţă se calculează valorile corespunzătoare y i , i = 1,..., N , drept aproximaţii ale soluţiei exacte y( t i ), i = 1,..., N , având drept punct de start valoarea precizată y 0 . În aceste condiţii, mulţimea de valori {y 0 , y 1 , … , y N } constituie soluţia numerică a problemei Cauchy. Se spune că se realizează integrarea numerică a ecuaţiei (8.1) cu condiţia iniţială (8.2), prin aplicarea unei metode de integrare numerică. Valorile h i := t i +1 − t i , i = 0,1,..., N − 1 se numesc paşi de integrare. Intervalul [ t 0 , t N ] se numeşte interval de observare. Lungimea intervalelor
corespunzătoare valorilor calculate care, mai departe, sunt folosite drept valori “extrase” din soluţia numerică, se numesc paşi de observare. De exemplu, dacă pasul de integrare este constant: h = ( t N − t 0 ) / N , atunci y i este soluţia calculată la momentele t i = t 0 + i ⋅ h şi pasul de observare, notat h obs , este un multiplu al pasului de integrare h: h obs = k ⋅ h , k ∈ ℵ* , unde ℵ*
reprezintă mulţimea numerelor naturale nenule. Exemplul 8.1:
Se consideră ecuaţia diferenţială: dy( t ) + a 0 ⋅ y( t ) = b 0 ⋅ u ( t ), dt a 1 , a 0 , b 0 ∈ ℜ, a 1 ≠ 0, y 0 = y( t 0 ), t ∈ [ t 0 , t N ] a1 ⋅
(8.3)
unde y 0 este condiţia iniţială precizată şi u(t) este o funcţie cunoscută analitic sau printr-un şir de valori. Pentru o valoare oarecare dar fixată a argumentului t, u(t) reprezintă o valoare constantă. Atunci ecuaţia (8.3) se poate rescrie sub forma:
a b dy( t ) = − 0 ⋅ y( t ) + 0 ⋅ u ( t ), y( t 0 ) = y 0 . dt a1 a1
(8.4)
Membrul drept al ecuaţiei (8.4) se notează prin f(t,y(t)). Astfel, ecuaţia (8.3) este adusă la o formă echivalentă cu cea din (8.1). Sub această formulare, problema (8.4) reprezintă în fapt un model matematic pentru o categorie importantă de fenomene sau procese din lumea reală şi anume sistemele dinamice liniare constante de ordinul întâi. Pentru o astfel de
8.1
Formularea problemei
267
interpretare, u ( t ) se numeşte mărime de intrare (comandă) a sistemului, iar y( t ) se numeşte mărime de ieşire. L{⋅ } reprezintă Notând U (s) = L{u ( t )} , Y (s) = L{y( t )} , unde transformarea Laplace şi considerând condiţia iniţială nulă, y 0 = 0 , atunci sistemul modelat prin ecuaţia (8.4) este caracterizat de funcţia de transfer notată G (s) :
G (s) :=
b0 Y(s) = . U(s) a 1 ⋅ s + a 0
(8.5)
Dacă sistemul dinamic este cunoscut prin funcţia sa de transfer, se aduce acesta la forma (8.4) prin transformarea Laplace inversă şi considerând condiţia iniţială nulă. În aceste condiţii, a rezolva numeric ecuaţia (8.4) înseamnâ de fapt a simula numeric comportarea sistemului dinamic liniar descris de ecuaţia (8.3) sau funcţia de transfer (8.5), pentru o anumită funcţie de intrare u(t) precizată. 8.1.2 Ecuaţii diferenţiale ordinare de ordin superior A. Ecuaţii diferenţiale ordinare de ordinul n
Fie ecuaţia diferenţială de ordinul n:
an ⋅
d n y( t ) n
+ a n −1 ⋅
d n −1 y( t ) n −1
+ … + a1 ⋅
dt dt a i , b 0 ∈ ℜ, i = 0,1,..., n; a n ≠ 0
dy( t ) + a 0 ⋅ y( t ) = b 0 ⋅u ( t ), , dt
(8.6)
cu condiţiile iniţiale cunoscute: y( t 0 ), y (1) ( t 0 ),..., y ( n −1) ( t 0 ), t 0 ∈ [a , b] ,
(8.7)
iar funcţia u ( t ) este cunoscută analitic sau printr-un şir de valori. Pentru rezolvarea numerică a acestei ecuaţii, aceasta se transformă într-un sistem de n ecuaţii diferenţiale ordinare, fiecare ecuaţie fiind de ordinul întâi. În acest fel, metodele pentru rezolvarea ecuaţiilor diferenţiale de ordinul întâi se extind la cazul sistemelor de ecuaţii diferenţiale. Fiind n ecuaţii de ordinul întâi, se spune că astfel de sisteme au ordinul n. Exemplul 8.2:
Se consideră ecuaţia diferenţială (8.6), cu condiţiile iniţiale (8.7). Şi în acest caz ecuaţia (8.6) reprezintă un model matematic pentru sisteme dinamice liniare
268
8.
Ecuaţii diferenţiale ordinare cu condiţii iniţiale
constante de ordinul n. Procedând într-o manieră similară celei prezentate la Exemplul 8.1, un astfel de sistem poate fi cunoscut prin funcţia sa de transfer:
G (s) =
n
a n ⋅ s + a n −1 ⋅ s
b0 n −1
+ … + a1 ⋅ s + a 0
În acest din urmă caz, pentru simularea numerică a sistemului dinamic, se ajunge la forma (8.6) prin aplicarea transformatei Laplace inversă şi considerând condiţiile iniţiale nule. Ecuaţia (8.6) se rescrie sub forma: d n y( t ) dt n
=−
a0 a dy( t ) a d n −1 y( t ) b 0 ⋅ y( t ) − 1 ⋅ − … − n −1 ⋅ + ⋅ u(t) . an an an dt an dt n −1
Se realizează notaţiile: α k = a n − k / a n , k = 1,..., n; β n = b 0 / a n şi se definesc urmoarele variabile de lucru: x 1 ( t ) = y( t ), dy( t ) dx 1 ( t ) = = x1 (t ) dt dt d 2 y( t ) dx 2 ( t ) x 3 (t ) = = = x 2 (t ) dt dt 2 …………………………………… x 2 (t) =
x n (t) =
d n −1 y( t ) dt n −1
=
dx n −1 ( t ) = x n −1 ( t ) dt
Rezultă, astfel, următorul sistem de ordinul n, cu ecuaţii diderenţiale de ordinul întâi, corespunzător ecuaţiei (8.6): ⎧x1 ( t ) = x 2 ( t ) ⎪x ( t ) = x ( t ) 3 ⎪⎪ 2 ⎨ ⎪x ( t ) = x ( t ) n ⎪ n −1 ⎪⎩x n ( t ) = −α n ⋅ x 1 ( t ) − α n −1 ⋅ x 2 ( t ) − … − α1 ⋅ x n ( t ) + β n ⋅ u ( t ) la care se adaugă: y( t ) = x 1 ( t ) .
Cu următoarele notaţii: g ( t , x 1 ( t ), … , x n ( t )) = x 1 ( t ); f i ( t , x 1 ( t ), … , x n ( t )) = x i +1 ( t ), i = 1,..., n − 1 ,
8.1
Formularea problemei
269
f n ( t , x 1 ( t ), … , x n ( t )) = −α n ⋅ x 1 ( t ) − … − −α1 ⋅ x n ( t ) + β n ⋅ u ( t ) , x ( t ) = [x 1 ( t ) … x n ( t )]T , f ( t , x ( t )) = [f1 ( t , x ( t )) … f n ( t , x ( t ))]T ,
se obţine: d x(t) = f ( t , x ( t )), dt y( t ) = g( t , x ( t )),
(8.8)
cu condiţia iniţială:
[
x ( t 0 ) =: x [0] = x1[ 0] … x [n0]
] = [y(t T
0)
]
… y ( n −1) ( t 0 ) .
(8.9)
Ecuaţia (8.8), cu condiţia iniţială (8.9), extinde la cazul vectorial problema (8.1) cu condiţia iniţială (8.2). Pentru rezolvarea problemei (8.6), (8.7), rezolvarea problemei (8.8), (8.9) constituie o etapă intermediară, ceea ce intereseazâ fiind obţinerea funcţiei y(t). Pentru aceasta, au loc următoarele: plecând de la şi x [ 0]
y 0 = y( t 0 ) = x1 ( t 0 ) = x1[0] , pentru fiecare argument (“punct”) t i se integrează ecuaţia (8.8) rezultând x [i ] ≅ x ( t i ) şi apoi se extrage valoarea y( t i ) ≅ y i = x 1[i ] . Ecuaţiile (8.8) sunt liniare în variabilele de lucru x 1 ,… , x n şi, eventual, u ( t ) . Aceste variabile se mai numesc variabile interne sau variabile de stare, în legătură cu Exemplul 8.2. Dacă (8.6), (8.7) reprezintă modelul unui sistem dinamic de ordinul n, aceste variabile de stare pot avea sau nu semnificaţie fizică. Ecuaţiile (8.8) se pot scrie şi sub forma:
⎧ d x (t ) = A ⋅ x(t ) + b ⋅ u (t ) ⎪ , ⎨ dt ⎪⎩ y( t ) = c T ⋅ x ( t )
(8.10)
În această formulare matricea A şi vectorii b, c sunt:
⎡ 0 ⎢ 0 ⎢ ⎢ A=⎢ ⎢ ⎢ 0 ⎢ ⎣⎢− α n
1 0
0 −α n −1
0 1
… …
0 0
0 0 … − α n −2 … − α 2
0 ⎤ 0 ⎥⎥ ⎥ ⎥ , 0 ⎥ 1 ⎥ ⎥ − α1 ⎦⎥ nxn
(8.11)
270
8.
Ecuaţii diferenţiale ordinare cu condiţii iniţiale
b = [0 … 0 β n ]T , c T = [1 0 … 0]1xn . Observaţie: Determinantul caracteristic al matricei A este: det(s ⋅ I n − A ) = s n + α1 ⋅ s n −1 + … + α n −1 ⋅ s + α n .
Ecuaţia det(s ⋅ I n − A ) = 0 coincide cu ecuaţia caracteristică ataşată ecuaţiei omogene a ecuaţiei (8.6). Aşadar, valorile proprii ale matricei A coincid cu soluţiile ecuaţiei caracteristice ataşate problemei (8.6). Mai mult, dacă se consideră că ecuaţia (8.6) este modelul unui sistem dinamic liniar de ordinul n, cunoscut prin funcţia de transfer: G (s) =
n
s + α1 ⋅ s
n −1
βn + … + α n −1 ⋅ s + α n
rezultă că valorile proprii ale matricei A coincid cu polii funcţiei de transfer (zerourile numitorului funcţiei de transfer). Matricea A este o matrice de tip Frobenius, numită şi forma companion asociată ecuaţiei caracteristice a ecuaţiei omogene, ataşată ecuaţiei diferenţiale (8.6). Reprezentarea vectorial-matricială (8.10), dacă reprezintă modelul unui sistem dinamic liniar de ordinul n, se mai numeşte şi reprezentare intrare-stareieşire (u – x - y), ecuaţiile implicate numindu-se ecuaţii de stare ale sistemului dinamic. În acest context, A se numeşte matrice de stare (evoluţie), b se numeşte vector de intrare (comandă), iar c se numeşte vector de ieşire (observare). B. Ecuaţii diferenţiale ordinare de ordinul (n,m)
Se consideră ecuaţia diferenţială: an ⋅
d n y( t ) dt
n
m
+ a n −1 ⋅
d u(t)
d n −1 y( t ) dt
n −1
+ … + a1 ⋅
d m −1u ( t )
dy( t ) + a 0 ⋅ y( t ) = dt
du ( t ) + b 0 ⋅u ( t ), dt dt dt a i , b j ∈ ℜ; i = 0,1,..., n; j = 0,1,..., m; a n ≠ 0 bm ⋅
m
+ b m −1 ⋅
m −1
+ … + b1 ⋅
(8.12)
cu condiţiile iniţiale cunoscute: y (i ) ( t 0 ), u ( j) ( t 0 ); i = 0,1,..., n − 1; j = 0,1,..., m − 1; t 0 ∈ [a , b] ,
(8.13)
şi u(t) o funcţia cunoscută analitic sau printr-un şir de valori. Se consideră
8.1
Formularea problemei
271
îndeplinită condiţia: m ≤ n . Astfel, se generalizează subcazul A, descris de către ecuaţiile (8.6), (8.7). Fără a restrânge generalitatea, se presupune că m = n. Pentru cazul m < n, se consideră coeficienţii b m +1 = … b n = 0 . În continuare, se introduc notaţiile: α k := a n − k / a n , k = 1,..., n; α 0 = 1; β k := b n − k / a n , k = 0,1,..., n
Cu aceste notaţii şi procedând într-o manieră similară celei de la subcazul A, se obţine următorul sistem de ecuaţii diferenţiale: ⎧x 1 ( t ) = x 2 ( t ) ⎪x ( t ) = x ( t ) 3 ⎪⎪ 2 ⎨ ⎪x ( t ) = x ( t ) n ⎪ n −1 ⎪⎩x n ( t ) = −α n ⋅ x 1 ( t ) − α n −1 ⋅ x 2 ( t ) − … − α1 ⋅ x n ( t ) + u ( t )
(8.14)
la care se adaugă: y( t ) = (β n − α n β 0 ) ⋅ x 1 ( t ) + (β n −1 − α n −1β 0 ) ⋅ x 2 ( t ) + … + (β1 − α1β 0 ) ⋅ x n ( t ) + β 0 ⋅ u ( t ) În această situaţie, reprezentarea intrare-stare-ieşire este următoarea:
⎧ d x(t) = A ⋅ x(t ) + b ⋅ u (t ) ⎪ ⎨ dt ⎪⎩ y( t ) = c T ⋅ x ( t ) + d ⋅ u ( t ) în care matricea A are aceeaşi formă ca în (8.11), iar vectorii sunt: b = [0 … 0 1]T , c = [β n − α n ⋅ β 0 … β1 − α1 ⋅ β 0 ]T , d = [β 0 ]
Ecuaţiile (8.14) trebuie completate cu condiţiile iniţiale: x ( t 0 ) = [x 1 ( t 0 ) … x n ( t 0 )]T
care se obţin utilizând (8.14), exprimându-se în funcţie de condiţiile iniţiale (8.13). Practic, se derivează succesiv expresia lui y( t ) din (8.14) şi se ţine cont de restul de relaţii din (8.14). Expresiile astfel obţinute se evaluează pentru t = t 0 . În final, rezultă un sistem determinat de ecuaţii algebrice liniare, de ordinul n, având drept necunoscute condiţiile iniţiale x i ( t 0 ), i = 1,..., n . Expresia (8.14) se numeşte prima formă canonică (de stare). O altă posibilitate pentru definirea variabilelor de stare conduce la sistemul de ecuaţii:
272
8.
Ecuaţii diferenţiale ordinare cu condiţii iniţiale
− α n ⋅ x n ( t ) + (β n − α n ⋅ β 0 ) ⋅ u ( t ) ⎧x 1 ( t ) = ⎪x ( t ) = x ( t ) − α ⋅ x ( t ) + (β − α ⋅ β ) ⋅ u ( t ) ⎪ 2 1 n −1 n n −1 n −1 0 ⎨ ⎪ ⎪⎩x n ( t ) = x n ( t ) − α1 ⋅ x n ( t ) + (β1 − α1 ⋅ β 0 ) ⋅ u ( t )
(8.15)
y( t ) = x n ( t ) + β 0 ⋅ u ( t )
În acest caz, condiţiile iniţiale x ( t 0 ) = [x 1 ( t 0 ) … x n ( t 0 )]T se obţin din expresia lui y( t ) şi a derivatelor sale, precum şi din ecuaţiile de stare (8.15), exprimându-se în funcţie de condiţiile iniţiale (8.13), Astfel, se obţine: x n ( t 0 ) = y( t 0 ) − β 0 ⋅ u ( t 0 ) ,
x k (t 0 ) =
n −k
n −k
i =0
j=0
∑ α n−k−i ⋅ y (i) (t 0 ) − ∑ β n −k− j ⋅ u ( j) (t 0 ),
k = 1,..., n − 1 ,
α 0 = 1, y ( 0) ( t 0 ) = y( t 0 ), u ( 0) ( t 0 ) = u ( t 0 ) .
Reprezentarea vectorial-matricială este:
~ ⎧ d x(t) ~ = A ⋅ x(t) + b ⋅ u(t) ⎪ ⎨ dt ⎪⎩ y( t ) = ~c T ⋅ x ( t ) + ~ d ⋅ u(t) ~ ~ ~ unde A = A T , ~c T = b T , b = c, d = d , cu A, b, c T , d definite în (8.11), la prima formă canonică. Ecuaţiile (8.15) sunt cunoscute sub denumirea de a doua formă canonică (de stare). 8.1.3 Sisteme de ecuaţii diferenţiale
Se tratează cazul sistemelor în care fiecare ecuaţie, în parte, este o ecuaţie diferenţială de un anumit ordin oarecare. Pentru început, se consideră un sistem cu n ecuaţii diferenţiale de ordinul întâi: d x (t ) = f ( t , x ( t )), dt
x ( t ) = [x 1 ( t ) … x n ( t )]T ,
(8.16)
f ( t , x ( t )) = [f1 ( t , x ( t )) … f n ( t , x ( t ))]T , cu x ( t 0 ) condiţia iniţială cunoscută. În general, funcţiile f i ( t , x ( t )), i = 1,..., n
8.1
Formularea problemei
273
sunt neliniare. Cele două abordări prezentate în subcapitolul anterior se încadrează în această descriere generală, cu menţiunea că funcţiile f i ( t , x ( t )), i = 1,..., n sunt liniare. Dacă ecuaţiile difereniale ale sistemului (8.16) nu sunt de ordinul întâi, ci de ordin superior, atunci se transformă acestea în subsisteme cu ecuaţii diferenţiale de ordin întâi, utlizând metodologia prezentată anterior. Exemplul 8.3:
Se consideră sistemul de ecuaţii diferenţiale:
⎧ d 2 y( t ) dy( t ) dz( t ) a ⋅ + a1 ⋅ ⋅ + a 0 ⋅ t ⋅ y( t ) = b 0 ⋅ u ( t ) ⎪ 2 2 ⎪ dt dt dt ⎨ 3 ⎪c ⋅ d z( t ) + c ⋅ t 2 ⋅ dz( t ) + c ⋅ y( t ) ⋅ z( t ) = d ⋅ u ( t ) 2 1 0 0 ⎪⎩ dt dt 3 a 0 , a 1 , a 2 , b 0 , c 0 , c1 , c 2 , d 0 ∈ ℜ ,
cu
condiţiile
iniţiale
(8.17)
y( t 0 ), y (1) ( t 0 ),
z( t 0 ), z (1) ( t 0 ), z ( 2) ( t 0 ) precizate şi funcţia u(t) cunoscută.
Acest sistem modelează un sistem dinamic neliar complex, alcătuit din două subsisteme care interacţionează între ele. Fiecare ecuaţie diferenţială din (8.17) corespunde unui subsistem. În ansamblu, intrarea sistemului este u(t), iar ieşirile sistemului sunt y(t) şi z(t), respectiv. Variabilele de stare pentru acest sistem sunt următoarele:
dy( t ) = x1 (t ) , dt dz( t ) d 2 z( t ) = x 3 ( t ), x 5 ( t ) = = x 4 (t) . x 3 ( t ) = z( t ), x 4 ( t ) = dt dt 2 Atunci sistemul (8.17) se poate rescrie, obţinând ecuaţiile de stare: x1 ( t ) = y( t ), x 2 ( t ) =
⎧x1 ( t ) = x 2 ( t ) ⎪ b a0 a ⋅ t ⋅ x1 (t ) − 1 ⋅ x 2 (t ) ⋅ x 4 (t ) + 0 ⋅ u (t ) ⎪x 2 ( t ) = − a2 a2 a2 ⎪⎪ x ( t ) = x ( t ) , 4 ⎨ 3 ⎪x 4 ( t ) = x 5 ( t ) ⎪ c d ⎪x 5 ( t ) = − 0 ⋅ x 1 ( t ) ⋅ x 3 ( t ) − c1 ⋅ t 2 ⋅ x 4 ( t ) + 0 ⋅ u ( t ) ⎪⎩ c2 c2 c2 precum şi ecuaţiile de ieşire:
⎧ y( t ) = x 1 ( t ) , ⎨ ⎩z ( t ) = x 3 ( t )
274
8.
Ecuaţii diferenţiale ordinare cu condiţii iniţiale
la care se adaugă condiţiile iniţiale cunoscute:
[
]
T
x ( t 0 ) = y( t 0 ) y (1) ( t 0 ) z ( t 0 ) z (1) ( t 0 ) z ( 2) ( t 0 ) .
8.1.4 Clasificarea metodelor de integrare numerică
Categoriile de metode numerice pentru rezolvarea ecuaţiilor diferenţiale ordinare de ordinul întâi sunt descrise principial, după cum urmează. a) Metodele numerice directe calculează, la fiecare pas de integrare t i , soluţia aproximantă y i , utilizând o relaţie de recurenţă exprimată ca funcţie de valoarea estimată în punctul anterior, y i −1 , şi eventual ca funcţie de h i −1 şi t i −1 , unde h i −1 = t i − t i −1 . Ca urmare, aceste metode se mai numesc şi metode “într-un pas”, “pas cu pas” sau “cu paşi separaţi”. b) Metodele numerice indirecte calculează, la fiecare punct de integrare t i , soluţia aproximantă y i , utilizând o relaţie de recurenţă bazată pe un număr de valori anterior calculate: y i −1 ,..., y i − k ,... Ca urmare, aceste metode se mai numesc şi metode “în mai mulţi paşi”, “cu paşi legaţi” sau “multipas”. În funcţie de natura formulelor de integrare, ambele categorii de metode pot fi de două tipuri, descrise în continuare. Această prezentare se referă la metodele numerice directe, principiul aplicându-se şi la cealaltă clasă de metode. 1)
Metodele explicite sau predictor utilizează o relaţie de recurenţă de tipul: y i = y i −1 + Φ E ( y i −1 , t i −1 , h i −1 ) , în acest fel prezicându-se (estimându-se) valoarea aproximantă y i .
2)
Metodele implicite sau corector exploatează relaţii de recurenţă de tipul: y i = y i −1 + Φ I ( y i −1 , t i −1 , h i −1 , y i (, t i , h i )) . De regulă, în membrul drept se consideră y i ca fiind obţinut de la o metodă de tip predictor, soluţie notată cu y i,P . În membrul stâng al
ecuaţiei anterioare se obţine y i := y i,C :
y i ,C = y i −1 + Φ I ( y i −1 , t i −1 , h i −1 , y i ,P (, t i , h i )) , noua valoare y i ,C corectând valoarea estimată y i,P .
8.2
Metode directe
275
Pentru sisteme cu ecuaţii diderenţiale de ordinul întâi, se folosesc acealeaşi metode, prin extensie la cazul vectorial. Metodele directe şi explicite au avantajul unui timp redus de calcul, precum şi faptul că necesită doar cunoaşterea condiţiei iniţiale a ecuaţiei, pentru a se putea aplica. Din acest punct de vedere, se spune că aceste metode sunt “autostartabile”. Aceste metode pot, însă, eşua în cazul unor anumite tipuri de ecuaţii diferenţiale, aşa cum se va prezenta în subcapitolul 8.5 destinat ecuaţiilor diferenţiale stiff. Pentru astfel de probleme, singura soluţie posibilă este aplicarea metodelor indirecte şi implicite, chiar dacă sunt în general consumatoare de timp de calcul şi necesită cunoaşterea unor estimaţii iniţiale suplimentare ale soluţiei. Astfel, alegerea unui tip sau altul de metodă depinde de aplicaţie şi de timpul de calcul disponibil, în general impus de problema de rezolvat, practic realizându-se un compromis între acestea (precizie de calcul şi timp de calcul).
8.2
Metode directe
8.2.1 Metodele Euler
Principiul acestor tipuri de metode este ca pentru fiecare punct de integrare t i +1 , i = 0,1,..., N − 1, t i +1 = t i + h i , să se oprească primii doi termeni din dezvoltarea în serie Taylor a funcţiei y(t) în jurul punctului t i . Astfel, se obţine expresia: y( t i+1 ) = y( t i + h i ) = y( t i ) + h i ⋅
dy( t ) h i2 d 2 y + ⋅ (ξ), ξ ∈ [ t i , t i+1 ] (8.18) dt 2! dt 2
Ecuaţia diferenţială care se doreşte a fi rezolvată numeric fiind:
dy( t ) = f ( t , y( t )) , dt
(8.19)
atunci, aproximând y ( t i ) prin y i calculat la pasul anterior şi neglijând ultimul termen din (8.18), se obţine formula Euler explicită (predictor): y( t i +1 ) ≅ y i +1 = y i + h ⋅ f ( t i , y i ), i = 0,1,…, N − 1 y 0 = y( t 0 ) − precizat Particularizând după valorile indicelui i, se obţine:
.
(8.20)
276
8.
Ecuaţii diferenţiale ordinare cu condiţii iniţiale
y1 = y 0 + h 0 ⋅ f ( t 0 , y 0 ), y 2 = y1 + h1 ⋅ f ( t 1 , y1 ),…, y N = y N −1 + h N−1 ⋅ f ( t N −1 , y N −1 ) Eroarea comisă prin neglijarea ultimului termen din relaţia (8.18) se numeşte eroare de trunchiere la un pas. Aceasta este de ordinul lui h i2 , mărime notată prin O (h i2 ) . Prin această metodă se înlocuieşte curba y = y i ( t ) , pe intervalul [ t i , t i +1 ] , cu tangenta dusă în punctul ( t i , y i ) la această curbă. Principiul este ilustrat în Figura 8.1. y
y( t )
y( t 2 )
y1 ( t )
Yi ≅ y( t i )
(T0 )
y 2 (t)
y( t 1 )
Y2
y( t 0 ) = Y0
Y1
(T2 )
(T1 )
t t0 = 0
t1
t2
Fig. 8.1 Metoda Euler predictor: reprezentare principială
Astfel, curba y(t) reprezintă soluţia exactă a ecuaţiei diferenţiale de ordinul întâi cu condiţia iniţială y( t 0 ) = y 0 , y 1 ( t ) este soluţia exactă a ecuaţiei (8.19) cu condiţia iniţială y( t 1 ) = y1 , iar y 2 ( t ) este soluţia exactă a ecuaţiei (8.19) cu condiţia iniţială y( t 2 ) = y 2 şi aşa mai departe pentru indicele i = 3,…, N . Dezavantajul acestei metode este faptul că, la fiecare pas, soluţia aproximativă traversează către o altă curbă din familia de soluţii a ecuaţiei (8.19), tangenta fiind dusă în capătul iniţial al intervalului de integrare. Astfel, erorile de aproximare sunt în general semnificative. Pentru înlăturarea acestui neajuns, se modifică relaţia (8.20), ducându-se tangenta în capătul final al intervalului de integrare. Se obţine:
y i+1 = y i + h i ⋅
dy ( t i+1 ) . dt
Ţinând cont de ecuaţia (8.19), se ajunge la formula Euler implicită: y i +1 = y i + h i ⋅ f ( t i +1 , y i +1 ), i = 0,1,..., N − 1 .
(8.21)
8.2
Metode directe
277
Formula (8.21) este o relaţie de recurenţă implicită, legătura fiind asigurată de către funcţia f. Practic, exploatarea formulei implicite se realizează cu schema:
y [ik+1+1] = y i + h i ⋅ f ( t i+1 , y [ik+1] ), k = 0,1,..., s; i = 0,1,..., N − 1
(8.22)
pentru care estimaţia iniţială y[i+01] se obţine cu relaţia explicită (8.20):
y[i+01] = y i + h i ⋅ f ( t i , y i ), i = 0,1,..., N − 1 . Relaţia (8.22) se numeşte schema Euler corector. Pentru fiecare punct de integrare, t i +1 , formula (8.22) se aplică până când se atinge o precizie impusă ε . Astfel, pentru punctul de integrare t i +1 , algoritmul se opreşte la un pas [s], pentru care este îndeplinită condiţia: | y [is++11] − y [is+]1 |≤ ε . Această condiţie fiind îndeplinită, mai departe se consideră y i+1 = y[is++11] . 8.2.2 Metoda Taylor de ordinul p
Principiul acestei metode este ca pentru fiecare punct de integrare t i +1 , i = 0,1,..., N − 1, t i +1 = t i + h i , să se oprească primii p + 1 termeni din dezvoltarea în serie Taylor a funcţiei y(t) în jurul punctului t i . Metoda are la bază expresia:
y( t i +1 ) = y( t i + h i ) = y( t i ) + h i ⋅ y (1) ( t i ) + +
h ip p!
y (p) (t i ) +
h i2 ( 2) ⋅ y (t i ) + … 2!
h ip+1 (p + 1)!
y ( p+1) (ξ), ξ ∈ [ t i , t i +1 ].
În această expresie, se aproximează y( t i +1 ) ≅ y i+1 , y( t i ) ≅ y i , se neglijează ultimul termen şi se ţine cont de forma ecuaţiei diferenţiale (8.19) care trebuie rezolvată. Se obţine următoarea relaţie: hp h i2 (1) ⋅ f ( t i , y i ) + … + i ⋅ f ( p −1) ( t i , y i ), 2! p! i = 0,1,..., N − 1; y( t 0 ) = y 0 . y i+1 = y i + h i ⋅ f ( t i , y i ) +
(8.23)
Relaţia de calcul (8.23) reprezintă formula de integrare Taylor de ordinul p, pentru rezolvarea acuaţiilor diferenţiale ordinare de ordinul întâi.
278
8.
Ecuaţii diferenţiale ordinare cu condiţii iniţiale
Eroarea de trunchiere la un pas este de ordinul lui h ip +1 . Pentru multe probleme, acurateţea soluţiilor astfel determinate creşte odată cu creşterea ordinului metodei, p. Se observă că pentru ordinul p=1, relaţia (8.23) coincide cu formula Euler predictor (8.20). Observaţie: Pentru aplicarea formulei (8.23), trebuie evaluate derivatele funcţiei f de ordinul k = 1,2, …, p − 1 :
[
]
d ( k −1) f ( t , y( t )) t =ti dt dy ∂ ( k −1) ∂ ( k −1) f ( t , y( t )) f ( t , y( t )) ⋅ + = t =t i dt ∂y ∂t
f ( k ) ( t i , y( t i )) =
[
]
[
]
. t=ti
Notând:
[ [
] ]
∂ ( k −1) f ( t , y( t )) , t =ti ∂t dy ∂ ( k −1) f y( k −1) ( t i , y( t i )) = f ( t , y( t )) ⋅ dt t = t i ∂y f t( k −1) ( t i , y( t i )) =
rezultă formula de calcul: f ( k ) ( t i , y( t i )) = f t( k −1) ( t , y( t )) t = t + f y( k −1) ( t , y( t )) t = t ⋅ f ( t , y( t )) t = t , i
i
i
k = 1,..., p − 1. Pentru un ordin p ridicat calculele pot deveni dificile, fiind necesare derivatele parţiale de ordin superior pentru evaluarea funcţiei f în diverse puncte ale intervalului de integrare [ t 0 , t N ] , anume în punctele de integrare t i +1 , i = 0,1,..., N − 1 . Această deficienţă este înlăturată de către metodele RungeKutta prezentate în subcapitolul următor. Exemplul 8.4:
Se consideră sistemul de ecuaţii diferenţiale:
⎧dx 1 ( t ) / dt = t ⋅ x 1 ( t ) − x 2 ( t ) ; x 1 (0) = s1 , x 2 (0) = s 2 ; t ∈ [0, T] . ⎨ ⎩dx 2 ( t ) / dt = − x1 ( t ) + x 2 ( t ) Se utilizează formula Taylor de ordinul II, pentru integrarea sistemului de ecuaţii, folosind un pas de integrare constant h = T / N , într-un număr precizat de puncte N, t i = i ⋅ h , i = 1,..., N :
8.2
Metode directe
279
x [i +1] = x [i ] + h ⋅ f ( t i , x [i ] ) + (h 2 / 2) ⋅ f (1) ( t i , x [i ] );
[
x [i ] = x 1[i ]
]
x [2i ] , i = 0,1,..., N; x [0] = [s1 s 2 ]T . T
Ţinând cont de următoarele relaţii: f ( t , x ( t )) = [f 1 ( t , x ( t )) f 2 ( t , x ( t ))] = [t ⋅ x 1 ( t ) − x 2 ( t ) − x 1 ( t ) + x 2 ( t )] , T
f
(1)
( t , x ( t )) =
T
∂f ( t , x ( t )) + ∂t dx dx ∂f ∂f ( t , x ( t )) ⋅ 1 ( t , x ( t )) + ( t , x ( t )) ⋅ 2 ( t , x ( t )) ∂x 1 dt ∂x 2 dt
dx 1 ( t ) / dt = f 1 ( t , x ( t )), dx 2 ( t ) / dt = f 2 ( t , x ( t )) ,
se obţine formula de integrare pentru rezolvarea numerică a sistemului de ecuaţii diferenţiale, subiect al acestui exemplu: ⎡ t ⋅ x [i ] − x [2i ] ⎤ h 2 ⎡( t i2 + 2) ⋅ x 1[i ] − ( t i + 1) ⋅ x [2i ] ⎤ , x [i+1] = x [i ] + h ⋅ ⎢ i [1i ] + ⋅⎢ [i ] ⎥ [i ] [i ] ⎥ ⎢⎣ − x 1 + x 2 ⎥⎦ 2 ⎢⎣ − ( t i + 1) ⋅ x 1 + 2 ⋅ x 2 ⎥⎦ i = 0,1,..., N − 1. 8.2.3 Metodele Runge-Kutta ordinul p
În cadrul metodelor Runge-Kutta se înlocuiesc calculele pentru derivatele de ordin superior ale funcţiei f, care intervin în metodele de tip Taylor, prin evaluarea acestei funcţii în diverse puncte ale fiecărui interval [ t i , t i +1 ], i = 0,1,...., N − 1 . Aceste evaluări elimină dezavantajul menţionat pentru formula generală Taylor de ordin p. Fără a restrânge generalitatea, se consideră punctele de integrare echidistante, altfel spus un pas de integrare constant: h i = t i +1 − t i = h = ( t N − t 0 ) / N, i = 0,1,..., N − 1 .
Ca urmare, formula de integrare Taylor de ordinul p (8.23) devine: h 2 (1) h p ( p−1) ⋅ f (t i , y i ) + … + ⋅f ( t i , y i ), 2! p! i = 0,1,..., N − 1; y( t 0 ) = y 0 . y i+1 = y i + h ⋅ f (0) ( t i , y i ) +
Pentru înlocuirea derivatelor de ordin superior ale funcţiei f, se caută o relaţie de recurenţă de tipul următor:
280
8.
Ecuaţii diferenţiale ordinare cu condiţii iniţiale
y i+1 = y i + h ⋅ [α 0 ⋅ f ( t i , y i ) + α1 ⋅ f ( t i + μ1 ⋅ h , y i + ν1 ⋅ h ) + α 2 ⋅ f (t i + μ 2 ⋅ h, y i + ν 2 ⋅ h ) + …
]
+ α p −1 ⋅ f ( t i + μ p −1 ⋅ h , y i + ν p −1 ⋅ h ) , i = 0,1,..., N − 1
sau, mai convenabil, sub forma următoare, unde condiţia iniţială y 0 este considerată a fi cunoscută (precizată): y i +1 = y i + α 0 ⋅ k 0 + α 1 ⋅ k 1 + … α p −1 ⋅ k k −1 ;
(8.24)
i = 0,1,..., N − 1; t i = t 0 + i ⋅ h; k 0 = h ⋅ f ( t i , y i ), k 1 = h ⋅ f ( t i + μ1 ⋅ h, y i + λ1,0 ⋅ k 0 ),
k 2 = h ⋅ f ( t i + μ 2 ⋅ h, y i + λ 2,0 ⋅ k 0 + λ 2,1 ⋅ k 1 ), k p −1 = h ⋅ f ( t i + μ p −1 ⋅ h , y i + λ p −1, 0 ⋅ k 0 + λ p −1,1 ⋅ k 1 + … + λ p −1,p − 2 ⋅ k p − 2 ) (8.24), Coeficienţii implicaţi în relaţia de integrare anume α i , i = 0,1,..., p − 1, μ • , λ •,• , se determină astfel încât să se realizeze coincidenţa cu formula Taylor de ordin p, descrisă generic de formula (8.23). Observaţie: Metoda Runge-Kutta de ordinul p=1 coincide cu metoda Euler explicită sau Taylor de ordinul I. În acest caz particular, se poate scrie: y i+1 = y i + α 0 ⋅ k 0 , unde α 0 = 1 şi k 0 = h ⋅ f ( t i , y i ), i = 0,1,..., N − 1. Pentru această formulă, eroarea de trunchiere la un pas este de ordunul lui h 2 . Se ilustrează principiul metodelor Runge-Kutta, utilizând formula de integrare (8.24) şi considerând, în cele ce urmează, ordinul p = 2 . Astfel, metoda Taylor de ordinul II constă în utilizarea formulei: y i +1 = y i +
h (0) h 2 (1) ⋅ f (t i , yi ) + ⋅ f (t i , yi ) 1! 2
(8.25)
Eroarea de trunchiere la un pas de integrare este de ordinul e T1 = O ( h 3 ) . Aşa cum s-a arătat în general în cadrul subcapitolului anterior, derivata de ordinul întâi a funcţiei f este: f (1) ( t i , y i ) = f t ( t i , y i ) + f y ( t i , y i ) ⋅ f ( t i , y i ) . Înlocuind această expresie în relaţia (8.25), se obţine: y i+1 = y i +
[
]
h (0) h2 ⋅ f (t i , y i ) + ⋅ f t ( t i , y i ) + f y ( t i , y i ) ⋅ f ( t i , y i ) . (8.26) 1! 2
8.2
Metode directe
Pe de altă parte, formula Runge-Kutta de ordinul II are expresia: y i +1 = y i + α 0 ⋅ k 0 + α 1 ⋅ k 1 ; k 0 = h ⋅ f ( t i , y i ), k 1 = h ⋅ f ( t i + μ ⋅ h , y i + λ ⋅ k 0 ).
281
(8.27)
Coeficienţii α 0 , α1 , μ, λ se determină astfel încât relaţiile de calcul (8.26) şi (8.27) să coincidă. Pentru aceasta, în relaţia (8.27) se înlocuiesc coeficienţii k 0 şi k 1 şi se dezvoltă în serie Taylor funcţia f ( t i + μ ⋅ h , y i + λ ⋅ k 0 ) , în jurul punctului ( t i , y i ) , reţinând primii doi termeni ai dezvoltării. Astfel, se comite o eroare de trunchiere de ordinul e T 2 = O ( h 2 ) . Se obţin următoarele: y i +1 = y i + α 0 ⋅ h ⋅ f ( t i , y i ) + α 1 ⋅ h ⋅ f ( t i + μ ⋅ h , y i + λ ⋅ h ⋅ f ( t i , y i )) = y i + α 0 ⋅ h ⋅ f (t i , y i ) + h ⋅μ h⋅λ ⎡ ⎤ α 1 ⋅ h ⋅ ⎢f ( t i , y i ) + ⋅ f t (t i , y i ) + ⋅ f y ( t i , y i ) ⋅ f ( t i , y i )⎥ (8.28) 1! 1! ⎣ ⎦ = y i + h ⋅ (α 0 + α 1 ) ⋅ f ( t i , y i ) +
[
]
h 2 ⋅ α1 ⋅ μ ⋅ f t (t i , y i ) + α1 ⋅ λ ⋅ f y (t i , y i ) ⋅ f (t i , y i ) .
Din relaţiile (8.26) şi (8.28) rezultă următoarele, unde c este o constantă reală arbitrară: α 0 + α1 = 1; α1 ⋅ μ = 1 / 2; α1 ⋅ λ = 1 / 2 ⇒ α 0 = 1 − c; α1 = c; μ = 1 /( 2 ⋅ c); λ = 1 /( 2 ⋅ c). Pentru alegerea uzuală c = 1 / 2 , se obţine formula Runge-Kutta de ordinul II: 1 1 ⋅ k 0 + ⋅ k 1 ; t i = t 0 + i ⋅ h , i = 0,1,..., N − 1; 2 2 k 0 = h ⋅ f ( t i , y i ), k 1 = h ⋅ f ( t i + h , y i + k 0 ); y 0 − precizat. y i+1 = y i +
Eroarea totală de trunchiere la un pas este compusă din eroarea e T1 de la trunchierea formulei Taylor de ordinul II şi din eroarea e T 2 comisă la dezvoltarea din relaţia (8.28). Astfel, eroarea de trunchiere la un pas a formulelor Runge-Kutta de ordinul II este de ordinul lui h 3 . Uzual folosită este formula Runge-Kutta de ordinul IV, descrisă prin următoarele relaţii de calcul: 1 y i+1 = y i + ⋅ ( k 0 + 2 ⋅ k 1 + 2 ⋅ k 2 + k 3 ); t i = t 0 + i ⋅ h , i = 0,1,..., N − 1; 6 1 1 k 0 = h ⋅ f ( t i , y i ), k1 = h ⋅ f ( t i + ⋅ h , y i + ⋅ k 0 ), 2 2 1 1 k 2 = h ⋅ f ( t i + ⋅ h , y i + ⋅ k 1 ), k 3 = h ⋅ f ( t i + h , y i + k 2 ); y 0 − precizat. 2 2
282
8.
Ecuaţii diferenţiale ordinare cu condiţii iniţiale
Pentru această formulă, eroarea de trunchiere la un pas de integrare este de ordinul lui h 5 . Exemplul 8.5:
Se reia Exemplul 8.4. De această dată se deduc formulele de integrare Runge-Kutta de ordinul II, obţinând relaţia generală de calcul: x [i+1] = x [i ] +
1 1 ⋅ k 0 + ⋅ k1 ; 2 2
k 0 = h ⋅ f ( t i , x [i ] ), k 1 = h ⋅ f ( t i + h , x [i ] + k 0 );
[
x [i ] = x 1[i ]
]
x [2i ] , x [0] = [s1 s 2 ]T ; i = 0,1,..., N − 1; t i = i ⋅ h. T
Ţinând cont de expresia funcţiei f (Exemplul 8.4), rezultă următorii vectori de coeficienţi pentru acest exemplu: ⎡ t ⋅ x [i ] − x [2i ] ⎤ ⎡ k 1,0 ⎤ ; k0 = ⎢ = h ⋅ ⎢ i [1i ] ⎥ [i ] ⎥ ⎣ k 2, 0 ⎦ ⎣⎢ − x 1 + x 2 ⎦⎥ ⎡( t i + h ) ⋅ ( x [i ] + k 1,0 ) − ( x [i ] + k 2,0 )⎤ ⎡ k 1,1 ⎤ 1 2 k1 = ⎢ ⎥. ⎥ = h⋅⎢ [i ] [i ] k − + + + ( x k ) ( x k 2,0 ) ⎥⎦ 2 , 1 ⎢ ⎦ ⎣ 1,0 1 2 ⎣ 8.2.4 Metodele Runge-Kutta cu pas autoadaptabil
O manieră standard de a determina acurateţea soluţiei furnizate de o formulă de integrare este de a calcula aceasta cu pasul de integrare h i , obţinând o primă estimaţie y 1i +1 , şi de a recalcula soluţia lucrând cu pasul pe jumătate h 1 / 2 , obţinând estimaţia y i2+1 , după schema: hi i /2 i /2 y i ⎯⎯→ y1i +1 ; y i ⎯h⎯ ⎯→ y1i +1 / 2 ⎯h⎯ ⎯→ y i2+1
Se compară cele două valori final obţinute şi dacă este îndeplinită condiţia: | y1i +1 − y i2+1 |≤ ε , unde ε este o precizie impusă, atunci se reţine drept aproximaţie y i +1 = y i2+1 . Astfel, dacă modificările sunt neglijabile, atunci rezultatele sunt acceptate, iar dacă nu, se înjumătăţeşte din nou pasul. Însă pasul de integrare nu se poate micşora excesiv de mult, deoarece erorile de rotunjire se pot acumula nepermis de mult. În plus, procedeul are dezavantajul că este costisitor ca timp de calcul, datorită diferitelor evaluări ale funcţiei de integrat f. Ca urmare, a apărut ideea de a folosi două formule de tip Runge-Kutta, de
8.2
Metode directe
283
ordine diferite, de exemplu Runge-Kutta II şi III, Runge-Kutta IV şi V etc. Abordarea se bazează pe evaluări ale funcţiei f în aceleaşi puncte, cu excepţia unui punct suplimentar pentru formula de ordin superior. Pentru un pas de integrare anumit, se aplică cele două formule. Dacă diferenţa dintre valorile calculate se înscrie într-o anumită eroare prescrisă, atunci se alege valoarea corespunzătoare formulei de ordin superior. Dacă testul eşuează, abia atunci se recurge la înjumătăţirea pasului de integrare, după schema prezentată anterior. Astfel, metoda propusă de Fehlberg calculează două estimări pentru noua valoare y i +1 , utilizând formulele Runge-Kutta de ordinele IV şi V, după care se compară rezultatele: h
h
RK − IV
RK − V
(1) V ( 2) i i y i ⎯⎯→ y iIV +1 ; y i ⎯⎯→ y i +1 .
Ambele formule utilizează aceiaşi coeficienţi, fiind necesare numai şase evaluări de funcţii. O îmbunătăţire a acestui principiu se bazează pe adaptarea pasului de integrare în funcţie de natura funcţiei f de integrat. Astfel, pentru variaţiile lente ale funcţiei f, pasul de integrare este crescut, iar pentru variaţii bruşte ale funcţiei, pasul este micşorat. Adaptarea pasului nu se realizează prin înjumătăţire, ci în funcţie de erorile prescrisă şi obţinută. Aceste concepte sunt detaliate în continuare. Metoda Runge-Kutta-Moler de ordinul II-III cu pas autoadaptabil
Fie ecuaţia vectorială diferenţială ordinară de ordinul întâi:
d x(t) = f ( t, x ( t )) dt cu x ( t 0 ) condiţia iniţială cunoscută, unde x ( t ) = [x 1 ( t ) … x n ( t )] şi funcţia T
vectorială de integrat este f ( t , x ( t )) = [f 1 ( t , x ( t )) … f n ( t , x ( t ))] . Integrarea T
are loc pe intervalul [ t 0 , t f ] şi se obţine x [i ] ≅ x ( t i ), i = 1,2,...; x [ 0] = x ( t 0 ) , unde t i ∈ [ t 0 , t f ] . Se cunoaşte aproximaţia x [i ] , obţinută pentru punctul de integrare t i . Pentru determinarea aproximantului x [i +1] ≅ x ( t i +1 ) , corespunzător punctului t i +1 = t i + h , se folosesc formulele Runge-Kutta de ordinele II şi III: RK-II:
[i +1]
x II
=x
unde: [i ] k 1 = h ⋅ f ( t i , x ),
[i ]
+ (1 / 2) ⋅ (k 1 + k 2 ) k 2 = h ⋅ f (t i + h, x
[i ]
+ k 1 ),
284
8.
Ecuaţii diferenţiale ordinare cu condiţii iniţiale
eroarea de trunchiere la un pas fiind e T = O(h 3 ) ; [i +1]
RK-III: x III = x
[i ]
+ (1 / 6) ⋅ (k 1 + 4 ⋅ k 3 + k 2 )
unde: k 1 = h ⋅ f ( t i , x [i ] ), k 2 = h ⋅ f ( t i + h , x [i ] + k 1 ), k 3 = h ⋅ f ( t i + h / 2, x [i ] + (1 / 4) ⋅ k 1 + (1 / 4) ⋅ k 2 ), eroarea de trunchiere la un pas fiind e T = O(h 4 ) . Se observă că sunt necesare doar trei evaluări ale funcţiei f, la fiecare pas de integrare. Cu aceste estimări calculate, se determină diferenţa lor, care este de ordinul lui h 3 :
1 i +1] E = x [III − x [IIi +1] = ⋅ (k1 − 2 ⋅ k 3 + k 2 ) [+e T ≅ O (h 3 )] . 3 Se notează δ =|| E || ∞ . Aceasta se numeşte “eroarea calculată” pentru noua estimaţie x [i +1] . Corespunzător, pasul cu care s-a lucrat este: h = h δ . Adaptarea pasului de integrare se realizează impunând condiţia; || E || ∞ ≤ τ , unde τ se numeşte “eroarea acceptabilă”. Aceasta din urmă se calculează cu relaţia: τ := tol ⋅ max{|| x [i ] || ∞ ,1} , în care tol reprezintă acurateţea dorită (uzual,
tol = 10 −3 ), iar max este funcţia maximum a valorilor argument. Pentru a obţine eroarea acceptabilă τ , ar trebui să se lucreze cu un pas de integrare h τ . Ţinând cont de faptul că eroarea E este de ordinul lui h 3 , se consideră că:
δ τ ≅ 3 3 hδ hτ
⇒ hτ ≅ hδ ⋅ 3
τ . δ
Pentru calculul pasului de integrare h τ , practic se foloseşte relaţia:
hτ = S⋅ hδ ⋅ 3
τ , δ
(8.29)
unde S este un parametru de siguranţă, având o valoare pozitivă subunitară, de exemplu 0.9. Strategia de calcul a soluţiei problemei de integrare şi de adaptare a pasului este următoarea: • dacă δ ≤ τ , atunci eroarea δ este acceptabilă şi se realizează următoarele atribuiri:
t i+1 ← t i + h; x [i+1] ← x [i] + (1 / 6) ⋅ (k1 + 4 ⋅ k 3 + k 2 );
8.2
•
Metode directe
285
şi în continuare, pentru punctul de integrare t i +1 , pasul este mărit conform relaţiei (8.29); altfel, δ > τ , şi se adaptează numai pasul de integrare, micşorându-se, anume: o dacă δ ≠ 0 , atunci h nou ← min{h max , h τ } , unde h max este o valoare iniţială explicată în continuare, şi se reiau toate i +1] , E, τ, h τ , h ← h nou . calculele în secvenţa: x [IIi +1] , x [III
Procedura se execută în condiţia dublă : ( t i+1 < t f ) şi ( h ≥ h min ) , aceasta fiind şi condiţia de reluare a calculelor. Sunt folosite următoarele valori iniţiale ale diverşilor parametri de calcul:
h=
tf − t0 t − t0 t − t0 ; h min = f ; h max = f . 100 20000 5
Dacă la un anumit moment dat, anume pasul de integrare [k], este îndeplinită următoarea relaţie, atunci se realizează o corecţie a pasului de integrare: tk + h > tf
⇒
h ← tf − tk .
Dacă, însă, s-a ieşit din condiţia de reluare cu ( h < h min ) şi ( t i +1 < t f ) , atunci algoritmul de calcul nu converge, anume nu se poate găsi o soluţie. Soluţia numerică a sistemului de ecuaţii diferenţiale conţine toate valorile [i ] x corespunzătoarelor paşilor efectuaţi cu succes. Punctele de integrare nu sunt, în general, echidistante. Acest algoritm poate fi folosit în două moduri. Astfel, dacă nu interesează ca soluţia ecuaţiei diferenţiale vectoriale să fie obţinută în anumite puncte de integrare (precizate) din intervalul de observare [a,b], atunci procedura este apelată iniţializând t 0 = a şi t f = b . Dacă însă se doreşte soluţia în anumite puncte {Ti}, i = 1,2,…, N ale intervalului de observare [a,b], atunci procedura este apelată repetat, iniţializând t 0 = Ti şi t f = Ti +1 . Corespunzător, din şirul de valori obţinute pentru soluţie se reţine doar ultima valoare, anume cea corespunzătoare punctului t f = Ti +1 . Aceasta devine valoare (condiţie) iniţială pentru următorul interval de calcul, iniţial plecându-se de la x [ 0] = x ( t 0 ) . Pentru ilustrarea practică a acestor aspecte, cât şi pentru a compara diferite tipuri de metode Runge-Kutta fără şi cu pas autoadaptiv, se recomandă abordarea problemelor de studiu ce fac obiectul exerciţiilor propuse E8.3 şi E8.4.