Upload
others
View
6
Download
0
Embed Size (px)
Citation preview
Universitatea “Dunărea de Jos”
METODE NUMERICE Gabriel FRUMUŞANU
Galaţi - 2008
Departamentul pentru Învăţământ la Distanţă şi cu Frecvenţă Redusă Facultatea de Mecanica Specializarea Inginerie economica si industriala Anul de studii / Forma de învăţământ II/IFR
REFERENŢI ŞTIINŢIFICI: Prof. dr. ing. Nicolae OANCEA, Prof. dr. ing. Cătălina MAIER,
Universitatea „Dunărea de Jos” din Galaţi.
3
PREFAŢĂ
Apariţia şi perfecţionarea continuă a calculatoarelor electronice a
adus în prim-plan un domeniu al matematicii care exista de multă vreme şi care, iniţial, era prezentat ca o anexă a matematicii clasice: metodele numerice. În prezent acestea s-au constituit într-un domeniu de sine stătător, la graniţa cu programarea calculatoarelor şi cu ingineria.
În condiţiile în care viteza de lucru a calculatoarelor a atins limite de neimaginat, chiar în urmă cu un deceniu, calculul numeric oferă soluţii pentru orice problemă matematică a cărei rezolvare e necesară în tehnică; mai mult, soluţiile „aproximative” obţinute cu ajutorul metodelor numerice tind să se transforme, pe zi ce trece, în soluţii a căror precizie o depăşeşte cu mult pe ce a sistemelor tehnice.
Această carte se adresează studenţilor de la specializarea „Inginerie şi management”, forma de studiu cu frecvenţă redusă şi a fost, prin urmare, concepută modular, într-un număr de capitole egal cu numărul de cursuri din programă; fiecare capitol include noţiuni teoretice, de regulă şi câte un algoritm, exemple de aplicare şi chestiuni de verificare propuse.
Autorul
CUPRINS
5
CUPRINS
Prefaţă ......................................................................................................... 3 Cuprins ........................................................................................................ 5 CAPITOLUL 1 - Reprezentarea algoritmilor în pseudo-cod ……………. 7 CAPITOLUL 2 - Rezolvarea ecuaţiilor algebrice prin metoda generală … 17 CAPITOLUL 3 - Rezolvarea ecuaţiilor algebrice prin metoda bisecţiei … 23 CAPITOLUL 4 - Rezolvarea ecuaţiilor algebrice prin metoda
Newton – Raphson ……….. 27 CAPITOLUL 5 - Rezolvarea ecuaţiilor algebrice prin metoda
punctului fix ……………… 33 CAPITOLUL 6 - Rezolvarea sistemelor de ecuaţii liniare prin
metoda Gauss …………….. 37 CAPITOLUL 7 - Rezolvarea sistemelor de ecuaţii liniare prin
metoda Jacobi …………….. 43 CAPITOLUL 8 - Rezolvarea sistemelor de ecuaţii liniare prin
metoda Gauss - Seidel ……. 49 CAPITOLUL 9 - Polinomul de interpolare a lui Lagrange ……………… 53 CAPITOLUL 10 - Polinomul de interpolare a lui Newton ………………. 59 CAPITOLUL 11 - Aproximarea cu abatere medie pătratică minimă ……. 67 CAPITOLUL 12 - Derivarea cu ajutorul polinomului de interpolare
Lagrange …………………. 71 CAPITOLUL 13 - Metode numerice pentru calculul integralei definite … 75 CAPITOLUL 14 - Exemple de aplicare a metodelor numerice
în ingineria tehnologică ….. 81 Bibliografie ................................................................................................. 90
CAPITOLUL 1 – Reprezentarea algoritmilor în pseudo-cod
7
Capitolul 1
REPREZENTAREA ALGORITMILOR ÎN PSEUDO-COD.
1. Caracterizarea lucrării
Rezolvarea problemelor ştiinţifice şi tehnice cu ajutorul calculatorului
presupune, mai întâi, găsirea unui algoritm specific şi, apoi, implementarea acestuia pe un sistem de calcul.
În afara algoritmului de rezolvare propriu-zis, un rol important în găsirea eficientă a soluţiei îl joacă alegerea corectă a structurilor de date utilizate. În esenţă, programul de calcul se bazează pe algoritm (descrierea operaţiilor ce vor fi efectuate pentru găsirea soluţiei) şi pe structura de date (modul în care se reprezintă datele de intrare, variabilele intermediare şi datele de ieşire).
Pentru descrierea structurilor de date şi a algoritmilor se poate utiliza un limbaj de programare (BASIC, PASCAL, FORTRAN, C++ etc.) sau un pseudo-limbaj cu o sintaxă mai permisivă (mai puţin rigidă). Pentru a evidenţia invarianţa algoritmilor la limbajul utilizat, de regulă se recurge la a doua soluţie.
Scopul acestei lucrări este de a familiariza utilizatorii cu gândirea algoritmică structurată (prin utilizarea pseudo-codului), de a evidenţia metodele de implementare a pseudo-codului în diferitele limbaje de programare şi, nu în ultimul rând, de a evidenţia importanţa tipurilor abstracte de date, cu caracter matematic (vectori, matrice, numere complexe, etc.).
METODE NUMERICE
2. Algoritmi de calcul. Stabilitatea şi condiţionarea algoritmilor.
Rezolvarea unei probleme practice, pornind de la un anumit set de date iniţiale, presupune utilizarea unui algoritm de calcul, pentru obţinerea datelor de ieşire căutate, potrivit schemei
8
Algoritmul de calcul reprezintă un sistem de reguli care transformă datele de intrare în date de ieşire, cu ajutorul unor operaţii succesive, unic determinate. Un algoritm de calcul trebuie să îndeplinească următoarele cerinţe:
Generalitate; se înţelege prin aceasta că nu este suficient ca un algoritm să permită rezolvarea doar a unei probleme oarecare, ci trebuie să permită rezolvarea tuturor problemelor din categoria respectivă.
Finitudine; numărul de transformări intermediare (iteraţii) aplicate datelor de intrare pentru a obţine datele de ieşire trebuie să fie finit.
Unicitate; transformările intermediare trebuie să fie unic determinate (să conducă de fiecare dată la obţinerea aceloraşi rezultate).
Un algoritm de calcul este stabil dacă aplicat unei probleme cu date
iniţiale „uşor perturbate” conduce la o soluţie apropiată, într-un anume sens, de soluţia problemei cu datele iniţiale.
O altă noţiune, înrudită cu cea de stabilitate a unui algoritm, este cea de condiţionare a acestuia; un algoritm este bine condiţionat dacă mici erori relative în datele iniţiale se transmit în mici erori relative ale datelor de ieşire.
Condiţionarea unui algoritm se poate ilustra simplu, spre exemplificare, pentru calculul unei funcţii z = f(x, y) într-un punct (x, y). Aplicând formula lui Taylor se poate scrie
( ) ( ) ...yfxfy,xfyy,xxff yx +Δ⋅+Δ⋅=−Δ+Δ+=Δ (1)
În cazul în care y,x ΔΔ sunt suficient de mici, termenii de rang mai mare sau egal cu doi din (1.19) se pot neglija; rezultă
yfxfyfxfdff yxyx Δ⋅+Δ⋅≤Δ⋅+Δ⋅=≅Δ . (2)
Δf reprezintă, în această situaţie, eroarea absolută care afectează rezultatele ca efect al erorilor Δx şi Δy apărute în datele iniţiale; mai semnificativă este, însă, eroarea relativă a rezultatelor, care, pentru f 0 este ≠
Date de intrare Algoritm de calcul Date de ieşire
CAPITOLUL 1 – Reprezentarea algoritmilor în pseudo-cod
yf
fx
ff
ff yx Δ⋅+Δ⋅≤
Δ, (3)
relaţie care, pentru x, y 0, se poate rescrie ca ≠
yy
f
fy
xx
ffx
ff yx Δ⋅
⋅+
Δ⋅
⋅≤
Δ. (4)
Kx Ky
Coeficienţii Kx şi Ky de mai sus sunt denumiţi indici de condiţionare a problemei; se poate observa că algoritmul poate să nu fie bine condiţionat, în cazul în care aceşti indici au valori mari, chiar atunci când Δx şi Δy au valori relativ mici. 3. Descrierea pseudo-limbajului
Pseudo-codul este o metodă simplă şi eficientă pentru reprezentarea unui algoritm şi a structurilor de date asociate. Un algoritm redactat în pseudo-cod este, de fapt, un text alcătuit din linii (rânduri), fiecare dintre acestea conţinând, de regulă, o declaraţie (al cărui scop principal constă în descrierea datelor) sau o instrucţiune (care descrie o operaţie care urmează a fi efectuată).
Fiecare linie dintr-un text în pseudo-cod este alcătuită din cuvinte şi simboluri (caractere speciale nealfanumerice). Anumite cuvinte, cu o semnificaţie bine determinată, independentă de aplicaţie, se numesc „cuvinte cheie” şi, pentru a fi distinse faţă de celelalte cuvinte (specifice aplicaţiei), sunt, de obicei, subliniate (îngroşate).
Orice linie poate conţine precizări suplimentare, numite comentarii, care ajută la o mai bună înţelegere a algoritmului redactat în pseudo-cod, fără a face parte din descrierea propriu-zisă a acestuia sau din structura de date. Comentariile sunt amplasate la sfârşitul liniilor la care se referă şi încep cu caracterul „;”.
3.1. Structuri de date
Declaraţiile se referă la datele cu care se operează şi pot fi de tip simplu (fundamental) sau structurate (agregate).
Se consideră următoarele tipuri de date fundamentale:
logic - date cu două valori (0 = fals, 1 = adevărat);
întreg - date care pot lua doar valori întregi;
real - date ale căror valori aproximează numere reale;
caracter - literă, cifră sau semn special (aritmetic sau de punctuaţie). 9
METODE NUMERICE
10
Exemple de declaraţii ale unor variabile de tip fundamental:
logic l1, l2, l3 întreg i, j, s real a, m, x, j caracter c
După cum se poate constata, o declaraţie conţine cuvântul-cheie care specifică tipul, urmat de lista numelor variabilelor de tipul respectiv, separate între ele prin virgule. Numele variabilelor pot să fie alcătuite din litere şi cifre, primul caracter fiind, obligatoriu, o literă şi au semnificaţie limitată doar la aplicaţia respectivă. Se recomandă ca, în limita posibilităţilor, numele variabilelor să fie alese cât mai sugestiv iar, pentru eliminarea ambiguităţilor, fiecare mărime cu care se operează într-o problemă să aibă propria declaraţie, eventual însoţită de un comentariu lămuritor:
real m ; masa corpului real v ; viteza de aşchiere
Pentru rezolvarea unor probleme mai complexe, tipurile fundamentale de date nu sunt suficiente, recurgându-se la tipuri de date structurate, apelate prin cuvintele-cheie:
tablou - structură de date care conţine un număr cunoscut de elemente de acelaşi tip;
înregistrare - structură de date ce poate conţine elemente de tipuri diferite.
Exemple de declaraţii pentru tablouri:
tablou real V(3) ; V este un vector cu trei elemente reale tablou întreg A(5, 5); A este o matrice 5 x 5 cu elemente
întregi
Cu toate că tabloul are o singură denumire pentru întreaga structură de date, elementele acestuia se identifică prin index (număr de ordine), ca de exemplu V(2); A(1, 2); A(5, 4) etc.
3.2. Structuri de control
Instrucţiunile unui algoritm redactat în pseudo-cod descriu operaţiile pe care trebuie să le efectueze sistemul de calcul cu datele anterior descrise prin declaraţii.
Instrucţiunile sunt de două tipuri: simple şi structurate; cele simple sunt, la rândul lor, de trei feluri:
de atribuire;
CAPITOLUL 1 – Reprezentarea algoritmilor în pseudo-cod
de intrare;
de ieşire.
Instrucţiunea de atribuire are sintaxa:
variabilă = expresie
în care „variabilă” este numele unei variabile a cărei valoare urmează să fie modificată în urma instrucţiunii iar „expresie” este o construcţie sintactică alcătuită din constante, variabile, operatori şi paranteze, după regulile din algebră. Efectul execuţiei instrucţiunii de atribuire constă în evaluarea expresiei şi modificarea, în concordanţă, a variabilei al cărui nume se află în stânga semnului egal.
Se consideră că operanzii care intervin în expresii au valori corespunzătoare unuia dintre tipurile fundamentale. Dacă operanzii sunt de tip logic, atunci se admit operatori logici precum sau, şi, nu, ca în exemplele:
l1 = nu(l2) l3 = l1 sau l2 l4 = l1 şi l3
Dacă operanzii sunt numerici (real sau întreg), se admit operatori aritmetici: +, -, *, / sau de relaţie ( ≥≤>≤=
În primul caz rezultatul este de tip numeric iar, în al doilea, de tip logic.
Instrucţiunile de intrare – ieşire au sintaxa:
citeşte variabilă (listă variabile) scrie variabilă (listă variabile)
Prima instrucţiune are ca efect transferul pe canalul de intrare a unei valori (de exemplu introducerea de la tastatură), care modifică valoarea variabilei specificate, iar a doua are ca urmare transferul valorii variabilei pe canalul de ieşire (de exemplu, afişarea pe ecran sau tipărirea la imprimantă).
De exemplu, pseudo-codul:
real x, y, s, p citeşte x, y
s = x + y p = x * y
scrie s, p
11stop
METODE NUMERICE
reprezintă algoritmul unui program care calculează suma şi produsul a două numere reale, ale căror valori se citesc de la tastatură.
Programele se încheie printr-o altă instrucţiune simplă, cu sintaxa
stop
care are ca efect terminarea execuţiei programului respectiv. Pentru realizarea unor operaţii mai complicate se utilizează, în afara
instrucţiunilor simple, instrucţiunile structurate, care sunt:
secvenţa;
decizia (cu sau fără alternativă);
ciclul (cu test iniţial, cu test final sau cu contor);
rutina (procedură sau funcţie).
Secvenţa sau blocul de instrucţiuni reprezintă un şir de instrucţiuni simple sau structurate (redactate câte una pe linie, în linii succesive), care se execută una după alta, în ordinea în care au fost scrise; programul de mai sus este un exemplu de secvenţă.
Decizia este o instrucţiune care permite controlul execuţiei şi are una dintre următoarele variante sintactice:
decizia simplă:
dacă condiţie atunci secvenţă
decizia cu alternativă:
dacă condiţie atunci secvenţa 1 altfel secvenţa 2
în care „condiţie” este o expresie de tip logic, iar „secvenţa” este o secvenţă de una sau mai multe instrucţiuni. Pentru a uşura înţelegerea acestei instrucţiuni, se constată că secvenţele sunt redactate indentat – decalate faţă de cuvântul-cheie dacă. În urma execuţiei acestei instrucţiuni, se evaluează expresia logică „condiţie”; dacă valoarea rezultată este adevărată, atunci se execută „secvenţa” (respectiv „secvenţa 1”), altfel se continuă cu instrucţiunea următoare (respectiv se execută „secvenţa 2”).
Exemple de instrucţiuni de decizie:
; calculul funcţiei modul, xy = dacă atunci 0x ≥ y = x
12
CAPITOLUL 1 – Reprezentarea algoritmilor în pseudo-cod
altfel y = -x
; calculul funcţiei ⎪⎩
⎪⎨
⎧
>
≤≤−−<
=
1x,x
1x1,x21x,0
y2
dacă x 0 repetă s = s + ak k = k + 1 scrie s
poate fi utilizat pentru a aduna elementele unui tablou (de tip şir) până la întâlnirea primului element negativ.
Ciclul cu test final are sintaxa:
repetă secvenţa până când condiţie
„secvenţa” fiind executată repetat până când „condiţia” devine adevărată. 13
METODE NUMERICE
Deosebirea faţă de ciclul cu test iniţial constă în aceea că, în acest caz, corpul ciclului este executat cel puţin o dată. În exemplul următor, se calculează cu o eroare maximă impusă, suma seriei cu termenul general (-1)k/k!.
t = 1 k = 0 s = 0 repetă t = -t / k s = s + t k = k + 1 până când t < eps
Ciclul cu contor permite repetarea unei secvenţe de un număr determinat de ori. Sintaxa ciclului cu contor este:
pentru contor = val_ini, val_fin, pas repetă secvenţă
în care „contor” este numele unei variabile de tip întreg, „val_ini”, „val_fin” şi „pas” sunt constante sau expresii de tip întreg. Secvenţa de instrucţiuni din corpul ciclului este repetată pentru valori succesive ale contorului, pornind de la valoarea iniţială „val_ini”, incrementat cu pasul „pas”, până când acesta depăşeşte valoarea finală „val_fin”. Dacă în instrucţiune lipseşte valoarea „pas”, se presupune că aceasta are valoarea implicită 1.
În exemplul următor:
s = 0 pentru k = 1, n s = s + ak scrie s
se calculează suma primelor n elemente ale unui tablou.
Se întâlnesc, frecvent, situaţii în care o anumită secvenţă de instrucţiuni trebuie executată de mai multe ori, în momente diferite ale execuţiei unui program. Pentru a se evita rescrierea de mai multe ori a acestei secvenţe se recurge la conceptul de rutină.
Rutina reprezintă o secvenţă de declaraţii şi instrucţiuni căreia i se atribuie un nume. Dacă într-un program se face apel la o rutină, controlul execuţiei se transferă rutinei, iar după încheierea acesteia se revine în programul apelant.
14
În consecinţă, o rutină presupune, pe de o parte, definiţia acesteia (prin specificarea declaraţiilor şi instrucţiunilor care o alcătuiesc) iar, pe de altă parte, apelarea ei. Utilizarea rutinelor este justificată chiar şi în cazul în care ele sunt apelate o singură dată într-un program, deoarece ele permit structurarea
CAPITOLUL 1 – Reprezentarea algoritmilor în pseudo-cod
15
modulară a unui algoritm. Pentru a realiza acest deziderat, o rutină trebuie să aibă o anumită consistenţă, să îndeplinească o funcţie bine definită, care să permită reutilizarea ei şi în cadrul altor programe.
După modul de apelare, rutinele se împart în două categorii: proceduri şi funcţii.
Procedura este definită printr-o construcţie sintactică de forma:
procedură nume(listă de parametri formali) secvenţă retur
în care „nume” este numele procedurii, alcătuit din caractere alfanumerice, iar lista parametrilor formali conţine nume de parametri, separate prin virgule. O parte din parametrii formali sunt parametri de intrare (ale căror valori provin din programul apelant şi se transferă procedurii) iar alţii sunt parametri de ieşire (ale căror valori se determină în procedură şi se transferă, apoi, programului apelant). Apelarea unei proceduri astfel definite se face prin invocarea numelui ei, urmat de lista parametrilor actuali:
nume(listă de parametri actuali)
Parametrii actuali trebuie să concorde, ca număr, tip şi ordine, cu cei formali (dar nu neapărat şi ca nume). În exemplul următor,
citeşte a, b sumprod(a, b, s, p) scrie s, p sumprod(s, p, s1, p1) scrie s1, p1
se face apel la procedura definită în continuare:
procedură sumprod(x, y, sumă, prod) real x, y, sumă, prod sumă = x + y prod = x * y retur
care are pe x şi y ca parametri formali de intrare şi sumă, prod – parametri formali de ieşire.
În urma primului apel al acestei proceduri (cu parametri actuali de intrare a şi b) se calculează şi afişează s = a + b, p = a * b iar în urma celui de-al doilea apel se calculează şi se afişează s1 = s + p + a * b, şi p1 = (a + b) * a * b.
În cazul unei proceduri, numărul parametrilor de intrare sau de ieşire este arbitrar (poate fi, inclusiv, nul).
Funcţia este o variantă de rutină la care toţi parametrii formali sunt parametri de intrare, dar rutina întoarce o valoare. Definiţia funcţiei se realizează prin construcţia sintactică
METODE NUMERICE
16
funcţia nume(listă de parametri formali) secvenţă întoarce valoare
Funcţia poate fi apelată ca operand într-o expresie, în particular în atribuirea
valoare = nume(listă de parametri actuali)
Funcţia se aseamănă cu o procedură cu un singur parametru de ieşire, dar, faţă de aceasta, are o flexibilitate suplimentară în apelare. Exemplul următor
real a, b citeşte a, b x = min(a, b) / max(a, b) scrie a, b
recurge la utilizarea a două funcţii, min şi max, definite prin
funcţia max(x, y) ; valoarea maximă real x, y, m dacă x > y atunci m = x altfel m = y întoarce m
funcţia min(x, y) ; valoarea minimă real x, y, m dacă x > y atunci m = y altfel m = x întoarce m
Funcţiile elementare (modul, radical, putere, exponenţială, logaritm, sinus, cosinus etc.) se consideră predefinite în pseudo-cod, deoarece majoritatea limbajelor de programare de nivel înalt le au implementate.
4. Chestiuni de verificare
4.1. Să se scrie o procedură care să calculeze produsul scalar a doi vectori. 4.2. Să se scrie o procedură de înmulţire a matricelor dreptunghiulare. 4.3. Să se scrie algoritmul unui program care să calculeze
⎪⎩
⎪⎨
⎧
>≤≤−−
−<=
3x,xln3x5,3x5
5x,xsiny
CAPITOLUL 2 – Rezolvarea ecuaţiilor algebrice prin metoda generală
Capitolul 2
REZOLVAREA ECUAŢIILOR ALGEBRICE PRIN METODA GENERALĂ.
1. Principiul metodei
Fie funcţia şi ecuaţia f(x) = 0. Dacă f este un polinom
sau poate fi adusă la formă polinomială, în urma unor transformări, ecuaţia se numeşte algebrică; în caz contrar este vorba de o ecuaţie transcendentă.
RRD:f →⊂
Algebra clasică oferă formule şi algoritmi care permit rezolvarea exactă doar pentru o mică parte din ecuaţiile care intervin în soluţionarea diverselor probleme practice din domeniul ingineriei; chiar şi atunci când astfel de posibilităţi există (dar aplicarea lor este complicată), ca şi în toate celelalte cazuri, rezolvarea numerică a ecuaţiilor este calea de urmat.
Rezolvarea oricărei ecuaţii, pe cale numerică, presupune parcurgerea a două etape:
Separarea rădăcinilor ecuaţiei, care presupune determinarea unui interval de existenţă pentru fiecare dintre rădăcinile reale ale ecuaţiei.
Calculul aproximativ pentru fiecare rădăcină reală a ecuaţiei şi evaluarea erorii.
În ceea ce priveşte separarea rădăcinilor, aceasta se poate realiza, spre exemplu prin metoda clasică a şirului lui Rolle; alte posibilităţi sunt analiza datelor problemei practice ce conduce la ecuaţia respectivă, sau aproximarea
17
METODE NUMERICE
funcţiei f printr-un polinom de interpolare, rădăcinile polinomului de interpolare servind ca valori aproximative iniţiale ale rădăcinilor ecuaţiei.
Cu toate că metoda generală de rezolvare numerică a unei ecuaţii poate fi apreciată ca fiind mai rudimentară decât metodele „clasice”, aplicabilitatea metodei este extrem de largă, ea ilustrând foarte bine mecanismul general al algoritmilor de căutare a soluţiei unei ecuaţii.
Fig. 1 - Metodă generală de rezolvare numerică a ecuaţiilor
Fie , despre care se cunoaşte că [ ] Rb,a:f → ( ) ( )b,a∈ξ∃ , unic, astfel
încât f(ξ) = 0; considerându-se, potrivit primului criteriu enunţat mai sus, o valoare maximă admisibilă a erorii er1 (renotată, pentru simplitate, cu er), se va considera soluţie a ecuaţiei orice număr xk pentru care ( ) erx kf ≤ .
Metoda presupune, mai întâi, generarea unui şir de (n+1) puncte echidistante între a şi b, potrivit relaţiei
( ) ( )1n...2,1k,n
ab1kax k −=−
⋅−+= , (1)
după care se testează condiţia ( ) erxf k ≤ ; în cazul în care răspunsul este afirmativ, punctul în cauză este inclus în mulţimea soluţiilor.
După cum se poate observa şi din figura 1, în general există mai multe puncte din şirul (1) care pot fi considerate soluţii (în cazul din figură - xk-2 , xk-1, xk ...). Numărul acestor puncte este egal cu numărul termenilor din şir cuprinşi în intervalul [α, β], unde α şi β sunt soluţiile din intervalul [a, b] ale ecuaţiei ( ) erxf = , α < β.
Pentru a alege din mulţimea soluţiilor aproximative pe cea mai apropiată de soluţia exactă, ξ, se poate recurge la două strategii:
18
CAPITOLUL 2 – Rezolvarea ecuaţiilor algebrice prin metoda generală
1) se calculează eroarea εk = f(xk), pentru fiecare soluţie potenţială, xk şi se alege ca soluţie finală cea pentru care eroarea este minimă, în valoare absolută;
2) se reduce valoarea erorii maxime admisibile, er, reducându-se astfel numărul de soluţii aproximative găsite; în cazul unui program de calcul construit pe baza acestei metode, prin rularea repetată a acestuia, pentru valori din ce în ce mai mici ale parametrului er, se poate ajunge, la un moment dat, la situaţia în care mulţimea soluţiilor potenţiale conţine un singur element, care poate fi declarat soluţie a ecuaţiei.
2. Algoritmul metodei program Metoda_generală real a,b ; domeniul de definiţie al funcţiei f real er ; eroarea maximă admisibilă a soluţiei real eps ; eroarea curentă întreg n ; numărul de iteraţii de efectuat întreg k ; contorul iteraţiilor
citeşte a, b, n, er pentru k = 1, n-1 repetă x = a + k * (b - a) / n dacă ( ) erxf < atunci eps = ( )xf scrie x ; soluţia aproximativă a ecuaţiei scrie eps ; eroarea între f(x) şi 0
stop 3. Exemplu de aplicare
Fie ecuaţia x = cos(x); dacă se consideră funcţia , f(x) = x - cos(x), se poate observa că f este continuă şi derivabilă că f(0) = -1, în
timp ce
RR:f →
22f π=⎟
⎠⎞
⎜⎝⎛ π .
Conform teoremei lui Rolle, rezultă că pe intervalul ⎟⎠⎞
⎜⎝⎛ π
2,0 funcţia f
se anulează cel puţin o dată; punctul ( )b,a∈ξ pentru care f(ξ) = 0 reprezintă soluţia exactă a ecuaţiei considerate.
Dacă se utilizează un program de calcul bazat pe această metodă pentru rezolvarea ecuaţiei, cu diverse valori ale parametrului n (din relaţia (1)) şi pentru diverse valori ale erorii maxime admisibile, er, se obţin rezultatele din tabelul 1.
19
METODE NUMERICE
După cum s-a menţionat deja, sunt situaţii în care se obţine o mulţime de soluţii potenţiale, dintre care trebuie selectată cea mai bună; dacă se utilizează a doua strategie de selecţie, pentru n = 100, în cazul în care er = 0.1 se găsesc 7 soluţii potenţiale, dacă er = 0.05 - 3 soluţii, în timp ce pentru er = 0.01 - o singură soluţie.
Evident, valoarea pentru er trebuie aleasă judicios, în corelaţie şi cu numărul de puncte, n; o reducere peste o anumită limită a erorii maxime admisibile conduce la a nu găsi nici o soluţie.
Dacă se recurge la prima strategie de selecţie a celei mai bune soluţii, programul trebuie să furnizeze şi valorile funcţiei f în fiecare din punctele corespunzătoare soluţiilor potenţiale (coloana a patra din tabelul 1); pe această bază se poate determina, cu uşurinţă, soluţia aproximativă a ecuaţiei.
Tab. 1
n
er
xk
f(xk)
0.691 -0.079 0.707 -0.054 0.722 -0.028 0.738 -0.001 0.754 0.025 0.770 0.052
0.1
0.785 0.078 0.722 -0.028 0.738 -0.001
0.05
0.754 0.025
100
0.02 0.738 -0.001 0.737 -0.004 0.738 -0.001 0.740 0.001
0.005
0.741 0.004 0.738 -0.001
1000
0.002 0.740 0.001
10000 0.0001 0.73906 -0.000043
Trebuie observat că metoda poate rezolva, la nivelul actual al calculatoarelor, o varietate largă de ecuaţii, rapid şi cu o precizie mai mult decât satisfăcătoare.
20
CAPITOLUL 2 – Rezolvarea ecuaţiilor algebrice prin metoda generală
21
4. Chestiuni de verificare
Să se rezolve prin metoda generală următoarele ecuaţii de forma f(x) = 0, cu precizia specificată, ştiind că admit câte o soluţie pe intervalele indicate:
4.1. f(x) = x2 – 5x + 4, er = 10-3, ( )3,0ξ∈ . 4.2. f(x) = x3 - 8x2 + 19x -12, er = 10-5, ( )2,1ξ −∈ . 4.3. f(x) = xlnxsin − , er = 10-6, ( )π,0ξ∈ .
CAPITOLUL 3 – Rezolvarea ecuaţiilor algebrice prin metoda bisecţiei
Capitolul 3
REZOLVAREA ECUAŢIILOR ALGEBRICE PRIN METODA BISECŢIEI.
1. Principiul metodei
Această metodă poate fi considerată o variantă mai evoluată a metodei
generale, atât deoarece viteza cu care se determină soluţia aproximativă este mai mare, cât şi pentru că permite cunoaşterea, de la bun început a numărului de iteraţii care trebuie parcurse pentru rezolvarea ecuaţiei, cu o precizie impusă.
Condiţia ca prin această metodă să se poată rezolva o ecuaţie de forma f(x) = 0 este ca f să existe un interval compact [a, b] astfel încât
[ ] [ ]( ) ( ) ( ) 0bfaf,b,aCf,Rb,a:f 0
METODE NUMERICE
Fig.1 - Metoda înjumătăţirii intervalului
Algoritmul de aplicare a metodei este prezentat în cele ce urmează, în
ipoteza în care f(a) > 0 şi f(b) < 0 (cealaltă variantă de aplicare a metodei şi anume când f(a) < 0 şi f(b) > 0 derulându-se analog).
Se calculează 2
bac0+
= , după care se evaluează funcţia f în punctul c0;
în cazul în care f(c0) = 0, înseamnă că, absolut întâmplător, s-a găsit soluţia exactă a ecuaţiei, ξ = c0 .
Dacă f(c0) > 0, se renotează c0 cu a1 şi b cu b1 (cazul din fig.2.3) iar, în caz contrar, a devine a1 şi c0 - b1 .
Se calculează 2
bac 111
+= , după care se determină f(c1); dacă f(c1) = 0
rezultă ξ = c1 .
Se înjumătăţeşte intervalul [a1 , b1], rezultând [a2, b2], fie renotându-se c1 cu a2 şi b1 cu b2 (cazul figurat), fie c1 cu b2 şi a1 cu a2 , în aşa fel încât să avem f(a2) · f(b2) < 0.
Se determină c2 , apoi a3 şi b3 , c3 , a4 şi b4 . . . şi aşa mai departe, până când, la un moment dat cn se constituie într-o aproximaţie suficient de bună a soluţiei exacte şi se adoptă ξ = cn .
Lungimea lk a intervalului oarecare din şir, [ak ,bk], rezultat din
intervalul [a, b] după k înjumătăţiri succesive este
24
CAPITOLUL 3 – Rezolvarea ecuaţiilor algebrice prin metoda bisecţiei
kk 2abl −= . (2)
Prin procedeul enunţat mai sus, se generează în paralel două şiruri - şi - primul dintre ele monoton crescător iar celălalt, monoton
descrescător, ambele având ca limită soluţia exactă a ecuaţiei: ( ) 0nna ≥ ( ) 0nnb ≥
ξ==∞→∞→
nnnnblimalim . (3)
Această afirmaţie poate fi susţinută dacă se observă că eroarea εn făcută prin aproximarea lui ξ cu cn este mărginită superior de un şir cu limita 0:
0lc nnn →≤−ξ=ε , atunci când . (4) ∞→n
Mai mult, dacă se impune, apriori, o limită maximă a erorii admisibile, er, din impunerea condiţiei ercn ≤ξ− se poate determina numărul minim de iteraţii (înjumătăţiri) care trebuie efectuate pentru a găsi soluţia aproximativă a ecuaţiei, Nmin:
12lner
abln1
erablogN 2min +
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡ −
=+⎥⎦⎤
⎢⎣⎡ −≥ , (5)
unde cu paranteze drepte s-a notat funcţia parte întreagă.
2. Algoritmul metodei program Metoda_bisecţiei real a,b ; domeniul de definiţie al funcţiei f real er ; eroarea maximă admisibilă întreg n ; numărul de iteraţii de efectuat întreg k ; contorul iteraţiilor
citeşte a, b, er n = [ln((b - a) / er) / ln(2)] + 1 ; calculul numărului de iteraţii k = 0 ; iniţializarea contorului
repetă k = k + 1 c = (a + b) / 2 dacă f(a) * f(c) > 0 atunci a = c altfel b = c
25
METODE NUMERICE
26
până când k > n
scrie x ; soluţia aproximativă a ecuaţiei top
. Exemplu de aplicare
x = c s 3
os(x), se poate observa că f este continuă şi derivabilă că
timp ce
Fie ecuaţia x = cos(x); dacă se consideră funcţia RR:f → , f(x) = x - c f(0) = -1, în
22⎟⎠
Considerând această ecuaţie şi pornind, de asemenea, de la intervalul
delimitat de a = 0 şi
f π=⎞⎜⎝⎛ π .
2b = , s-a utilizat un program deπ calcul bazat pe algoritmul
meto
10-3 trebuie efectuate Nmin = 11 iteraţii, soluţia aproximativă fiind
-6 trebuie efectuate Nmin = 21 iteraţii, soluţia aproximativă fiind
ebuie efectuate Nmin = 31 iteraţii, soluţia aproximativă fiind = 0
fiind relativ ic, chiar în cazul unor erori maxime admisibile extrem de reduse.
. Chestiuni de verificare
dei da faţă. Rezultatele sunt următoarele:
- pentru er =x = 0.7386;
- pentru er = 10x = 0.7390859;
- pentru er = 10-9 trx .7390851328.
După cum se poate observa, soluţia ecuaţiei este găsită mult mai repede faţă de cazul metodei generale, numărul de iteraţii necesarem 4
teraţii necesare cu cel de la rezolvarea aceloraşi ecuaţii prin metoda generală.
.1. f(x) = x2 – 5x + 4, er = 10-3,
Să se rezolve prin metoda bisecţiei ecuaţiile de mai jos, de forma f(x) = 0, cu precizia specificată, ştiind că admit câte o soluţie pe intervalele indicate. Să se compare numărul de i
( )3,0ξ∈ .
.2. f(x) = x3 - 8x2 + 19x -12, er = 10-5,
4
( )2,1ξ −∈4 .
4.3. f(x) = , er = 10-6,
xlnxsin − ( )π,0ξ∈ .
CAPITOLUL 4 – Rezolvarea ecuaţiilor algebrice prin metoda Newton - Raphson
Capitolul 4
REZOLVAREA ECUAŢIILOR ALGEBRICE PRIN METODA NEWTON - RAPHSON.
1. Principiul metodei
Funcţionarea acestei metode se bazează, ca principiu, pe generarea
unui şir de aproximaţii succesive ale soluţiei exacte, ξ, pentru o ecuaţie de forma f(x) = 0. Şirul de aproximaţii succesive, ( ) Nnnx ∈ , se construieşte pornind de la o valoare de start, x0 , convenabil aleasă, utilizând o formulă de tip recurent
( )
0n,hxf
xxn
nn1n ≥−=+ , (1)
unde hn = h(xn) este o funcţie nenulă (eventual o constantă) aleasă, de asemenea, convenabil.
Potrivit modului de definire a funcţiei hn , există mai multe metode, aşa-numite „clasice”: metoda Newton - Raphson (metoda tangentelor variabile), metoda tangentelor fixe, metoda secantelor variabile (regula Falsi) şi metoda secantelor fixe.
În cazul metodei Newton - Raphson, funcţia hn din relaţia (1) se alege de forma hn = f ’(xn) (derivata funcţiei f). Rezultă o formulă de recurenţă de tipul
( )( ) 0n,xfxf
xxn
nn1n ≥′−=+ . (2)
27
METODE NUMERICE
Formula (2) mai poartă şi numele de formula iterativă a lui Newton. Pentru rezolvarea numerică a unei ecuaţii de forma f(x) = 0 prin acest
procedeu, funcţia f trebuie să îndeplinească următoarele condiţii: , (adică f derivabilă de două ori pe [a, b], cu derivatele continui), iar
şi f păstrează semnul constant pe tot intervalul; în plus, mai trebuie ca f să aibă o singură rădăcină în intervalul considerat. Punctul de start, x0 , trebuie ales astfel încât
[ ] Rb,a:f →[ ]( b,aCf 2∈
f ′ ′′)
( ) ( ) 0xfx 00 >′′⋅f . Metoda are o interpretare geometrică sugestivă (figura 1).
A0
A1
A2
Fig.1 - Metoda Newton-Raphson - interpretare geometrică
Potrivit formulelor din Geometria analitică, ecuaţia tangentei dusă la curba y = f(x) într-un punct oarecare, de abscisă xk , este
( ) ( )( )kkk xxxfxfy −′=− . (3)
Dacă se notează cu xk+1 abscisa punctului în care această tangentă
intersectează axa Ox (obţinut pentru y = 0 în ecuaţia (3)) şi se exprimă xk+1 , se obţine formula lui Newton de mai sus.
În aceste condiţii, se poate observa că fiecare valoare, xk+1, din şirul aproximaţiilor succesive ale soluţiei ecuaţiei rezultă ca abscisa punctului de intersecţie, cu axa Ox, a tangentei la graficul funcţiei duse în punctul precedent, Ak , de abscisă xk . Metoda se mai numeşte şi metoda tangentelor variabile, deoarece panta fiecărei tangente, pe baza căreia se generează punctele din şir, are, în general, panta diferită de a celorlalte tangente (precedente sau următoare).
Funcţia φ, definită ca 28
CAPITOLUL 4 – Rezolvarea ecuaţiilor algebrice prin metoda Newton - Raphson
( ) ( )( )xfxfxx′
−=ϕ (4)
poartă numele de funcţie de iterare a metodei Newton - Raphson. Se poate verifica imediat că
( ) ξ=ξϕ , ( ) 0=ξϕ′ , ( ) 0≠ξϕ ′′ . (5)
Cu această notaţie, şirul aproximaţiilor succesive ale soluţiei ecuaţiei date se poate genera după formula xk+1 = φ(xk), k = 0, 1, 2, . . . (6)
Pentru estimarea modului în care se propagă eroarea în cazul metodei de faţă, precum şi pentru determinarea ordinului de convergenţă, se consideră dezvoltarea în serie Taylor, într-o vecinătate a punctului ξ,
( ) ( ) ( ) ( ) ( ) ( ) +ξϕ ′′⋅ξ−+ξϕ′⋅ξ−+ξϕ=ϕ!2
x!1
xx2
. . . (7)
Dacă în această dezvoltare se înlocuieşte x cu xn, se reţin doar termenii
de rang 0, 1 şi 2 şi se au în vedere relaţiile (5), rezultă
( ) ( ) ( )ξϕ ′′⋅ξ−+ξ≅ϕ2
xx
2n
n . (8)
Ţinând cont şi de (6), se poate scrie egalitatea
( ) ( )2n1n x2x ξ−⋅δϕ ′′
≅ξ−+ , (9)
ceea ce este echivalent cu
( ) 2n1n 2 εξϕ ′′
≅ε + . (10)
Din relaţia (10) rezultă, pe de o parte că metoda Newton - Raphson
este caracterizată de o convergenţă pătratică, fiind una dintre metodele cele mai rapide de rezolvare a unei ecuaţii de forma f(x) = 0; pe de altă parte, însă, metoda reclamă evaluarea funcţiei f şi a derivatei sale la fiecare iteraţie, ceea ce
29
METODE NUMERICE
poate fi, uneori, dificil (sau chiar imposibil, pentru funcţii care nu sunt cunoscute analitic, ci doar tabelar).
2. Algoritmul metodei program Metoda Newton_Raphson
real x0 ; punctul de pornire a căutării iteraţiilor real er ; eroarea maximă admisibilă real xvechi, xnou ; valoarea precedentă / curentă a soluţiei întreg n ; numărul de iteraţii efectuate întreg k ; contorul iteraţiilor
funcţia f(x) ; funcţia care defineşte ecuaţia real x f = …………… ; expresia funcţiei f întoarce f
funcţia df(x) ; derivata funcţiei f real x df = …………… ; expresia funcţiei df întoarce df
citeşte x0, er k = 0 ; iniţializarea contorului xnou = x0 ; iniţializarea şirului aproximaţiilor succesive repetă xvechi = xnou k = k + 1 xnou = xvechi - f(xvechi) / df(xvechi) până când erxvechixnou
CAPITOLUL 4 – Rezolvarea ecuaţiilor algebrice prin metoda Newton - Raphson
31
pentru er2 = 10-3 sunt necesari n = 3 iteraţii şi soluţia aproximativă este x = 0.7391;
pentru er2 = 10-6 sunt necesari n = 4 iteraţii şi soluţia aproximativă este x = 0.7390851;
pentru er2 = 10-9 sunt necesari n = 5 iteraţii şi soluţia aproximativă este x = 0.7390851332.
Rezultatele confirmă că metoda Newton - Raphson are o convergenţă mult mai bună decât a celorlalte prezentate până acum. 4. Chestiuni de verificare
Să se rezolve prin metoda Newton - Raphson ecuaţiile de mai jos, de forma f(x) = 0, cu precizia specificată, ştiind că admit câte o soluţie pe intervalele indicate. Să se compare numărul de iteraţii necesare cu cel de la rezolvarea aceloraşi ecuaţii prin metoda generală şi metoda bisecţiei.
4.1. f(x) = x2 – 5x + 4, er = 10-3, ( )3,0ξ∈ . 4.2. f(x) = x3 - 8x2 + 19x -12, er = 10-5, ( )2,1ξ −∈ . 4.3. f(x) = xlnxsin − , er = 10-6, ( )π,0ξ∈ .
CAPITOLUL 5 – Rezolvarea ecuaţiilor algebrice prin metoda punctului fix
Capitolul 5
REZOLVAREA ECUAŢIILOR ALGEBRICE PRIN METODA PUNCTULUI FIX.
1. Principiul metodei
Se spune că o funcţie are un punct fix , dacă g(ξ) = ξ
(fig.1). Altfel spus, o funcţie are unul sau mai multe puncte fixe dacă graficul său intersectează odată - sau de mai multe ori - prima bisectoare.
R:Dg → D∈ξ
Fig.1 - Interpretarea geometrică a punctelor fixe ale unei funcţii
33
METODE NUMERICE
Fie o ecuaţie de forma f(x) = 0, unde [ ] R:b,af → şi să presupunem că ecuaţia considerată are o unică soluţie reală [ ]b,a∈ξ .
Ecuaţia de mai sus poate fi scrisă, adunând x în ambii membri, în forma echivalentă g(x) = x (unde s-a notat f(x) + x = g(x)); după cum se va arăta într-un caz concret, această transformare a ecuaţiei iniţiale se poate realiza, în general, în mai multe moduri. Este uşor de observat că rădăcina ecuaţiei iniţiale satisface egalitatea g(ξ) = ξ, deci este un punct fix pentru funcţia g.
Cu ajutorul funcţiei g astfel obţinute se poate genera, pornind de la un număr arbitrar, x0, un şir de numere reale, utilizându-se formula de recurenţă
( ) 1n,xgx n1n ≥=+ . (1)
Dacă funcţia g este derivabilă pe intervalul [a, b], iar derivata acesteia
îndeplineşte condiţia ( ) ( ) [ ]b,ax,1xg ∈∀
CAPITOLUL 5 – Rezolvarea ecuaţiilor algebrice prin metoda punctului fix
2. Algoritmul metodei program Metoda punctului fix
real x0 ; punctul de pornire a căutării iteraţiilor real er ; eroarea maximă admisibilă real xvechi, xnou ; valoarea precedentă / curentă a soluţiei întreg n ; numărul de iteraţii efectuate întreg k ; contorul iteraţiilor
funcţia g(x) ; funcţia de punct fix real x g = …………… ; expresia funcţiei g întoarce g
citeşte x0, er k = 0 ; iniţializarea contorului
xnou = x0 ; iniţializarea şirului aproximaţiilor succesive
repetă xvechi = xnou k = k + 1 xnou = g(xvechi) până când erxvechixnou
METODE NUMERICE
36
◊ pentru er = 10-3 şi x0 = 2π ⇒x1 = 0.0008, x2 = 0.9999, x3 = 0.5403,
x4 =0.8575, x5 = 0.6543, x6 = 0.7935, x7 = 0.7014 . . . x19 = 0.7388;
◊ pentru er = 10-6 şi x0 = 0 ⇒x35 = 0.7390855;
◊ pentru er = 10-9 şi x0 = 0 ⇒x53 = 0.7390851335.
Se poate observa cum oscilează valorile şirului aproximaţiilor succesive, de o parte şi de alta a soluţiei exacte; de asemenea, se poate remarca şi convergenţa mai lentă a metodei, faţă de metoda Newton – Raphson.
4. Chestiuni de verificare
A. Fie ecuaţia f(x) = x2 - 2x - 3 = 0, având rădăcinile ξ1 = -1 şi ξ2 = 3. Să se studieze posibilitatea rezolvării acestei ecuaţii, prin metoda punctului fix, în următoarele trei cazuri:
4.1. ( ) 3x2xg += , x0 = 4;
4.2. ( )2x
3xg−
= , x0 = 0;
4.3. ( )2
3xxg
2n −= , x0 = 4.
B. Să se rezolve prin metoda Newton - Raphson ecuaţiile de mai jos,
de forma f(x) = 0, cu precizia specificată, ştiind că admit câte o soluţie pe intervalele indicate. Să se compare numărul de iteraţii necesare cu cel de la rezolvarea aceloraşi ecuaţii prin metoda generală şi metoda bisecţiei.
4.4. f(x) = x2 – 5x + 4, er = 10-3, ( )3,0ξ∈ . 4.5. f(x) = x3 - 8x2 + 19x -12, er = 10-5, ( )2,1ξ −∈ . 4.6. f(x) = , er = 10-6, xlnxsin − ( )π,0ξ∈ .
CAPITOLUL 6 – Rezolvarea sistemelor de ecuaţii liniare prin metoda Gauss
Capitolul 6
REZOLVAREA SISTEMELOR DE ECUAŢII LINIARE PRIN METODA GAUSS.
1. Principiul metodei
În primul rând, trebuie făcută precizarea că metodele numerice pentru
rezolvarea sistemelor de ecuaţii, care urmează a fi prezentate în continuare, sunt destinate abordării sistemelor de n ecuaţii cu n necunoscute, cu coeficienţi reali, despre care se cunoaşte, apriori, faptul că sunt compatibile.
Un sistem de forma
, (1)
⎪⎪⎩
⎪⎪⎨
⎧
=⋅++⋅+⋅
=⋅++⋅+⋅=⋅++⋅+⋅
nnnn22n11n
2nn2222121
1nn1212111
bxa...xaxa.............................................................bxa...xaxabxa...xaxa
în care pentru i = 1, 2, . . . n, j = 1, 2, . . . n, poartă numele de sistem de ecuaţii liniare.
Rb,a iij ∈
Detaliind, în continuare, trebuie arătat că metodele numerice utilizate pentru rezolvarea sistemelor de ecuaţii liniare se împart în două categorii: metode directe, care determină soluţia exactă a sistemului şi metode iterative, care - pornind de la o soluţie iniţială arbitrară - determină un şir de aproximaţii succesive ale vectorului - soluţie a sistemului. 37
METODE NUMERICE
Cea mai veche, cea mai bine cunoscută şi, totodată, cea mai utilizată metodă de rezolvare numerică a sistemelor de ecuaţii algebrice liniare este metoda Gauss, care face parte din categoria metodelor directe; principiul metodei este prezentat în continuare.
Pornindu-se de la un sistem de forma (1), se construieşte o matrice de forma
⎟⎟⎟⎟⎟
⎠
⎞
⎜⎜⎜⎜⎜
⎝
⎛
=
nnn2n1n
2n22221
1n11211
ba...aa...............ba...aaba...aa
A , (2)
rezultată prin alipirea la matricea coeficienţilor sistemului, A, a vectorului coloană a termenului liber, B. În continuare, algoritmul metodei urmăreşte transformarea matricei A într-o matrice ale cărei elemente situate sub diagonala a11 - a22 - . . . -ann să fie nule; trebuie parcurşi următorii paşi:
se calculează o serie de multiplicatori de forma 11
1i1i a
al = , după care din
fiecare linie „i” se scade linia întâi înmulţită cu li1, i = 2, 3, . . . n; în cazul în care a11 = 0, se schimbă prima linie cu o alta, care să aibă primul element nenul, după care se procedează la cele de mai sus. Rezultă, astfel, după renotare, o matrice de forma
⎟⎟⎟⎟⎟
⎠
⎞
⎜⎜⎜⎜⎜
⎝
⎛
=
)1(n
)1(nn
)1(2n
)1(2
)1(n2
)1(22
)1(1
)1(n1
)1(12
)1(11
)1(
ba...a0...............
ba...a0ba...aa
A ; (3)
se calculează o nouă serie de multiplicatori, de forma )1(
22
)1(2i
2ia
al = , după
care din fiecare linie „i” se scade linia întâi înmulţită cu li2, i = 3, 4, . . . n; în cazul în care a22(1) = 0, se schimbă a doua linie cu o alta, care să aibă al doilea element nenul, după care se procedează la cele de mai sus. Rezultă, astfel, după o nouă renotare, o altă matrice de forma
⎟⎟⎟⎟⎟
⎠
⎞
⎜⎜⎜⎜⎜
⎝
⎛
=
)2(n
)2(nn
)2(2
)2(n2
)2(22
)2(1
)2(n1
)2(12
)2(11
)2(
ba...00...............
ba...a0ba...aa
A ; (4)
38
CAPITOLUL 6 – Rezolvarea sistemelor de ecuaţii liniare prin metoda Gauss
se continuă aplicarea procedurii până când, după n-1 paşi, se obţine matricea
⎟⎟⎟⎟⎟
⎠
⎞
⎜⎜⎜⎜⎜
⎝
⎛
=
−−
−−−
−−−−
−
)1n(n
)1n(nn
)1n(2
)1n(n2
)1n(22
)1n(1
)1n(n1
)1n(12
)1n(11
)1n(
ba...00...............
ba...a0ba...aa
A , (5)
în care toate elementele de sub diagonala a11(n-1), a22(n-1), . . . ann(n-1) sunt nule. Dacă se renunţă, în notaţiile din această ultimă matrice, la exponenţii care indică numărul pasului şi se reface, pe baza ei, sistemul de ecuaţii, rezultă:
(6)
⎪⎪⎪
⎩
⎪⎪⎪
⎨
⎧
=⋅=⋅+⋅
=⋅+⋅++⋅=⋅+⋅++⋅+⋅
−−−−−
−−
−−
nnnn
1nnn1n1n1n1n
2nn21n1n2222
1nn11n1n1212111
bxabxaxa
............................................................................bxaxa.........xabxaxa...........xaxa
din ultima ecuaţie a sistemului (6) se determina xn, după care, înlocuind în
penultima ecuaţie pe xn, se determină xn-1 şi aşa mai departe, până când, în final, se înlocuiesc în prima ecuaţie valorile, deja aflate, pentru x2, x3, . . . xn şi se calculează x1.
Conform [11], numărul N de operaţii aritmetice simple necesar a fi
efectuate pentru rezolvarea, prin metoda Gauss, a unui sistem de ecuaţii liniare de rang n este
3
nn4N3 −
= (7)
Metoda Gauss, fiind o metodă directă, conduce la găsirea soluţiei
exacte a sistemului, în măsura în care acesta este compatibil. 2. Algoritmul metodei program Metoda Gauss
real l ; valoarea curentă a multiplicatorului de linie real s ; sumă auxiliară întreg n ; dimensiunea sistemului
39 întreg i, j, k ; contori
METODE NUMERICE
tablou real A(n,n) ; matricea sistemului tablou real B(n) ; vectorul-coloană a termenului liber tablou real X(n) ; vectorul-soluţie curentă
; introducere date de intrare
citeşte n pentru i = 1, n repetă citeşte b(i) pentru j = 1, n repetă citeşte a(i,j)
; eliminare
pentru k = 1, n-1 repetă pentru i = k+1, n repetă l = a(i,k) / a(k,k) pentru j = k+1, n repetă a(i,j) = a(i,j) - l·a(k,j) b(i) = b(i) - l·b(k)
; retro-substituţie
x(n) = b(n) / a(n,n) scrie x(n) pentru i = n-1, 1, -1 repetă s = b(i) pentru j = n, i+1, -1 repetă s = s - a(i,j)·x(j) x(i) = s / a(i,i) scrie x(i) stop 3. Exemplu de aplicare
Să se rezolve sistemul ⎪⎩
⎪⎨
⎧
=++=++
=++
31x17x4x228x10x3x4
11xxx2
321
321
321
.
Se construieşte matricea extinsă a sistemului, ⎟⎟⎟
⎠
⎞
⎜⎜⎜
⎝
⎛=
31174228103411312
A .
Se calculează multiplicatorii 224
aa
l11
2121 === , 12
2aa
l11
3131 === şi se
efectuează operaţiile L2 - l21 · L1 şi L3 - l31 · L1 (unde Li înseamnă linia „i”).
40
CAPITOLUL 6 – Rezolvarea sistemelor de ecuaţii liniare prin metoda Gauss
41
Rezultă ⎟⎟⎟
⎠
⎞
⎜⎜⎜
⎝
⎛=
2014306410
11312A
)1(; se calculează, apoi, multiplicatorul
313
a
al
)1(22
)1(32
32 === şi se efectuează L3 - l32 · L2, după care se obţine
⎟⎟⎟
⎠
⎞
⎜⎜⎜
⎝
⎛=
22006410
11312A
)2(. Sistemul iniţial poate fi rescris, acum, sub forma
. Urmează imediat, din ultima ecuaţie, x3 = 1, apoi, din a
doua, x2 = 2 şi, în fine, din prima ecuaţie, x1 = 3.
⎪⎩
⎪⎨
⎧
==+=++
2x26x4x
11x3xx2
3
32
321
4. Chestiuni de verificare
Să se rezolve, prin metoda Gauss, sistemele de ecuaţii:
4.1. ⎪⎩
⎪⎨
⎧
−=−+=++−−=+−
.8z6yx2;3z2y4x;5z2y3x7
4.2.
⎪⎪⎩
⎪⎪⎨
⎧
−=−++−=+−+
−=++−=−+−
.1x4xxx;1x2x6x2x
;2xx3x7x;3x2xxx5
4321
4321
4321
4321
CAPITOLUL 7 – Rezolvarea sistemelor de ecuaţii liniare prin metoda Jacobi
Capitolul 7
REZOLVAREA SISTEMELOR DE ECUAŢII LINIARE PRIN METODA JACOBI.
1. Principiul metodei
Metoda lui Jacobi este o metodă iterativă, utilizabilă pentru rezolvarea
numerică a sistemelor de ecuaţii algebrice liniare. Fie sistemul
, (1)
⎪⎪⎩
⎪⎪⎨
⎧
=⋅++⋅+⋅
=⋅++⋅+⋅=⋅++⋅+⋅
nnnn22n11n
2nn2222121
1nn1212111
bxa...xaxa.............................................................bxa...xaxabxa...xaxa
în care pentru i = 1, 2, . . . n, j = 1, 2, . . . n. Rb,a iij ∈
Algoritmul metodei Jacobi începe prin a pune în evidenţă, în partea stângă a semnului egal, în ecuaţia numărul k a variabilei xk, k = 1, 2, . . . n. Evident, pentru a putea rescrie astfel sistemul, trebuie ca toţi coeficienţii de forma akk să fie nenuli; în cazul în care această condiţie nu este satisfăcută, se schimbă ecuaţiile între ele, în aşa fel încât pe diagonala principală a matricei sistemului să nu existe nici un element nul şi se renumerotează necunoscutele în concordanţă cu schimbările efectuate.
Rezultă astfel:
43
METODE NUMERICE
( )
( )
( )⎪⎪⎪
⎩
⎪⎪⎪
⎨
⎧
⋅−−⋅−⋅−⋅=
⋅−−⋅−⋅−⋅=
⋅−−⋅−⋅−⋅=
−− .xa...xaxaba1x
.................................................................................
;xa...xaxaba1x
;xa...xaxaba1x
1n1nn22n11nnnn
n
nn2323121222
2
nn1313212111
1
(2)
Pentru uşurinţa scrierii, se trece la transcrierea sistemului sub forma
unei ecuaţii matriceale x = A · x + u , (3)
în care s-au făcut notaţiile
⎟⎟⎟⎟⎟
⎠
⎞
⎜⎜⎜⎜⎜
⎝
⎛
=
n
2
1
x
xx
xM
,
⎟⎟⎟⎟⎟⎟⎟⎟
⎠
⎞
⎜⎜⎜⎜⎜⎜⎜⎜
⎝
⎛
=
nn
n
22
2
11
1
ab
abab
uM
,
⎟⎟⎟⎟⎟⎟⎟⎟
⎠
⎞
⎜⎜⎜⎜⎜⎜⎜⎜
⎝
⎛
−=
0aa
aa
aa
0aa
aa
aa
0
A
nn
2n
nn
1n
22
n2
22
21
11
n1
11
12
L
MMMM
L
L
. (4)
Principiul metodei lui Jacobi se bazează pe relaţia (3), unde în
membrul stâng se scrie vectorul soluţiilor la pasul k + 1, iar în membrul drept acelaşi vector, la pasul k. Rezultă, astfel
uxAx )k()1k( +⋅=+ . (5)
Evident, demararea calculelor impune adoptarea unui vector iniţial, x0,
care poate fi ales arbitrar. Egalitatea (5) mai poate fi scrisă şi sub forma
⎟⎟⎟
⎠
⎞
⎜⎜⎜
⎝
⎛⋅−= ∑
≠=
+ n
ij1j
)k(jiji
ii
)1k(i xaba
1x , i = 1, 2, . . . n. (6)
Cu ajutorul relaţiei (5) se poate genera un şir de aproximaţii succesive
ale vectorului-soluţie a sistemului, care - în anumite condiţii - converge către soluţia exactă.
În această situaţie, se pot formula condiţiile de convergenţă ale metodei lui Jacobi; dacă 44
CAPITOLUL 7 – Rezolvarea sistemelor de ecuaţii liniare prin metoda Jacobi
1) ; 0Alim kk
=∞→
2) toate valorile proprii ale matricei A sunt, în modul, mai mici decât unitatea,
atunci şirul de aproximaţii succesive ale vectorului-soluţie, generat cu relaţia (5), converge către soluţia exactă.
Condiţia 2) de mai sus este echivalentă, [13], cu relaţia
,1aan
ij1j ii
ij
METODE NUMERICE
tablou real X(n) ; vectorul-soluţie la iteraţia anterioară tablou real Xn(n) ; vectorul-soluţie curentă
; introducere date de intrare şi iniţializare a vectorului-soluţie
citeşte n, er pentru i = 1, n repetă citeşte b(i) pentru j = 1, n repetă citeşte a(i,j) x(i) = 0
; iteraţii
repetă err = 0 pentru i = 1, n repetă s = b(i) pentru j = 1, n repetă s = s - a(i, j)·x(j) s = s + a(i,i)·x(i) xn(i) = s / a(i,i) s = ( ) ( )ixixn − dacă err < s atunci err = s scrie err pentru i = 1, n repetă x(i) = xn(i) scrie x(i) k = k + 1 până când err < er stop 3. Exemplu de aplicare
Să se rezolve, prin metoda iterativă a lui Jacobi, sistemul
⎪⎩
⎪⎨
⎧
−=⋅−⋅+=−⋅+⋅−=⋅+−⋅
.11x6x3x;4xx5x3;11x2xx7
321
321
321
Vom începe prin a constata că matricea sistemului îndeplineşte condiţia (7):
- pentru prima linie, 173
721
aaa
11
1312
CAPITOLUL 7 – Rezolvarea sistemelor de ecuaţii liniare prin metoda Jacobi
- pentru a doua linie, 154
513
aaa
22
2321
METODE NUMERICE
48
Ţinând cont că soluţiile exacte ale sistemului sunt x1 = 1, x2 = 2 şi x3 = 3, se poate observa, din tabel, modul cum aproximaţiile succesive converg către valorile corecte.
4. Chestiuni de verificare
Să se rezolve, prin metoda Jacobi, sistemele de ecuaţii de mai jos, după ce se va fi verificat, în prealabil, îndeplinirea criteriului de convergenţă; să se compare rezultatele cu cele obţinute, la rezolvarea aceloraşi sisteme, la lucrarea 6.
4.1. ⎪⎩
⎪⎨
⎧
−=−+=++−−=+−
.8z6yx2;3z2y4x;5z2y3x7
4.2.
⎪⎪⎩
⎪⎪⎨
⎧
−=−++−=+−+
−=++−=−+−
.1x4xxx;1x2x6x2x
;2xx3x7x;3x2xxx5
4321
4321
4321
4321
CAPITOLUL 8 – Rezolvarea sistemelor de ecuaţii liniare prin metoda Gauss - Seidel
Capitolul 8
REZOLVAREA SISTEMELOR DE ECUAŢII LINIARE PRIN METODA GAUSS - SEIDEL.
1. Principiul metodei
Metoda Gauss-Seidel este, ca şi metoda Jacobi, tot o metodă iterativă
de rezolvare a sistemelor de ecuaţii liniare; mai mult, se poate afirma că metoda Gauss-Seidel este, în fapt, o variantă îmbunătăţită a metodei Jacobi.
Spre deosebire de aceasta, care nu foloseşte în iteraţia curentă vectorul x(k), până când toate componentele sale vor fi fost determinate, metoda Gauss-Seidel foloseşte aceste componente, pe măsură ce ele sunt calculate. Astfel, la pasul (k+1) se folosesc în calculul necunoscutei xi(k+1) valorile necunoscutelor x1(k+1), x2(k+1), . . . xi-1(k+1), deja determinate în iteraţia curentă.; formula
⎟⎟⎟
⎠
⎞
⎜⎜⎜
⎝
⎛⋅−= ∑
≠=
+ n
ij1j
)k(jiji
ii
)1k(i xaba
1x , i = 1, 2, . . . n. (1)
devine, în acest caz
( ) ( ) ⎟⎟⎠
⎞⎜⎜⎝
⎛⋅−⋅−= ∑∑
+=
−
=
++ n
1ij
kjij
1i
1j
1kjiji
ii
)1k(i xaxaba
1x , i = 1, 2, . . . n. (2)
49
METODE NUMERICE
Condiţia de convergenţă
,1aan
ij1j ii
ij
CAPITOLUL 8 – Rezolvarea sistemelor de ecuaţii liniare prin metoda Gauss - Seidel
s = (s + a(i,i)·x(i)) / a(i,i) dacă err < )i(xs − atunci err = )i(xs − x(i) = s scrie x(i) scrie err k = k+1 până când err < er stop 3. Exemplu de aplicare
Să se rezolve, prin metoda iterativă Gauss - Seidel, sistemul
⎪⎩
⎪⎨
⎧
−=⋅−⋅+=−⋅+⋅−=⋅+−⋅
.11x6x3x;4xx5x3;11x2xx7
321
321
321
S-a considerat acelaşi sistem ca în cazul metodei lui Jacobi, pentru a
putea evidenţia mai bine ceea ce metoda Gauss-Seidel are specific. Astfel, relaţiile utilizate, de această dată, pentru generarea şirului de vectori - aproximaţii succesive ale soluţiei, devin
( )( )( )
( ) ( ) ( )( )⎪⎪⎪
⎩
⎪⎪⎪
⎨
⎧
⋅−−−⋅−=
+⋅+⋅=
⋅−+⋅=
+++
++
+
.x3x1161x
;xx3451x
;x2x1171x
1k2
1k1
1k3
k3
)1k(1
)1k(2
)k(3
)k(2
)1k(1
Utilizând un program de calcul, bazat pe algoritmul metodei Gauss-
Seidel, cu aceleaşi date iniţiale ca în exemplul prezentat la lucrarea 7, se obţin rezultatele din tabelul 1.
Tab. 1 Nr.
iteraţiei x1 x2 x3 err
1 1.571 1.743 2.967 2.967 2 0.973 1.977 2.984 0.599 3 1.001 1.997 2.999 0.028 4 0.9999 1.9997 2.9999 0.0022 5 1.0000 1.9999 2.9999 0.0002
51
METODE NUMERICE
52
Evident, şirul de aproximaţii succesive converge mult mai rapid către soluţia exactă - pentru aceeaşi eroare maximă admisibilă ca în cazul metodei lui Jacobi, sunt necesare doar 5 iteraţii, în loc de 13, pentru găsirea soluţiei aproximative a sistemului. 4. Chestiuni de verificare
Să se rezolve, prin metoda Gauss - Seidel, sistemele de ecuaţii de mai jos; să se compare rezultatele cu cele obţinute, la rezolvarea aceloraşi sisteme, la lucrările 6 şi 7.
4.1. ⎪⎩
⎪⎨
⎧
−=−+=++−−=+−
.8z6yx2;3z2y4x;5z2y3x7
4.2.
⎪⎪⎩
⎪⎪⎨
⎧
−=−++−=+−+
−=++−=−+−
.1x4xxx;1x2x6x2x
;2xx3x7x;3x2xxx5
4321
4321
4321
4321
CAPITOLUL 9 – Polinomul de interpolare al lui Lagrange
Capitolul 9
POLINOMUL DE INTERPOLARE AL LUI LAGRANGE.
1. Noţiuni teoretice
Fie funcţia , dată sub forma [ ] Rb,a:f →
xk x0 x1 ............... xn f(xk) f(x0) f(x1) ............... f(xn)
unde bxxxxa m210 =
METODE NUMERICE
( ) ( ) ( )( ) ( ) ( )
( ) ( ) ( )⎪⎪⎩
⎪⎪⎨
⎧
=ϕ⋅++ϕ⋅+ϕ⋅
=ϕ⋅++ϕ⋅+ϕ⋅=ϕ⋅++ϕ⋅+ϕ⋅
.yxyxyxy
;yxyxyxy;yxyxyxy
nnnnn11n00
11nn111100
00nn011000
K
M
K
K
(3)
O soluţie a sistemului este, în mod evident, cea pentru care
( ) ( ) ( ) ( )( ) ( ) ( ) ( )
( ) ( ) ( ) ( )
( ) ( ) ( ) ( )⎪⎪⎪
⎩
⎪⎪⎪
⎨
⎧
=ϕ=ϕ=ϕ=ϕ
=ϕ=ϕ=ϕ=ϕ
=ϕ=ϕ=ϕ=ϕ=ϕ=ϕ=ϕ=ϕ
.1x;0x;0x;0x
;0x;1x;0x;0x
;0x;0x;1x;0x;0x;0x;0x;1x
nnnkn1n0
knkkk1k0
1n1k1110
0n0k0100
KK
M
KK
M
KK
KK
(4)
Rezultă că polinomul φk, spre exemplu, se anulează în n puncte şi ia valoarea 1 într-un singur punct - xk. De aici, se poate adopta o formă simplă pentru φk şi anume
( ) ( )( ) ( )( ) ( )n1k1k10kk xxxxxxxxxxax −−−−−⋅=ϕ +− KK . (5)
Constanta ak se determină impunând condiţia ca în punctul xk
polinomul φk să ia valoarea 1; se obţine
( )( ) ( )( ) ( )nk1kk1kk1k0kk xxxxxxxxxx1a
−−−−−=
+− KK, (6)
de unde, rezultă
( ) ( )( ) ( )( ) ( )( )( ) ( )( ) ( )nk1kk1kk1k0kn1k1k10
k xxxxxxxxxxxxxxxxxxxx
x−−−−−
−−−−−=ϕ
+−
+−
KK
KK. (7)
În fine, se obţine forma polinomului de interpolare Lagrange de gradul n:
( ) ( )( ) ( )( ) ( )( )( ) ( )( ) ( )∑= +−+−
−−−−−−−−−−
⋅=n
0k nk1kk1kk1k0k
n1k1k10kn xxxxxxxxxx
xxxxxxxxxxyxL
KK
KK (8)
Dacă se face notaţia
( ) ( )( )∏≠= −
−=
n
ki0i ik
ik xx
xxxa , k = 0, 1, 2, . . . n, (9)
54
CAPITOLUL 9 – Polinomul de interpolare al lui Lagrange
expresia polinomului Lagrange se poate scrie mai simplu sub forma
( ) ( )∑=
⋅=n
0kkkn xayxL . (10)
Polinomul de interpolare Lagrange coincide cu funcţia f în nodurile de interpolare, dar între nodurile de interpolare poate să se abată destul de mult de la valorile acesteia. Pentru a putea evalua ordinul de mărime al acestor abateri, se consideră funcţia abatere
( ) ( ) ( )xLxfx nn −=ε ; (11)
pentru a determina forma analitică a acestei funcţii, se consideră, mai întâi, o funcţie auxiliară h, de forma
( ) ( ) ( ) ( )( ) ( )n10n xxxxxxKxLxfxh −−−⋅−−= K , (12)
în care K este o constantă care urmează a fi determinată. Se observă că h(xk) = 0 pentru k = 0, 1, 2, . . . n, deci funcţia h are
(n+1) zerouri, oricare ar fi valoarea lui K; această valoare se poate determina impunând ca funcţia h să se anuleze şi într-un punct ( ) kn,0 x,xx ≠α∈α ;se obţine, de aici
( ) ( )
( )( ) ( )n10n
xxxLf
K−α−α−α
α−α=
K. (13)
Dacă se ţine cont şi de rădăcina α, se observă că funcţia h are (n+2) zerouri pe intervalul [x0, xn] şi, în plus, satisface condiţiile teoremei lui Rolle pe fiecare dintre cele (n+1) subintervale care se formează folosind nodurile interne x1, x2, . . . xn-1, α.
Rezultă că prima derivată a funcţiei h, h’, are cel puţin (n+1) zerouri pe [x0, xn]; raţionând asemănător, se observă că a doua derivată, h”, are cel puţin n zerouri pe [x0, xn] ş.a.m.d. până la derivata de ordin n, care trebuie să aibă cel puţin un punct ( n0 x,x )∈ξ în care să se anuleze, ceea ce conduce la relaţia
( ) ( )( )!1n
fK1n
+ξ
=+
. (14)
Egalând cele două valori obţinute pentru K, conform relaţiilor (13) şi (14), rezultă
( ) ( ) ( )( ) ( )( ) ( )( ) ( .xxx!1n
fLf n101n
nn −α−α−α⋅+ξ
=α−α=αε )+
L (15)
Deoarece valoarea lui α este oarecare în intervalul [x0, xn], kx≠α , (dar pentru α = xk, evident, εn(α) = 0) pentru funcţia eroare rezultă expresia: 55
METODE NUMERICE
( )( ) ( )( ) ( )( ) ( n10
1n
n xxxxxx!1nfx −−−⋅
+ξ
=ε+
K ), (16)
unde ξ este un punct oarecare din intervalul (x0, xn). Dacă funcţia f are derivata de ordinul (n+1) mărginită, adică dacă
există M > 0 astfel încât pentru orice ( )n0 x,xx∈ să fie satisfăcută relaţia ( ) ( ) Mxf 1n ≤+ , atunci, conform (16), eroarea de aproximare prin polinomul de
interpolare al lui Lagrange este, la rândul său mărginită:
( ) ( ) n10n xxxxxx!1nMx −⋅⋅−⋅−⋅+
≤ε K . (17)
2. Algoritmul metodei program Polinomul Lagrange
întreg n ; gradul polinomului întreg j, k ; contori
tablou real x(n), y(n) ; nodurile de interpolare real x0 ;abscisa punctului de interpolare real y0 ; valoarea interpolată a funcţiei real p ; variabilă auxiliară
; introducerea datelor de intrare
citeşte n citeşte x0 pentru k = 0, n repetă citeşte x(k) citeşte y(k)
; construcţia polinomului Lagrange
y0 = 0 pentru k = 0, n repetă pentru j = 0, n repetă dacă j≠ k atunci
( )( ) ( )jxkxjxxpp
−−
⋅=0
y0 = y0 + y(k)·p scrie y0
stop
56
CAPITOLUL 9 – Polinomul de interpolare al lui Lagrange
3. Exemplu de aplicare
Fie următoarea funcţie, dată tabelar:
xk -2 0 2 4 6 8 10 12 f(xk) 0.25 1 4 16 64 256 1024 4096
Să se calculeze, prin interpolare cu un polinom Lagrange, valoarea funcţiei f în punctul x = 5.
Trebuie observat, mai întâi, că punctele din tabel au fost extrase din mulţimea de valori ale funcţiei f(x) = 2x; astfel, atunci când se va calcula valoarea aproximată prin interpolare, se va putea aprecia şi calitatea aproximării, valoarea exactă fiind cunoscută (25 = 32).
Dacă se utilizează pentru interpolare doar cele două puncte din mijlocul tabelei de valori (x0 = 4 şi x1 = 6), polinomul de interpolare este de gradul întâi (interpolare liniară):
( ) 80x24464x64
646x16xL1 −⋅=−
−⋅+
−−
⋅= ;
rezultă, de aici, L1(5) = 40. Eroarea relativă de aproximare este, în acest
caz ( ) %2510032
324051 =⋅−
=ε - evident, o valoare inacceptabil de mare.
Dacă se utilizează patru noduri de interpolare (x0 = 2, x1 = 4, x2 = 6 şi x3 = 8) polinomul Lagrange de gradul trei rezultă
( ) ( )( )( )( )( )( )
( )( )( )( )( )( )
( )( )( )( )( )( )
( )( )(( )( )( )
) ,6848286x4x2x256
8646268x4x2x64
8464248x6x2x16
8262428x6x4x4xL3
−−−−−−
⋅+−−−−−−
⋅+
+−−−−−−
⋅+−−−−−−
⋅=
respectiv ( ) .80x78x245x
49xL 233 −⋅+⋅−⋅= Se obţine, astfel,
L3(5) =28.750, cu o eroare relativă de -10.156 % faţă de valoarea exactă.
În cazul utilizării a şase noduri de interpolare (de la x0 = 0 la x6 = 10), cu ajutorul unui program de calcul special destinat pentru construcţia polinomului de interpolare Lagrange, se obţine L5(5) = 33.496 cu ε5(5) = 4.675 %.
Dacă se utilizează ca noduri de interpolare a tuturor celor opt puncte din tabel, cu acelaşi program se obţine L7(5) = 31.271, respectiv ε7(5) = -2.278 %.
57
METODE NUMERICE
58
Evident, în exemplul dat nodurile de interpolare au fost alese relativ rare, iar punctul în care s-a aproximat cu polinomul Lagrange valoarea funcţiei este amplasat cât mai defavorabil posibil (la mijlocul distanţei dintre două noduri succesive); cu toate acestea, se poate remarca, în cazul utilizării mai multor noduri de interpolare, o precizie relativ buna de aproximare. 4. Chestiuni de verificare 4.1. Fie următoarea funcţie, dată tabelar:
xk -2 0 2 6 8 10 12 f(xk) 0.25 1 4 64 256 1024 4096
Să se calculeze, prin interpolare cu un polinoame Lagrange, de grad 3, 4 şi 5, valoarea funcţiei f în punctele x0 = 1, 2, 3, 4, 5. 4.2. Fie următoarea funcţie, dată tabelar:
xk -2 0 2 4 6 f(xk) 0.11 1 9 81 729
Să se calculeze, prin interpolare cu un polinoame Lagrange, de grad 2, 3, şi 4, valoarea funcţiei f în punctele x0 = -1, 1, 3, 5.
CAPITOLUL 10 – Polinomul de interpolare al lui Newton
Capitolul 10
POLINOMUL DE INTERPOLARE AL LUI NEWTON.
1. Noţiuni teoretice
Fie funcţia f tabelata în puncte echidistante şi fie h pasul tabelei de
valori (xk+1 - xk = h, pentru orice k = 0, 1, 2, . . . n-1). Se numeşte diferenţă finită la dreapta (progresive), de ordinul întâi, pentru funcţia f expresia
( ) ( ) ( )xfhxfxf −+=Δ . (1)
Diferenţele finite de ordin superior se definesc în mod recurent:
( ) ( )( ) ( )( )xfxfxf 1n1nn ΔΔ=ΔΔ=Δ −− (2)
k xk yk Δyk Δ2yk Δ3yk Δ4yk 0 x0 y0 Δy0 1 x1 y1 Δ2y0 Δy1 Δ3y0 2 x2 y2 Δ2y1 Δ4y0 Δy2 Δ3y1 3 x3 y3 Δ2y2 Δy3 4 x4 y4
59
METODE NUMERICE
În aplicaţii, calculul diferenţelor finite se face mai comod, prin simple operaţii de scădere, pornind de la tabela de valori a funcţiei f dispusă vertical; spre exemplu, pentru o tabelă în cinci puncte, reprezentarea este cea de mai sus.
Diferenţele finite, de un anumit ordin, se calculează scăzând diferenţele finite de ordin inferior între care se găsesc, situate la stânga.
În cazul în care se doreşte aproximarea unei funcţii prin interpolare, dacă nodurile de interpolare sunt echidistante se poate utiliza polinomul de interpolare al lui Newton, construit pe baza diferenţelor finite. În cele ce urmează se vor utiliza diferenţele finite la dreapta (regresive).
Se pune deci problema determinării unui polinom algebric de grad mai mic sau egal cu n, care să satisfacă condiţiile de interpolare P(xk) = yk, k = 0, 1, 2, . . . n. Se construieşte un polinom de forma
( ) ( ) ( )( )( )( ) ( .xxxxxxc
xxxxcxxccxN
1n10n
102010dn
−−−−+++−−+−+=
K
K
) (3)
Impunând condiţiile de interpolare polinomului de mai sus, rezultă sistemul
( )( ) ( )( )
( ) ( )( ) ( ) ( )⎪⎪⎪
⎩
⎪⎪⎪
⎨
⎧
=−−+−−+−+
=−−+−+=−+
=
− .yxxxxcxxxxcxxcc
;yxxxxcxxcc;yxxcc
;yc
n1nn0nn1n0n20n10
2120220210
10110
00
K
M
(4) Dacă se ţine seama că nodurile de interpolare sunt echidistante, cu
pasul h, sistemul (4) se poate scrie mai simplu ca
( )⎪⎪⎪
⎩
⎪⎪⎪
⎨
⎧
=⋅⋅⋅⋅⋅++⋅⋅−+⋅⋅+
=⋅⋅⋅+⋅⋅+
=⋅+=
.ychn21ch1nnchnc
;ych21ch2c
;ychc;yc
nnn
22
10
222
10
110
00
KK
M
(5)
Sistemul (5) este un sistem de (n+1) ecuaţii cu (n+1) necunoscute - c0, c1, c2, . . . cn - compatibil determinat. Pentru rezolvare, se înlocuieşte valoarea lui c0 din prima ecuaţie în a doua şi se află c1, apoi se înlocuiesc valorile lui c0 şi c1 în a treia ecuaţie şi se determină c2 ş.a.m.d. Rezultă:
c0 = y0; hy
c 01Δ
= ; n0
n
n20
2
2h!ny
c;h!2y
c⋅
Δ=
⋅
Δ= K . (6)
60
CAPITOLUL 10 – Polinomul de interpolare al lui Newton
Cu ajutorul acestor valori ale coeficienţilor se obţine formula explicită a polinomului de interpolare Newton de gradul n, construit cu diferenţe finite la dreapta:
( ) ( ) ( ) ( )
( )( ) ( ).xxxxxxh!ny
xxxxh!2y
xxh!1
yyxN
1n10n0
n
1020
2
00
0dn
−−−−⋅
Δ+
++−⋅−⋅⋅
Δ+−
⋅Δ
+=
K
K
(7)
În mod cu totul analog se poate construi si polinomul de interpolare Newton de gradul n, pe baza diferenţelor finite la stânga,
( ) ( ) ( ) ( )
( )( ) ( ).xxxxxxh!ny
xxxxh!2y
xxh!1
yyxN
11nnnn
n
1nn2n
2
nn
nsn
−−−⋅
∇+
++−⋅−⋅⋅
∇+−
⋅∇
+=
−
−
K
K
(8)
Polinomul lui Newton construit pe baza diferenţelor finite la dreapta
se recomandă a fi utilizat când se doreşte estimarea valorilor funcţiei y = f(x) în puncte mai apropiate de x0 decât de xn (situate în prima jumătate a tabelei de valori), în timp ce varianta construită cu diferenţe finite la stânga va fi folosită pentru aproximarea valorilor funcţiei în puncte din vecinătatea lui xn (din a doua jumătate a tabelei de valori).
Pentru a se pune în evidenţă eroarea aproximării prin cele două polinoame de interpolare Newton, se pot face aproximările
( ) ( )1n
01n
1n
hy
f+
++ Δ≅ξ , respectiv ( ) ( )
1nn
1n1n
hy
f+
++ ∇≅ξ . (9)
Din cele de mai sus rezultă expresiile funcţiilor eroare pentru cele
două polinoame Newton (cu diferenţe finite la dreapta, respectiv la stânga):
( )( )
( )( ) ( n101n0
1ndn xxxxxx
h!1ny
x −−−⋅+
Δ≅ε
+
+
K ) , (10)
respectiv
( )( )
( )( ) ( n101nn
1nsn xxxxxx
h!1ny
x −−−⋅+
∇≅ε
+
+
K ) . (11)
61
METODE NUMERICE
2. Algoritmul metodei program Polinomul Newton
întreg np ; gradul polinomului întreg n ; ordinul ultimului nod de
interpolare întreg i, k ; contori
tablou real x(n), y(n) ; nodurile de interpolare tablou real D(n,n) ; tabloul diferenţelor finite real x0 ;abscisa punctului de interpolare real y0 ; valoarea interpolată a funcţiei real p ; variabilă auxiliară real h ; pasul reţelei de noduri
; introducerea datelor de intrare
citeşte n; citeşte np; citeşte x0; pentru k = 0, n repetă citeşte x(k) citeşte y(k) D(0,k) = y(k)
; calculul diferenţelor finite
pentru i = 1, n repetă pentru k = 0, n-i repetă D(i,k) = D(i-1,k+1) - D(i-1,k)
; construcţia polinomului Newton
h = x(1) - x(0) y0 = D(0,0) pentru i = 1,np repetă p = 1 pentru k = 0, i-1 repetă
( )( ) hkkxxpp⋅+
−⋅=
10
y0 = y0 + D(i,0)·p scrie y0 stop
62
CAPITOLUL 10 – Polinomul de interpolare al lui Newton
3. Exemplu de aplicare Fie următoarea funcţie, dată tabelar:
xk -2 0 2 4 6 8 10 12 f(xk) 0.25 1 4 16 64 256 1024 4096
Să se calculeze, prin interpolare cu polinoame Newton, bazate pe diferenţe finite progresive - respectiv regresive - de diferite grade valoarea funcţiei f în punctele x = 1, 5, 9.
Se constată că şi de această dată punctele din tabelă sunt extrase din graficul funcţiei f(x) = 2x, cu scopul declarat de a putea evalua mărimea erorilor de aproximare; se ştie deci, apriori, că f(1) = 21 = 2, f(5) = 25 = 32 iar f(9) = 29 = 512.
Se construieşte tabelul diferenţelor finite, pe baza valorilor funcţiei:
k xk yk Δyk Δ2yk Δ3yk Δ4yk Δ5yk Δ6yk Δ7yk 0 -2 0.25 0.75 1 0 1 2.25 3 6.75 2 2 4 9 20.25 12 27 60.75 3 4 16 36 81 182.25 48 108 243 546.754 6 64 144 324 729 192 432 972 5 8 256 576 1296 768 1728 6 10 1024 2304 3072 7 12 4096
Şirul de valori din căsuţele marcate situate în partea superioară a tabelului reprezintă diferenţele finite la dreaptă (progresive) - Δy0, Δ2y0 . . . Δ7y0 - pe baza cărora se poate construi cu relaţia (4.41) polinomul Newton de grad mai mic sau egal cu 7.
Spre exemplu, polinomul de gradul 2 rezultă de forma
( ) ( ) ( ) 1x9375.0x28125.0x2x2225.22x
275.025.0xN 2
2d2 +⋅+⋅=⋅+
⋅+++= .
63
METODE NUMERICE
Şirul de valori din căsuţele marcate situate în partea inferioară a tabelului reprezintă diferenţele finite la stânga (regresive) - ∇yn, 2yn, . . .
7yn = Δ7y0 - pe baza cărora se poate construi cu relaţia (4.42) polinomul Newton de grad mai mic sau egal cu 7. Astfel polinomul de gradul 3 rezultă de forma
∇∇
( ) ( ) ( )( )
( )( )( ) .14336x11904x792x368x10x12x86
1728
10x12x22
230412x2
30724096xN
23
2s3
−⋅+⋅−⋅=−−−⋅
+
+−−⋅
+−⋅+=
Prin intermediul a două programe de calcul special concepute, se construiesc polinoamele Newton cu diferenţe finite progresive, respectiv regresive, cu gradul n modificabil, succesiv, între 2 şi 7 (maximum posibil) şi se calculează valorile aproximate ale funcţiei în punctele cerute. Rezultă valorile din tabelele 1, respectiv 2.
Tab. 1
n ( )1Ndn ( )1nε [%]
( )5Ndn ( )5nε [%]
( )9Ndn ( )9nε [%]
2 2.219 10.95 12.719 -60.25 32.219 -93.71 3 1.719 -14.05 27.484 -14.11 129.672 -74.67 4 2.271 13.55 33.021 3.19 312.396 -38.98 5 1.560 -22.00 31.360 -2.00 476.849 -6.86 6 2.805 40.25 32.606 1.89 517.962 1.16 7 0.403 -79.85 31.271 -2.28 509.152 -0.56
Tab .2
n ( )1Nsn ( )5Nsn ( )9Nsn 2 15712 3424 352 3 -9236 -356 460 4 2456 -1.625 490.375 5 -172.859 24.953 501.766 6 -8.407 29.937 506.749 7 0.403 31.271 509.152
După cum se poate observa din rezultatele obţinute, în anumite cazuri eroarea relativă este suficient de mică pentru a putea considera interpolarea rezonabil de precisă; sunt însă şi situaţii în care erorile sunt inacceptabile.
64
CAPITOLUL 10 – Polinomul de interpolare al lui Newton
65
4. Chestiuni de verificare 4.1. Fie următoarea funcţie, dată tabelar:
xk -2 0 2 4 6 f(xk) 0.11 1 9 81 729
Să se calculeze, prin interpolare cu un polinoame Newton, de grad 2, 3, şi 4, valoarea funcţiei f în punctele x0 = -1, 1, 3, 5. 4.2. Fie următoarea funcţie, dată tabelar:
xk 0 2 4 6 8 f(xk) 0 1.41 2 2.45 2.83
Să se calculeze, prin interpolare cu un polinoame Newton, de grad 2, 3, şi 4, valoarea funcţiei f în punctele x0 = 1, 3, 5 şi 7.
CAPITOLUL 11 – Aproximarea cu abatere medie pătratică minimă
Capitolul 11
APROXIMAREA CU ABATERE MEDIE PĂTRATICĂ MINMĂ.
1. Noţiuni teoretice
Dacă funcţia de aproximat este cunoscută tabelar,
xk x0 x1 ............... xm yk = f(xk) y0 y1 ............... ym
atunci distanţa dintre aceasta şi polinomul de aproximare cu abatere medie pătratică minimă Pn se calculează ca
( ) ( )[ ]∑=
−⋅+
=m
0i
2iinn yxP1m
1f,Pd . (1)
Minimizarea abaterii medii pătratice este echivalentă cu determinarea
valorii minime a sumei de sub radical; rezultă, că se caută minimul funcţiei , RR:S 1n →+
. (2) ( ) ( )[ ]∑=
−=m
0i
2iinn10 yxPa,a,aS K
67
METODE NUMERICE
Determinarea coeficienţilor polinomului Pn se face impunând condiţia ca derivatele parţiale ale funcţiei S să se anuleze. Cum
(∑=
=⋅−⋅++⋅+=∂∂ m
0i
kii
nini10
k0xyxaxaa2
aS
K ) , k = 0, 1, 2, . . . n, (3)
rezultă sistemul de ecuaţii
, k = 0, 1, 2, . . . n. (4) ( ) ∑∑==
⋅=⋅⋅++⋅+m
0i
kii
m
0i
ki
nini10 xyxxaxaa K
Introducând notaţiile
∑=
=m
0i
kik xu , respectiv , (5) ∑
=⋅=
m
0i
kiik xyv
sistemul (4) poate fi scris matriceal sub forma
. (6)
⎟⎟⎟⎟⎟
⎠
⎞
⎜⎜⎜⎜⎜
⎝
⎛
=
⎟⎟⎟⎟⎟
⎠
⎞
⎜⎜⎜⎜⎜
⎝
⎛
⋅
⎟⎟⎟⎟⎟
⎠
⎞
⎜⎜⎜⎜⎜
⎝
⎛
++
+
n
2
1
n
1
0
nn1nn
1n21
n10
v
vv
a
aa
uuu
uuuuuu
MM
K
M
K
K
În cazul particular în care polinomul de aproximarea cu abatere medie
pătratică minimă este de gradul întâi, p1(x) = a0 + a1·x, acesta poartă numele de „dreaptă de regresie”, coeficienţii acesteia calculându-se cu formulele simple
2
120
11020
uuu
vuvua
−⋅
⋅−⋅= , respectiv
2120
01101
uuu
vuvua
−⋅
⋅−⋅= , (7)
obţinute prin rezolvarea sistemului (6). 2. Algoritmul metodei program ampm întreg n ; numărul punctelor din tabel întreg k ; contor
tablou real x(n), y(n) ; punctele din tabelul de valori real u0, u1, u2, u3, u4 ; sume de puteri ale absciselor
68
CAPITOLUL 11 – Aproximarea cu abatere medie pătratică minimă
real v0, v1, v2 ; sume mixte real a0, a1, a2 ; coeficienţii polinomului de aproximare
; introducerea datelor de intrare citeşte n citeşte x0 pentru k = 0, n repetă citeşte x(k) citeşte y(k)
; calculul sumelor de puteri şi determinarea funcţiei de aproximare
u0 = n + 1; u1 = 0; u2 = 0; u3 = 0; u4 = 0; v0 = 0; v1 = 0; v2 = 0 pentru k = 0, n repetă u1 = u1 + x(k) u2 = u2 + x(k)2 u3 = u3 + x(k)3 u4 = u4 + x(k)4 v0 = v0 + y(k) v1 = v1 + x(k)·y(k) v2 = v2 + x(k)2·y(k)
a0, a1, a2 = Metoda Gauss(u0, u1, u2, u3, u4, v0, v1, v2) scrie a0, a1, a2 stop 3. Exemplu de aplicare
Să se găsească polinomul de gradul doi P2(x) = a0 + a1·x + a2·x2 care aproximează cu abatere medie pătratică minimă funcţia dată prin tabelul de mai jos:
xk 0 1 2 3 4 yk = f(xk) 1 2 4 8 16
Se calculează cu (4.99) sumele ; ;
∑=
==4
0i
0i0 5xu
∑=
=4
0
4i 354xu ; 0
∑=
==4
0i
1i1 10xu
∑=
=⋅=4
0ii
0i 31yxv ;∑
===
4
0i
2i2 30xu ;
∑=
=⋅=4
0iii1 yx
∑=
==4
0i
3i3 ;100xu
98v ; ∑=
⋅=4
0ii
2i2 yx
=i
4
= 346v .
69
METODE NUMERICE
70
Rezultă sistemul , care, rezolvat
printr-un program de calcul bazat pe metoda Gauss, conduce la soluţiile: a0 = 1.2857; a1 = -0.9714; a2 = 1.1429. S-a obţinut, astfel,
⎟⎟⎟
⎠
⎞
⎜⎜⎜
⎝
⎛=
⎟⎟⎟
⎠
⎞
⎜⎜⎜
⎝
⎛⋅
⎟⎟⎟
⎠
⎞
⎜⎜⎜
⎝
⎛
3469831
aaa
35410030100301030105
2
1
0
( ) 22 x1429.1x9714.02857.1xP ⋅+⋅−= .
Pentru a putea evalua precizia de aproximare, se calculează valorile lui P2 în abscisele punctelor din tabel şi erorile faţa de funcţia dată în aceste puncte; rezultă:
P2(0) = 1.2857; ε2(0) = 0.2857;
P2(1) = 1.4572; ε2(1) = -0.5428;
P2(2) = 3.9145; ε2(2) = -0.0855;
P2(3) = 8.6576; ε2(3) = -0.3424;
P2(4) = 15.6865; ε2(4) = -0.3135.
4. Chestiuni de verificare
Să se determine funcţiile de gradul al doilea care aproximează cu abatere medie pătratică minimă următoarele funcţii date tabelar:
4.1. xk -2 0 2 4 6
f(xk) 0.11 1 9 81 729 4.2. xk 0 2 4 6 8
f(xk) 0 1.41 2 2.45 2.83
CAPTOLUL 12 – Derivarea cu ajutorul polinomului de interpolare Lagrange
Capitolul 12
DERIVAREA CU AJUTORUL POLINOMULUI DE INTERPOLARE LAGRANGE.
1. Noţiuni teoretice
În cazul unei funcţii dată tabelar prin (n+1) puncte, se poate construi
polinomul de interpolare Lagrange şi se poate scrie
( ) ( ) ( ) ( )( )( ) ( )[ ]xf
!1nxxxx
xayxf 1nn
0k
n0kk ξ⋅+
−−+⋅= +
=∑
K. (1)
Prin derivare în raport cu x în relaţia (1), în condiţiile în care
x = xj, oricare ar fi j cuprins între 0 şi n rezultă
( ) ( )( ) ( )[ ]( ) (∏∑
≠=
)+
=−⋅
+
ξ+′⋅=′
n
jk0k
kjj
1nn
0kjkkj xx!1n
xfxa