Documente Academic
Documente Profesional
Documente Cultură
Cap 7
Cap 7
Cap. 7. METODE DE APROXIMARE NUMERICĂ A
FUNCȚIILOR
7.1. Punerea problemei
Problema aproximării (numerice) a valorilor unor funcții
apare în multe aplicații tehnice şi netehnice. De regulă, în aceste
domenii apar aplicații în care nu se cunoaşte expresia analitică a
funcției care trebuie aproximată, ci doar valorile ei într‐un anumit
număr de puncte (obținute pe cale analitică sau experimentală),
interesând obținerea aproximativă a valorilor corespunzătoare altor
puncte. Pe de altă parte, prezintă interes şi determinarea acelor
puncte corespunzătoare unor valori date (de exemplu, zero) ale
funcției [H1], [V1].
În cazul general al problemei aproximării numerice a
funcțiilor [K1], [K2], se consideră o funcție:
f: [a, b] → R . (7.1.1)
Se cere determinarea unei alte funcții:
g: [a, b] → R , (7.1.2)
având o expresie relativ simplă, care să aproximeze cât mai bine
funcția f în intervalul [a, b], adică g(x) să fie cât mai apropiată de y =
f(x), ∀x ∈ [a, b] .
Problema enunțată apare în următoarele două situații
posibile:
a) dacă expresia analitică a funcției f, y = f(x), este cunoscută,
dar de formă relativ complicată, utilizarea sa în calcule
ulterioare fiind incomodă;
b) dacă expresia analitică a funcției f, y = f(x), nu este cunoscută,
ea fiind definită printr‐un set de puncte determinate analitic
sau experimental.
Pentru situația b), frecvent întâlnită în domeniile menționate,
se consideră că sunt cunoscute (n+1) puncte distincte definite de
perechile de valori:
(xi, yi = f(xi)) , i = 0, n . (7.1.3)
În cazul cel mai general, cele (n+1) puncte distincte pot fi oarecari în
intervalul [a, b]. Însă, în majoritatea aplicațiilor ele sunt echidistante,
111
Metode de aproximare numerică a funcțiilor
cu pasul de discretizare h > 0, primul şi ultimul punct corespunzând
limitelor intervalului, adică:
b−a
x 0 = a, x n = b, x i +1 − x i = h = , i = 0, n − 1 . (7.1.4)
n
În situațiile practice nu este neapărat necesară obținerea
explicită a funcției de aproximare g, fiind suficientă găsirea valorilor
g ( x), ∀x ∈ [a, b] . Dacă valorile lui x pentru care se aproximează
funcția f aparțin intervalului [a, b] , atunci se utilizează termenul de
interpolare pentru problema enunțată, iar dacă problema se extinde
şi în afara intervalului [a, b], atunci se utilizează termenul de
extrapolare. În sens larg se utilizează termenul de interpolare pentru
ambele situații ale problemei.
Pentru obținerea funcțiilor de aproximare g se utilizează, de
regulă, combinații liniare ale unor funcții de formă simplă aparținând
unei clase de funcții { g i | i = 0, n }, de forma:
g ( x) = a 0 g 0 ( x) + a1 g 1 ( x) + ... + a n g n ( x), ∀x ∈ [a, b] ,
(7.1.5)
în care ai , i = 0, n , sunt coeficienți reali.
Cele mai utilizate clase de funcții de aproximare sunt
următoarele [B1], [B2], [G1], [K2], [N1], [T1]:
a) monoame { x i , i = 0, n }, care duc la polinoame de aproximare de
forma (7.1.6):
g ( x) = Pn ( x) = a 0 + a1 x + a2 x 2 + ... + an x n ; (7.1.6)
aproximare de forma (10.1.7):
g ( x) = a 0 e b0 x + a1e b1 x + a2e b2 x + ... + an e bn x ; (7.1.7)
112
Metode de aproximare numerică a funcțiilor
113
Metode de aproximare numerică a funcțiilor
7.2. Aproximarea prin interpolare polinomială
Se consideră o funcție reală f: [a, b] → R, pentru care sunt
cunoscute valorile yi = f(xi) în (n+1) puncte distincte xi, i = 0, n , din
intervalul [a, b], adică perechile de valori:
( x 0 , y 0 ); ( x1 , y1 ); ( x 2 , y 2 );...; ( x n , y n ) . (7.2.1)
În general, punctele pot fi oarecari, dar, de regulă, ele sunt
echidistante, cu pasul de discretizare h, adică:
b−a
x 0 = a, x n = b, x i +1 − x i = h = , i = 0, n − 1 . (7.2.2)
n
Se cere să se determine polinomul Pn, grad Pn = n, de forma:
Pn ( x) = a0 + a1 x + a2 x 2 + ... + an x n , ∀x ∈ [a, b], ai ∈ R, i = 0, n ,
(7.2.3)
care să treacă prin punctele date, deci să verifice condiţiile:
Pn ( xi ) = y i , i = 0, n . (7.2.4)
Scriind detaliat condiția (7.2.4), se obține sistemul liniar
(7.2.5) de (n+1) ecuații cu (n+1) necunoscute reprezentate de
coeficienții a0, a1, a2, … ,an:
⎧a 0 2
+ a1 x 0 + a 2 x 0 + ... + a n x 0 = y 0
n
⎪ 2 n
⎪a 0 + a1 x1 + a 2 x1 + ... + a n x1 = y1
⎪ 2 n
⎨a 0 + a1 x2 + a 2 x 2 + ... + a n x 2 = y 2 . (7.2.5)
⎪...
⎪
⎪a 0 2
+ a1 xn + a 2 x n + ... + a n x n = y n
n
⎩
Determinantul Δ al matricei sistemului (7.2.5) este de tip
Vandermonde:
114
Metode de aproximare numerică a funcțiilor
2 n
1 x0 x0 ......x 0
2 n
1 x1 x1 ......x1
∆= = ∏ ( x i − x j ) . (7.2.6)
.. ... ... ......... i , j = 0, n
2 n i> j
1 xn xn ......x n
Întrucât punctele x i , i = 0, n , sunt distincte, ∆ ≠ 0 , de unde rezultă
faptul că sistemul (7.2.5) este compatibil determinat, cu consecința
imediată că polinomul de aproximare prin interpolare Pn este univoc
definit. Metodele de interpolare se deosebesc între ele prin modul
de determinare a acestui polinom unic sau a unor forme echivalente
ale sale [K2].
În cazul majorității polinoamelor de interpolare se operează
cu calculul cu diferențe aplicate mulțimii de puncte (7.2.1). Există
multe tipuri de diferențe dintre care se menționează:
- diferențele finite directe (“la dreapta” sau “înainte”);
- diferențele inverse (“la stânga” sau “înapoi”);
- diferențele simetrice (“centrale”).
În continuare se va insista asupra primului tip, pentru studiul
celorlalte fiind recomandate lucrările menționate în subcapitolul
anterior. Astfel, diferențele finite directe de ordinul 1, calculate atât
pentru x cât şi pentru y, sunt definite conform relațiilor:
∆xi = xi +1 − xi , i = 0, n − 1 , (7.2.7)
∆y i = y i +1 − y i , i = 0, n − 1 . (7.2.8)
115
Metode de aproximare numerică a funcțiilor
Tabelul 7.1. Tabel de diferențe directe (pentru n = 3).
x y = ∆0 y ∆y = ∆1 y ∆2 y ∆3 y
x0 y0 ∆y 0 ∆2 y 0 ∆3 y 0
x1 y1 ∆y1 ∆2 y1
x2 y2 ∆y 2
x3 y3
Diversele polinoame de interpolare se pot scrie mai simplu
dacă se defineşte noțiunea de putere generalizată de ordinul k, k = 0,
1, 2, 3, ..., a unei valori numerice x, notată cu x [k ] , sub forma
produsului (7.2.11) de k factori [K2]:
x [ k ] = x( x − h)( x − 2h)( x − 3h)...[ x − (k − 1)h] , (7.2.11)
cu h – constantă cunoscută.
Observații:
1. Pentru k = 0 ⇒ x [ 0 ] = 1 .
2. Pentru k = 1 ⇒ x [1] = x , adică puterea generalizată se
reduce la cea clasică.
Cel mai frecvent sunt utilizate polinoame de interpolare sunt:
- de tip Newton, de speța 1 şi 2;
- de tip Gauss, de speța 1 şi 2;
- de tip Stirling;
- de tip Bessel;
- de tip Lagrange.
În continuare vor fi prezentate polinoamele de interpolare
de tip Newton de speța 1. Studiul celorlalte polinoame de interpolare
nu prezintă dificultăți şi poate fi desfăşurat pe baza bibliografiei
indicate în cadrul subcapitolului 7.1.
Enunțul problemei de aproximare prin interpolare a fost
prezentat anterior sub forma relațiilor (7.2.1) … (7.2.3). Polinomul de
interpolare de tip Newton de speța 1 are expresia:
Pn = a0 + a1 ( x − x0 )[1] + a 2 ( x − x0 ) [ 2 ] + ... + a n ( x − x0 )[ n ] ,
(7.2.12)
fiind necesară determinarea coeficienților ak , k = 0, n . Pentru
aceasta, se rescriu condițiile (7.2.4) sub forma echivalentă:
116
Metode de aproximare numerică a funcțiilor
∆k Pn ( x 0 ) = ∆k y 0 , k = 0, n . (7.2.13)
Daca este luată în considerare relația (7.2.2) care exprimă
echidistanța, cu pasul de discretizare h, a punctelor x i , i = 0, n ,
puterile generalizate pot fi transformate sub forma:
( x − x 0 ) [ k ] = ( x − x 0 )( x − x1 )( x − x 2 )...( x − x k −1 ), k = 1, n .
(7.2.14)
Aplicand condițiile (7.2.13) pentru k = 0 rezultă:
∆ Pn ( x 0 ) = ∆0 y 0 ⇔ Pn ( x 0 ) = y 0 ⇔ a 0 = y 0 , (7.2.15)
0
deci a fost obținut primul coeficient.
Aplicand din nou condițiile (7.2.13) pentru k = 1 rezultă:
∆Pn ( x 0 ) = y 0 ⇔ Pn ( x1 ) − Pn ( x0 ) = ∆y 0 ⇔
(7.2.16)
⇔ a 0 + a1 ( x1 − x0 ) − a 0 = ∆y 0 ⇔ a1 h = ∆y 0 ,
de unde se obtine expresia coeficientului a1 :
∆y 0
a1 = . (7.2.17)
1! h
Procedand similar pentru ceilalți coeficienți din (7.2.12),
rezultă expresia generală:
∆k y 0
ak = , k = 0, n , (7.2.18)
k! h k
din care, pentru k = 0 rezultă a 0 = y 0 .
Ținând seama de aspectele prezentate mai sus, polinomul de
interpolare Newton de speța 1 devine:
n
∆k y 0
Pn ( x) = y 0 + ∑ k
( x − x 0 ) [ k ] . (7.2.19)
k =1 k! h
În cazul punctelor echidistante este utilă definirea numărului
q, care reprezintă numărul de paşi necesari pentru a ajunge de la x 0
la x:
x − x0
q= , (7.2.20)
h
iar polinomul de interpolare Newton de speța 1 va obtine forma:
117
Metode de aproximare numerică a funcțiilor
q(q − 1) 2
Pn (q) = y0 + q∆y0 + ∆ y0 + ... +
2!
(7.2.21)
q (q − 1)(q − 2)...(q − n + 1) n
+ ∆ y0 .
n!
Observații:
1. Pentru n = 1, relația (7.2.21) conduce la formula de
interpolare liniară:
P1 (q ) = y 0 + q∆y 0 . (7.2.22)
2. Pentru n = 2, relația (7.2.22) conduce la formula de
interpolare parabolică:
q(q − 1) 2
P2 (q) = y 0 + qy 0 + ∆ y 0 . (7.2.23)
2!
3. Dacă numărul de puncte cunoscute ale funcției f poate fi
oricât de mare, atunci şi gradul polinomului de interpolare poate fi
oarecare. Acest număr de puncte este ales practic astfel încât
diferențele ∆n y i să fie aproximativ egale în limitele unei erori
admise ε, iar x 0 poate fi oricare dintre punctele date.
4. Dacă numărul de puncte ale funcției este finit, atunci
gradul polinomului de aproximare poate fi cel mult egal cu numărul
de puncte diminuat cu 1, în aceleaşi condiții ca la observația 3.
5. Pentru situațiile de la observațiile 3 şi 4, eroarea (restul) se
poate aproxima cu expresia [K2]:
q(q − 1)(q − 2)...(q − n) n +1
R n (q) ≈ ∆ y 0 . (7.2.24)
(n + 1)!
Exemplul 7.1: Se consideră o funcție reală de variabilă reală
f : [0,3] → R , y = f(x), pentru care se cunosc valorile în 4 puncte
echidistante ale intervalului [0, 3], cu pasul de discretizare h = 1,
conform tabelului 7.2.
Tabelul 7.2. Relativ la valorile funcției din exemplul 7.1.
i 0 1 2 3
xi 0 1 2 3
y i = f ( xi ) 0.200 3.145 4.927 6.098
118
Metode de aproximare numerică a funcțiilor
Pentru x = 0.1 se obține din (7.2.20):
0.1 − 0
q= = 0.1 ,
1
iar valorile puterilor generalizate sunt:
q [ 2] = q (q − 1) = −0.09
.
q [ 3] = q [ 2 ] (q − 2) = 0.171
Prin înlocuire în P3 (q ) se obține prima aproximație:
f (1.2) ≈ 0.2 + 2.945 ⋅ 0.1 − 0.581(−0.09) + 0.092 ⋅ 0.171 = 0.562 .
Rămâne ca exercițiu pentru cititor calculul celorlalte trei
aproximații.
119
Metode de aproximare numerică a funcțiilor
120
Metode de aproximare numerică a funcțiilor
∂J n
= 2∑ (a 0 + a1 x i + a 2 x i − y i ) x i = 0 ,
2
(7.3.8)
∂a1 i =0
∂J n
= 2∑ (a 0 + a1 x i + a 2 x i − y i ) x i = 0 .
2 2
(7.3.9)
∂a 2 i =0
Introducând notațiile:
n n n n
s1 = ∑ x i , s 2 = ∑ x i , s 3 = ∑ x i , s 4 = ∑ x i ,
2 3 4
i =0 i =0 i =0 i =0
n n n
(7.3.10)
t 0 = ∑ y i , t1 = ∑ y i x i , t 2 = ∑ y i x i ,
2
i =0 i =0 i =0
sistemul (7.3.7) ... (7.3.9) se va transforma în următorul sistem liniar
în necunscutele a0 , a1 şi a2 :
⎧(n + 1)a 0 + s1 a1 + s 2 a 2 = t 0
⎪
⎨s1 a 0 + s 2 a1 + s 3 a 2 = t1 . (7.3.11)
⎪s a + s a + s a = t
⎩ 2 0 3 1 4 2 2
Exemplul 7.2: Se consideră din nou funcția din exemplul 7.1,
f: [0, 3] → R, y = f(x), pentru care se cunosc valorile în 4 puncte
echidistante ale intervalului [0, 3], cu pasul de discretizare h = 1,
conform tabelului 7.2.
Se cere să se gaseasca un aproximant parabolic al funcției f
cu metoda CMMP.
Soluție: Pentru rezolvarea problemei vor fi calculați pentru
început coeficienții sistemului (7.3.11) aplicând formulele (7.3.10) în
cazul n = 3:
121
Metode de aproximare numerică a funcțiilor
2 2 2 2
s1 = x 0 + x1 + x 2 + x3 = 6 ; s 2 = x0 + x1 + x 2 + x3 = 14 ;
3 3 3 3 4 4 4 4
s3 = x0 + x1 + x 2 + x3 = 36 ; s 4 = x0 + x1 + x 2 + x3 =
= 108 ;
t 0 = y 0 + y1 + y 2 + y 3 = 14,37 ; t1 = y 0 x0 + y1 x1 + y 2 x 2 +
+ y 3 x3 = 31.293 ;
2 2 2 2
t 2 = y 0 x 0 + y1 x1 + y 2 x 2 + y 3 x3 = 77.735 .
Efectuând înlocuirile în (7.3.11), se obține sistemul:
⎧4a 0 + 6a1 + 14a 2 = 14.37
⎪
⎨6a 0 + 14a1 + 36a 2 = 31.293 ,
⎪14a + 36a + 108a = 77.735
⎩ 0 1 2
7.4. Aproximarea cu funcții spline
Enunțul problemei de aproximare este acelaşi ca în cazul
subcapitolelor 7.2 şi 7.3, cu observația că de această dată valorile
functiei f sunt aproximate cu funcții spline polinomiale de grad
m << n .
Se defineşte diviziunea ∆ a intervalului [a, b]:
∆ : a = x 0 < x1 < x 2 < ...x n = b . (7.4.1)
Funcția spline polinomială de ordinul n relativ la diviziunea ∆
a intervalului [a, b] este definită ca o funcție g: [a, b] → R, de clasă
C[ma ,−b1] , ale cărei restricții gi pe fiecare subinterval [xi−1, xi] al diviziunii
∆ sunt polinoame de grad m << n :
g i ( x) = Pmi ( x), ∀x ∈ [ x i −1 , x i ], i = 1, n, gradPmi = m . (7.4.2)
Functia spline g are, conform definiției, primele m–1 derivate
continue pe intervalul [a, b], adică:
122
Metode de aproximare numerică a funcțiilor
g i ( x) = a i + bi ( x − x i −1 ) + c i ( x − x i −1 ) 2 , ∀x ∈ [ x i −1 , x i ], i = 1, n ,
(7.4.5)
cu coeficienții care trebuie determinați a i , bi , c i ∈ R, i = 1, n , în
vederea definirii funcției g.
Dacă sunt impuse condițiile de interpolare (7.4.4) pentru
punctele xi −1 :
g i ( x i −1 ) = y i −1 , i = 1, n , (7.4.6)
din relațiile (7.4.5) şi (7.4.6) rezultă coeficienții ai :
a i = y i −1 , i = 1, n , (7.4.7)
Prin urmare, au rămas de determinat 2n coeficienți,
bi , c i , i = 1, n . Pentru determinarea acestora se începe cu
rescrierea ecuației (7.4.5) sub forma:
g i ( x) = y i + bi ( x − x i −1 ) + c i ( x − x i −1 ) 2 , ∀x ∈ [ x i −1 , x i ], i = 1, n .
(7.4.8)
Derivând (7.4.8) în raport cu x, rezultă:
′
g i ( x) = bi + 2c i ( x − x i −1 ), ∀x ∈ [ x i −1 , x i ], i = 1, n . (7.4.9)
Impunând condițiile (7.4.4), rezultă:
123
Metode de aproximare numerică a funcțiilor
y i = y i −1 + bi ( x i − x i −1 ) + c i ( x i − x i −1 ) 2 , ∀x ∈ [ x i −1 , x i ], i = 1, n .
(7.4.10)
Impunând şi condițiile (7.4.3), se obține:
bi +1 = bi + 2c i ( x i − x i −1 ), i = 1, n − 1 . (7.4.11)
Deci, mai este nevoie de o condiție. De regulă, se consideră că
′
g 1 ( x 0 ) este cunoscută:
′
g 1 ( x 0 ) = b1 + 2c i ( x 0 − x 0 ) = b1 , (7.4.12)
adică se alege b1 pe baza experienței specialistului care aproximează
pe f.
A fost obținut, astfel, sistemul liniar (7.4.10) ... (7.4.12) de 2n
ecuații cu 2n necunoscute. În cazul punctelor echidistante cu pasul
de discretizare h, sistemul menționat se transformă în:
b1 = g1’(x0) ,
h bi + h2 ci = yi – yi−1 , i = 1, n , (7.4.13)
bi + 2 h ci – bi+1 = 0 , i = 1, n − 1 .
După rezolvarea sistemului, pentru aproximarea unei valori
f(x) se identifică subintervalul x ∈ [ xi −1 , xi ] şi apoi se aplică (7.4.8).
Dacă se particularizează sistemul (7.4.13) pentru n = 3, se va
obține următorul sistem liniar de 6 ecuații cu 6 necunoscute:
⎧b = g ′ ( x )
⎪ 1 1 0
⎪hb1 + h c1 = y1 − y 0
2
⎪
⎪b1 + 2hc1 − b2 = 0
⎨ . (7.4.14)
⎪hb2 + h c 2 = y 2 − y1
2
⎪b + 2hc − b = 0
⎪ 2 2 3
⎪⎩hb3 + h 2 c 3 = y 3 − y 2
Se observă că sistemul obținut este inferior triunghiular.
În subcapitolul următor vor fi prezentate aplicații legate de
aproximarea cu funcții spline.
124
Metode de aproximare numerică a funcțiilor
7.5. Aplicații în Matlab
Pentru început se discută problema căutării datelor în
tabele, care reprezintă operația prin care se citeşte o anumită
valoare dintr‐un tabel predefinit [G2]. Această valoare poate fi în
tabel sau între două elemente ale tabelului. În Matlab sunt
implementate două variante ale căutării datelor în tabele, şi anume
căutarea în tabele unidimensionale şi căutarea în tabele
bidimensionale, corespunzătoare funcțiilor de o variabilă respectiv de
două variabile.
Pentru căutarea datelor în tabele unidimensionale este
definită funcția Matlab table1 cu sintaxa următoare în acord cu
subcapitolul 7.1:
y=table1(tab,x)
în care prima coloană a tabelului tab conţine valorile lui x (variabilei
independente, abscisei) în ordine crescătoare. Următoarea coloană
conţine valorile variabilei dependente căutate, y. Tabelul poate avea
mai multe coloane în cazul în care este vorba despre mai multe
variabile dependente considerate funcţii de o singură variabilă
independentă.
Funcţia returnează valoarea lui y (variabilei dependente,
ordonatei) pentru o anumită valoare a lui x, care se poate afla în prima
coloană sau nu. În caz contrar, valoarea corespunzătoare a lui y
(returnată de funcţie) se determină prin interpolare liniară. Acest
aspect rezultă din exemplul următor.
Exemplul 7.3: Să se obțină valorile lui y, notate cu y1, y2 şi y3,
care corespund respectiv lui x1 = –1, x2 = 0 şi x3 = 1.5, astfel încât
între y şi x să fie satisfăcută dependența conform tabelului
unidimensional 7.4.
Tabelul 7.4. Tabel unidimensional de date pentru exemplul 7.3.
x y
–1 90
0 86
1 62
2 74
Soluție: Se execută următoarea secvență de program Matlab
(fişier M):
tab1=[-1 0 1 2; 90 86 62 74];
tab=tab1';
125
Metode de aproximare numerică a funcțiilor
y1=table1(tab,-1)
y2=table1(tab,0)
y3=table1(tab,1.5)
y1 =
90
y2 =
86
y3 =
68
Pentru căutarea datelor în tabele bidimensionale este
definită funcția Matlab table2 cu sintaxa următoare [M1]:
y=table2(tab,x1,x2)
în care prima coloană a tabelului tab conține valorile lui x1 (primei
variabile independente) în ordine crescătoare, iar în prima linie
valorile lui x2 (celei de‐a doua variabile independente), din nou în
ordine crescătoare. Celelalte elemente din tabel conțin valorile
variabilei dependente căutate, y, cu observația că este necesar ca
y(1,1)=0.
Funcția returnează valoarea lui y pentru o anumită valoarea a
perechii de variabile independente (x1, x2), care se poate afla în
prima linie şi coloană sau nu. În caz contrar, valoarea
corespunzătoare a lui y se determină, ca şi în cazul anterior, prin
interpolare liniară după cum va rezulta din exemplul următor.
Exemplul 7.4: Să se obțină valorile y, notate cu y1, y2, y3 şi
y4, care corespund perechilor (x1, x2) ∈ {(–1, 4), (2, 6), (0.5, 5), (0.5,
4.5)} din tabelul bidimensional ilustrat în tabelul 7.5.
Tabelul 7.5. Tabel bidimensional de date pentru exemplul 7.4.
x1 \ x2 3 4 5 6
–1 90 50 10 –30
0 80 40 0 –40
1 70 30 –10 –50
2 60 20 –20 –60
Soluție: Se execută următoarea secvență de program Matlab:
tab=[ 0 3 4 5 6
-1 90 50 10 -30
0 80 40 0 –40
1 70 30 –10 –50
2 60 20 –20 –60];
y1=table2(tab,-1,4)
126
Metode de aproximare numerică a funcțiilor
y2=table2(tab,2,6)
y3=table2(tab,0.5,5)
y4=table2(tab,0.5,4.5)
y1 =
50
y2 =
-60
y3 =
-5
y4 =
15
Pentru aproximarea prin interpolare polinomială a funcțiilor
de o variabilă, în Matlab se foloseşte funcția interp1, cu sintaxa
următoare [M1]:
yi=interp1(x,y,xi,’varianta’)
în care x şi y sunt vectorii care conțin abscisele şi respectiv
ordonatele punctelor cu valorile cunoscute ale funcțiilor, yi
reprezintă vectorul returnat al valorilor aproximate aferente valorilor
variabilei dependente conținute în vectorul xi, iar ‘varianta’
poate fi unul din cuvintele corespunzătoare următoarelor variante de
aproximare prin interpolare polinomială:
‐ ‘linear’ – pentru interpolarea liniară (n = 1 conform
subcapitolului 7.2),
‐ ‘cubic’ – pentru interpolarea cubică (n = 3 conform
subcapitolului 7.2),
‐ ‘spline’ – pentru interpolarea spline cubică (m = 3
conform subcapitolului 7.4).
În continuare este prezentat un exemplu de aplicare a
funcției interp1.
Exemplul 7.5: Se consideră date patru puncte în care sunt
cunoscute valorile funcției din exemplul 7.3 (a se vedea tabelul
unidimensional 7.4). Să se reprezinte pe acelaşi grafic trei interpolări
polinomiale – liniară, cubică şi spline cubică – pentru 31 de puncte cu
abscisele echidistante în intervalul [–1, 2].
Soluție: Pentru rezolvarea problemei se execută următoarea
secvență de program Matlab:
% Exemplu de efectuare a trei interpolari
% Abscisele punctelor:
x=[-1 0 1 2];
% Ordonatele punctelor:
y=[90 86 62 74];
127
Metode de aproximare numerică a funcțiilor
% Vectorul absciselor:
xi=-1:0.1:2;
% Vectorii ordonatelor:
% - la interpolarea liniara:
yi1=interp1(x,y,xi,'linear');
% - la interpolarea cubica:
yi2=interp1(x,y,xi,'cubic');
% - la interpolarea spline cubica:
yi3=interp1(x,y,xi,'spline');
% Reprezentari grafice:
plot(x,y,’ko’,xi,yi1,’k:’,xi,yi2,'k-
',xi,yi3,'k-.')
grid; xlabel('x'); ylabel('y yi1 yi2 yi3');
title('y ooo, yi1-lin. . ., yi2-cub. --,yi3-
spline c. -.')
hhh=gcf;
set(hhh,'color',[1 1 1]);
În fig.7.1 este prezentat rezultatul executării programului
anterior sub forma graficelor aferente celor trei interpolări; cu ‘o’ au
fost reprezentate punctele (de tip (7.2.1)) în care se cunosc valorile
funcției.
Fig.7.1. Exemplu de rezultat al interpolărilor liniară, cubică şi spline
cubică.
128
Metode de aproximare numerică a funcțiilor
129
Metode de aproximare numerică a funcțiilor
Fig.7.2. Rezultatul a două interpolări spline cubice din exemplul 7.6.
Pentru aproximarea polinomială prin metoda CMMP
(regresia polinomială), în Matlab este definită funcția polyfit cu
sintaxa:
P=polyfit(x,y,m)
în care parametrii P reprezintă polinomul returnat de funcție, grad P
= m, (relația (7.3.3)) sub forma unui vector conținând coeficienții
ai , i = 0, m , în ordinea descrescătoare a gradelor, iar x şi y sunt
vectorii care conțin abscisele şi respectiv ordonatele perechilor de
valori (7.3.1) în care sunt cunoscute valorile funcției de aproximat.
Pentru ilustrarea aplicării funcției polyfit este prezentat
exemplul următor.
Exemplul 7.7: Se consideră date 20 de puncte, prezentate în
tabelul 7.6, în care sunt cunoscute valorile unei funcții
corespunzătoare unei părți a răspunsului indicial al unui sistem (de
exemplu, [P3]). Să se reprezinte pe acelaşi grafic trei aproximări
polinomiale în sensul CMMP (regresii polinomiale) având gradele 1
(regresie liniară), 2 (regresie parabolică) şi respectiv 3 (regresie
cubică).
130
Metode de aproximare numerică a funcțiilor
Tabelul 7.6. Tabel unidimensional de date pentru exemplul 7.7.
x 0 1 2 3 4 5 6 7
y 0 10.5 19.8 28.2 35.7 42.4 48.4 53.8
x 8 9 10 11 12 13 14
y 58.7 62.9 66.9 70.3 73.4 76.2 78.7
x 15 16 17 18 19
y 80.1 82.9 84.7 86.3 87.7
131
Metode de aproximare numerică a funcțiilor
Fig.7.3. Rezultatul a trei regresii polinomiale în sensul CMMP din
exemplul 7.7.
Sunt recomandate lucrările [G2] şi [P1] pentru studiul altor
aplicații în Matlab destinate aproximării numerice a funcțiilor de una
sau mai multe variabile.
7.6. Rezumat
Dacă valorile lui x pentru care se aproximează funcția aparțin
intervalului, atunci se utilizează termenul de interpolare pentru
problema enunțată, iar dacă problema se extinde şi în afara
intervalului, atunci se utilizează termenul de extrapolare.
Cele mai utilizate clase de funcții de aproximare sunt: monoamele,
funcțiile exponențiale şi funcțiile trigonometrice.
Polinomul de aproximare prin interpolare este univoc definit.
Metodele de interpolare se deosebesc între ele prin modul de
determinare a acestui polinom unic sau a unor forme echivalente ale
sale.
În cazul aproximării prin metoda celor mai mici pătrate gradul
regresiei polinomiale este mult mai mic decât numărul de puncte în
care se cunosc valorile funcției.
132
Metode de aproximare numerică a funcțiilor
7.7. Probleme propuse
1. Să se determine polinomul de interpolare Newton de speța
1 care aproximează funcția f, cu valorile din tabelele următoare:
a)
i 0 1 2 3 4
xi 0 1 2 3 4
yi = f ( xi ) 0 1 8 27 64
b)
i 0 1 2 3 4
xi –1 1 3 5 7
yi = f ( xi ) 0 1 4 9 16
c)
i 0 1 2 3 4 5
xi 0 1 2 3 4 5
yi = f ( xi ) 5.2 8 10.4 12.4 14 15.2
d)
i 0 1 2 3 4 5
xi 0 1.2 2.4 3.6 4.8 6
yi = f ( xi ) 3 6.84 14.25 27 39.21 51
Să se aproximeze:
a) f(0.1) şi f(2.8); b) f(1.5) şi f(2.9); c) f(2.5) şi f(4.8); d) f(0.6) şi
f(0.9).
2. Să se exprime aproximarea numerică parabolică prin
metoda celor mai mici pătrate şi funcțiile spline de interpolare
parabolică în cazul aproximării funcției f cu valorile din tabelul
alăturat (tabelele a) … d) de la problema anterioară). Să se
aproximeze:
a) f(0.1) şi f(2.8);
b) f(1.5) şi f(2.9);
c) f(2.5) şi f(4.8);
d) f(0.6) şi f(0.9).
Să se compare şi comenteze rezultatele obținute.
133