Aproximarea funcțiilor de o variabilă

Download Report

Transcript Aproximarea funcțiilor de o variabilă

CURS 2 APROXIMAREA FUNCTIILOR DE O VARIABILA (I)
Introducere
Problema aproximarii unei functii de o variabila se poate aplica in diferite situatii, doua fiind mai
frecvente:
• functia este complet cunoscuta dar are o expresie complicata, dificil de manipulat in calcule (in
operatii de derivare, de integrare etc.);
• functia nu este complet cunoscuta, fiind date numai valorile acesteia pe o multime discreta si
finita de puncte.
Problema aproximarii poate fi formulata astfel:
Fie f: [a,b] R, cunoscuta numai prin valorile sale si anume: f(xi) = yi, intr-un numar finit de
puncte xi  [a,b], numite noduri, cu x1 = a si x2 = b. Sa se determine o functie g(x), de expresie
cat mai simpla, care sa poata sa aproximeze cat mai bine functia f(x) pe intervalul dat.
y = g(x)
y = f(x)
x1 = a
x2
x3
xk Xn = b
Criterii de aproximare
a) Interpolarea
b) Minimizarea abaterii maxime
c) Minimizarea sumei patratelor abaterilor in noduri.
a) Aproximarea prin interpolare
Presupunand cunoscute valorile yi ale functiei f(xi) in nodurile xi distincte (x1 < x2 < … < xn),
conditia de interpolare g(xi) = yi reprezinta un sistem de n ecuatii cu n necunoscute. Pentru
aproximante g(x) se utilizeaza relatia:
n
g(x) =
 akgk(x)
k=1
in care ak reprezinta un set de n parametri nedeterminati (scalari) , iar gk(x) un set de n functii
simple cunoscute, liniar independente (functii polinomiale, trigonometrice, exponentiale etc.).
a1) Interpolarea polinomiala
Un set de functii despre care se stie ca sunt liniar independente il reprezinta sirul de monoame
xk-1, (k =1,2,…,n). In acest caz functia de interpolare devine un polinom de grad (n-1), numit
polinom de interpolare.
n
g(x) = Pn-1(x) =

ax
k=1
k
k-1
= a1 +a2x+a3x2+…+anxn-1
Problema determinarii coeficientilor aK se rezolva folosind conditia de interpolare, adica
gasind solutiile sistemului de ecuatii liniare:
n

ax
k=1
k
k-1
=yi
care poate fi scris printr-o ecuatie matriceala astfel:
n-1
1 x1 x12 … x1
n-1
1 x2 x22 … x2
…………………
n-1
1 xn xn2 … xn
a1
a2
.
.
an
y1
=
y2
yn
Nodurile xi fiind distincte, sistemul este de tip Cramer, cu determinant Vandermonde, avand
o solutie unica bine determinata pentru coeficientii aK. Metoda este foarte simpla, dar cand
numarul de puncte xi este mare, rezolvarea sistemului este dificilă sau mai puţin
convenabilă.
Metoda este simpla, dar cand numarul de noduri xi este mare, rezolvarea sistemului este
dificila sau cel puţin neconvenabilă. De aceea, in aceste cazuri se preferă alte forme ale
polinoamelor de interpolare.
UTILIZAREA COMENZILOR MATLAB PENTRU
INTERPOLAREA SI APROXIMAREA DATELOR
table1
Interpoleaza liniar si citeste date din tabele unidimensionale
spline
Interpoleaza prin metoda spline date din tabele unidimensionale
polyfit
Aproximeaza un set de date cu un polinom de grad n
polyval
Evalueaza un polinom la valorile precizate ale variabilei
interp1
Interpoleaza liniar, spline sau cubic date din tabele unidimensionale
table2
Interpoleaza liniar date si citeste date din tabele bidimensionale
interp2
Interpoleaza biliniar sau bicubic date din tabele bidimensionale
interp3
Interpoleaza biarmonic valorile unei functii de doua variabile
interp4
Interpoleaza biliniar valorile unei functii de doua variabile
interp5
Interpoleaza bicubic valorile unei functii de doua variabile
regress
Aproximeaza un set de date cu o functie de mai multe variabile
APLICATIA 1
(EXEMPLU DE CALCUL ANALITIC)
Utilizand punctele x1 = 1, x2 = 1.21 si x3 = 1.44, sa se determine polinomul de interpolare de
gradul doi care aproximeaza functia f(x) =  x si sa se aproximeze f(1.3).
REZOLVARE
Avand trei puncte cunoscute, se pot impune trei conditii, si anume:
y1 = 1; y2 = 1.1 si y3 = 1.2.
Expresia polinomului de interpolare este data de: g(x) = a1+ a2x + a3x2
Impunând conditiile: g(1) = 1; g(1.21) =1.1 si g(1.44) = 1.2, rezulta sistemul de ecuatii liniar:
a1 + a 2 + a 3 = 1

a1 + 1.21a2 + 1.4641a3 = 1.1
a1 + 1.44a2 + 2.0736a3 = 1.2
cu solutia unica: a1 = 0.4099; a2 = 0.6842; a3 = -0.0941, polinomul de interpolare fiind: g(x) =
P2(x) = -0.0941x2 + 0.6842x +0.4099.
Aproximarea prin acest polinom a lui x = 1.3 este: g(1.3) = 1.1403. Cum valoarea reala a lui
f(1.3) este 1.140175, polinomul de interpolare da aproximatii destul de bune.
UTILIZAREA COMENZILOR PROGRAMULUI MATLAB
PENTRU INTERPOLAREA SPLINE CUBICA
APLICATIA 2
Dandu-se urmatorul set de date se cere sa se determine valoarea y de interpolare spline
cubica pentru x = 2.6
COMANDA:
x
0
1
2
3
4
5
y
0
20
60
68
77
110
x = [0, 1, 2, 3, 4, 5];
y = [0, 20, 60, 68, 77, 110];
yval = spline (x, y, 2.6)
Nume variabila = spline (x,y,x1)
REZULTATE OBTINUTE: yval =
67,3013
APLICATIA 3
In urma unui experiment se inregistreaza datele:
Ora: [0 2.5 5 7.5], Temperatura: [1 -1 0.5 0]. Se cere sa se reprezinte grafic variatia
temperaturii in intervalul [0 7.5], folosind cubic_spline de pas 0.25. Se cere de asemenea
estimarea valorii temperatura la ora 0.25.
COMANDA: >> x = [0 2.5 5 7.5], y = [1 -1 0.5 0]; xi = 0:0.25:7.5; yi = spline (x,y,xi);
>> plot (x,y,’o’,xi,yi)
>> valoarea_ceruta0 = spline(x,y,0.25)
REZULTATE OBTINUTE:
valoarea_ceruta0 =
0.4858
Graficul dependenţei orei de temperatură
este prezentat alaturat.
1
0.5
0.4858
0
-0.5
-1
-1.5
0 0.25 1
2
3
4
5
6
7
8
a2) Forma Lagrange a polinomului de interpolare
n
In practica, pentru a evita rezolvarea sistemului de ecuatii

ax
k=1
k
k-1
=yi
o forma mai convenabila pentru exprimarea functiei g(x) o constituie polinomul de interpolare
Lagrange. Acesta se scrie sub forma:
Pn-1(x) =
n
 ykLk(x) = y1L1(x) + y2L2(x) + … + ynLn(x)
k=1
Coeficientii aK sunt chiar valorile yk ale functiei f(x) in noduri, iar functiile gk(x) din relatia
g(x)
=  akgk(x) sunt scrise sub forma unor polinoame, denumite polinoame Lagrange si notate cu
Lk(x). Aceste polinoame, de grad (n-1) au expresiile:
L1(x) =
L2(x) =
Ln(x) =
(x-x2)(x-x3)…(x-xn)
(x1-x2)(x1-x3)…(x1-xn)
(x-x1)(x-x3)…(x-xn)
sau, intr-o forma concisa:
n
x-x
Lk(x) =  x - xi
i
i=1 k
ik
(x2-x1)(x2-x3)…(x2-xn)
Lk(xi) = 0 pentru k  i
(x-x1)(x-x3)…(x-xn-1)
Lk(xi) = 1 pentru k = i
(xn-x1)(xn-x2)…(xn-xn-1)
; k = 1, 2,…, n
APLICATIA 4
(EXEMPLU DE CALCUL ANALITIC)
Utilizand punctele x1 = 1, x2 = 1.21 si x3 = 1.44, sa se determine polinomul de interpolare
Lagrange care aproximeaza functia f(x) =  x .
REZOLVARE
Se vor calcula cele trei polinoame Lagrange de gradul al doilea:
(x-x2)(x-x3)
(x-1.21)(x-1.44) (x-1.21)(x-1.44)
L1(x) =
= (1-1.21)(1-1.44) =
0.0924
(x1-x2)(x1-x3)
(x-x1)(x-x3)
(x-1)(x-1.44)
(x-1)(x-1.44)
L2(x) =
= (1.21-1)(1.21-1.44) = - 0.0483
(x2-x1)(x2-x3)
L3(x) =
(x-1)(x-1.21)
(x-x1)(x-x2)
(x-1)(x-1.21)
= (1.44-1)(1.44-1.21) =
0.1012
(x3-x1)(x3-x2)
Cum f(x1) = y1 = 1, f(x2) = y2 = 1.1, f(x3) = y3 = 1.2, polinomul de interpolare Lagrange va fi:
P2(x) = L1(x)y1 + L2(x)y2 + L3(x)y3 = - 0.0941x2 + 0.6842x +0.4099, identic cu cel gasit in
Aplicatia 1.
COMANDA:
>> x = [1 1.21 1.44]
>> y = [1 1.1 1.2]
>> yval = polyfit(x,y,2)
REZULTATE OBTINUTE:
yval =
- 0.0941 0.6842 0.4099
Nume variabila = polyfit (x,y,n)
Gradul polinomului de interpolare
a3) Forma Newton a polinomului de interpolare
O alta modalitate convenabila de construire a polinomului de interpolare o constituie
polinomul lui Newton cu diferente divizate.
Fiind date perechile de numere (xi, yi) se definesc urmatoarele rapoarte, denumite diferente
divizate, notate cu (DD):
y2 – y1
DD (x2, x1) = x – x
2
1
DD(x3, x2, x1) =
Diferentele divizate care se folosesc utilizand n
puncte se numesc diferente divizate de ordinul (n-1)
DD(x3, x2) – DD(X2, x1)
x3 – x1
DD(xn, xn-1,…, x1) =
x
y
x1
y1
x2
y2
x3
y3
x4
y4
x5
y5
DD(xn,…,x2) – DD(xn-1,…,x1)
xn – x1
DD1
DD(x2, x1)
DD2
DD(x5, x4)
DD4
DD(x3, x2, x1)
DD(x4, x3, x2, x1)
DD(x3, x2)
DD(x4, x3)
DD3
DD(x4, x3, x2)
DD(x5, x4, x3)
DD(x5, x4, x3, x2, x1)
DD(x5, x4, x3, x2)
Pn-1(x) = y1 + (x-x1)DD(x2, x1) + (x-x1)(x-x2)DD(x3, x2, x1) + (x-x1)(x-x2)…(x-xn-1)DD(xn,…,x1)
Pn-1(x) = polinomul de interpolare (polinomul lui Newton cu diferente divizate)
Rn-1(x) = restul (eroarea de aproximare la interpolarea polinomiala)
n
Rn-1(x) =  (x-xi)DD(x, xn, xn-1,…,x1) iar
i=1
F(x) = Pn-1(x) + Rn-1(x)
CONCLUZII
• Formula de interpolare Lagrange este aceeasi indiferent daca punctele de interpolare
sunt egal distantate sau luate arbitrar pe scara absciselor. Relatia de recurenta este
simpla, usor de aplicat pe calculator, necesitand un spatiu de memorie mai redus.
• Interpolarea Newton permite trecerea cu usurinta la retele cu un numar mai mare de
puncte, dar necesita alocarea unui spatiu de memorie mai mare decat in cazul interpolarii
Lagrange din cauza diferentelor divizate. La adaugarea unor puncte aditionale de
interpolare apar noi termeni in expresia polinomului de interpolare, fara insa a modifica pe
cei calculati anterior.
(EXEMPLU DE CALCUL ANALITIC)
APLICATIA 5
Utilizand punctele x1 = 1, x2 = 1.21 si x3 = 1.44, sa se determine polinomul de interpolare
Newton care aproximeaza functia f(x) =  x .
REZOLVARE
Se calculeaza mai intai diferentele divizate si se tabeleaza rezultatele:
y2 – y1
1.1-1 = 0.4762
DD (x2, x1) = x – x =
1.21-1
2
1
y3 – y2
1.2-1.1
= 0.4348
DD (x3, x2) = x – x =
1.44 -1.21
3
2
DD(x3, x2, x1) =
DD(x3, x2) – DD(X2, x1)
0.4348 – 0.4762 = - 0.0941
=
x3 – x1
1.44 – 1
In final,
P2(x) = y1 + (x-x1)DD(x2, x1) + (x-x1)(x-x2)DD(x3, x2, x1) =
= 1 + (x-1)0.4762 + (x-1)(x-1.21)(-0.0941) =
= - 0.0941x2 + 0.6842x +0.4099,
care este identic cu cel determinat prin metoda de interpolare Lagrange.