4
Departamentul A.I.A. Matematici Asistate de Calculator Anexa A6 Elemente despre rezolvarea sistemelor de ecuaţii neliniare în Matlab. Elemente despre aproximarea numerică a funcţiilor în Matlab 1. Rezolvarea sistemelor de ecuaţii neliniare Fie sistemul de ecuaţii neliniare (vezi anexa B6): = = = n n 2 1 n 2 n 2 1 2 1 n 2 1 1 c ) x , , x , (x f c ) x , , x , (x f c ) x , , x , (x f K L L L L L L L L K K Pentru a rezolva acest sistem cu ajutorul mediului Matlab, el trebuie adus la forma canonică: = = = 0 ) x , , x , (x g 0 ) x , , x , (x g 0 ) x , , x , (x g n 2 1 n n 2 1 2 n 2 1 1 K L L L L L L L L K K unde g i =f i –c i , i=1,2,...,n. Un sistem de ecuaţii neliniare poate fi rezolvat în Matlab pe cale numerică sau pe cale simbolică. a. Rezolvarea numerică a sistemelor de ecuaţii neliniare Pentru rezolvarea sitemelor de ecuaţii neliniare pe cale numerică se parcurg etapele de separare şi rezolvare aproximativă menţionate în anexa B6. În ceea ce priveşte etapa localizării, în cazul sistemelor de ecuaţii neliniare cu două necunoscute: = = 0 ) x , (x g 0 ) x , (x g 2 1 2 2 1 1 se poate folosi metoda grafică. În acest scop se reprezintă grafic în plan mulţimea punctelor care satisfac ecuaţia 0 ) x , (x g 2 1 1 = şi mulţimea punctelor care satisfac ecuaţia . Coordonatele punctelor de intersecţie ale celor două grafice reprezintă soluţiile sistemului de ecuaţii. Citirea acestora de pe grafic se poate face cu funcţia Matlab ginput prezentată în anexa A5. Deoarece citirea de pe grafic se face cu o anumită eroare, coordonatele citite de pe grafic vor constitui valorile în vecinătatea cărora sunt localizate soluţiile şi vor fi utilizate în a doua etapă ca valori de pornire în determinarea soluţiei. 0 ) x , (x g 2 1 2 = A6-1

aproximare polinomiala matlab.pdf

Embed Size (px)

DESCRIPTION

matlab

Citation preview

Page 1: aproximare polinomiala matlab.pdf

Departamentul A.I.A. Matematici Asistate de Calculator

Anexa A6

Elemente despre rezolvarea sistemelor de ecuaţii neliniare în Matlab. Elemente despre aproximarea numerică a funcţiilor în Matlab

1. Rezolvarea sistemelor de ecuaţii neliniare

Fie sistemul de ecuaţii neliniare (vezi anexa B6):

⎪⎪⎩

⎪⎪⎨

=

==

nn21n

2n212

1n211

c)x,,x,(xf

c)x,,x,(xf

c)x,,x,(xf

K

LLLLLLLL

K

K

Pentru a rezolva acest sistem cu ajutorul mediului Matlab, el trebuie adus la forma canonică:

⎪⎪⎩

⎪⎪⎨

=

==

0)x,,x,(xg

0)x,,x,(xg

0)x,,x,(xg

n21n

n212

n211

K

LLLLLLLL

K

K

unde gi=fi–ci, i=1,2,...,n.

Un sistem de ecuaţii neliniare poate fi rezolvat în Matlab pe cale numerică sau pe cale simbolică.

a. Rezolvarea numerică a sistemelor de ecuaţii neliniare Pentru rezolvarea sitemelor de ecuaţii neliniare pe cale numerică se parcurg etapele de

separare şi rezolvare aproximativă menţionate în anexa B6.

În ceea ce priveşte etapa localizării, în cazul sistemelor de ecuaţii neliniare cu două necunoscute:

⎩⎨⎧

==0)x,(xg

0)x,(xg

212

211

se poate folosi metoda grafică. În acest scop se reprezintă grafic în plan mulţimea punctelor care satisfac ecuaţia 0)x,(xg 211 = şi mulţimea punctelor care satisfac ecuaţia

. Coordonatele punctelor de intersecţie ale celor două grafice reprezintă soluţiile sistemului de ecuaţii. Citirea acestora de pe grafic se poate face cu funcţia Matlab ginput prezentată în anexa A5. Deoarece citirea de pe grafic se face cu o anumită eroare, coordonatele citite de pe grafic vor constitui valorile în vecinătatea cărora sunt localizate soluţiile şi vor fi utilizate în a doua etapă ca valori de pornire în determinarea soluţiei.

0)x,(xg 212 =

A6-1

Page 2: aproximare polinomiala matlab.pdf

Departamentul A.I.A. Matematici Asistate de Calculator

Cea de-a doua etapă are ca scop calculul soluţiei / soluţiilor din domeniul de interes cu o precizie apriori fixată.

Pentru calculul soluţiilor este necesară definirea în prealabil într-un fişier-funcţie a funcţiilor gi ca şi componente ale unei funcţii vectoriale.

Pentru calculul fiecărei soluţii a sistemului de ecuaţii neliniare, în vecinătatea unui punct rezultat prin separare, se foloseşte funcţia Matlab fsolve din toolbox-ul de optimizare (Optimization Toolbox). Această funcţie are mai multe sintaxe de apel, analog funcţiei Matlab fzero (vezi anexa A5):

• dacă interesează doar determinarea soluţiei, se foloseşte una din sintaxele de apel: x = fsolve(nume_fisier,x0)

x = fsolve(nume_fisier,x0,optiuni)

• dacă în afară de determinarea soluţiei interesează, din considerente de precizie, şi evaluarea funcţiilor gi pentru soluţia găsită, se apelează funcţia cu una din sintaxele:

[x,fval]= fsolve(nume_fisier,x0)

[x,fval]= fsolve(nume_fisier,x0,optiuni)

• dacă interesează şi modul în care s-a ajuns la oprirea executării metodei numerice (rezolvare cu respectarea condiţiilor impuse, oprire prin atingerea numărului maxim de iteraţii, …), se foloseşte una din sintaxele de apel:

[x,fval,exitflag]= fsolve(nume_fisier,x0)

[x,fval,exitflag]= fsolve(nume_fisier,x0,optiuni)

• dacă interesează şi anumite date suplimentare, precum numărul de iteraţii efectuate, se apelează funcţia cu una din sintaxele:

[x,fval,exitflag,output]= fsolve(nume_fisier,x0)

[x,fval,exitflag,output]= fsolve(nume_fisier,x0,optiuni)

unde:

- nume_fisier reprezintă un şir de caractere care conţine numele fişierului-funcţie în care au fost definite funcţiile gi ca şi componente ale unei funcţii vectoriale;

- x0 reprezintă vectorul valorilor aproximative ale soluţiei căutate;

- optiuni reprezintă o structură care conţine opţiuni de optimizare a calculării soluţiei; este un argument opţional; opţiunile de optimizare pot fi schimbate folosind funcţia Matlab optimset (vezi anexa A5);

- x reprezintă soluţia calculată cu o precizie apriori fixată, sub forma unui vector;

- fval reprezintă valorile funcţiilor gi pentru soluţia calculată x;

- exitflag reprezintă o valoare de control, care preciziază motivul opririi algoritmului; de exemplu, valoarea 1 are semnificaţia că algoritmul a ajuns la o soluţie în condiţiile impuse;

- output reprezintă o structură care conţine mai multe informaţii, printre care şi numărul de iteraţii (iterations), numărul de evaluări (funcCount) efectuate şi algoritmii utilizaţi pentru determinarea soluţiei (algorithm).

A6-2

Page 3: aproximare polinomiala matlab.pdf

Departamentul A.I.A. Matematici Asistate de Calculator

b. Rezolvarea simbolică a sistemelor de ecuaţii neliniare Pentru rezolvarea pe cale simbolică a sistemelor de ecuaţii neliniare, se utilizează

funcţia Matlab solve din Symbolic Math Toolbox, având sintaxele: s=solve(eq_1,eq_2,...,eq_n)

s=solve(eq_1,eq_2,...,eq_n,var_1,var_2,...,var_n)

unde:

- eq_i reprezintă expresia membrului stâng al ecuaţiei i a sistemului, scrisă între apostrofuri;

- var_1,var_2,...,var_n reprezintă necunoscutele sistemului, scrise între apostrofuri;

- s este o structură, având ca membri vectori de valori; fiecare vector corespunde unei necunoscute, având aceeaşi denumire cu aceasta, şi conţine valorile obţinute pentru acea necunoscută în cazul fiecărei soluţii găsite.

Avantajul rezolvării unui sistem de ecuaţii neliniare pe cale simbolică constă în faptul că nu trebuie indicat nici un set de valori de pornire în calculul soluţiei, iar valoarea soluţiei este determinată cu exactitate. Dezavantajul constă în faptul că puţine sisteme pot fi rezolvate pe această cale.

2. Aproximarea numerică a funcţiilor

Fie f o funcţie precizată printr-un set de n puncte (xi,yi=f(xi)), i=1,2,...,n.

a. Interpolare liniară. Interpolare cu polinom Hermite. Interpolare cu funcţii spline

Pentru aproximarea numerică a funcţiei f de o variabilă reală prin interpolare liniară, interpolare cu polinom Hermite sau interpolare cu funcţii spline, Matlab pune la dispoziţia utilizatorului funcţia interp1 cu următoarea sintaxă de apel: vy=interp1(x,y,vx,'metoda')

unde:

- x este vectorul punctelor {xi};

- y este vectorul punctelor {yi};

- vx este vectorul punctelor în care se doreşte aproximarea funcţiei f;

- vy este vectorul obţinut prin aproximarea funcţiei f în punctele vx;

- metoda reprezintă un şir de caractere prin care se precizează metoda de interpolare dorită:

o linear – pentru interpolare liniară (este metoda implicită);

o cubic sau pchip – pentru interpolare cu polinom Hermite cubic pe porţiuni;

o spline – pentru interpolare spline cubică.

A6-3

Page 4: aproximare polinomiala matlab.pdf

Departamentul A.I.A. Matematici Asistate de Calculator

Interpolarea cu funcţii spline se mai poate realiza şi cu funcţia Matlab spline. Sintaxa de apel a funcţiei spline este: vy=spline(x,y,vx)

în care parametri x,y,vx şi vy au aceleaşi semnificaţii ca şi în cazul funcţiei interp1.

Observaţie: De fapt, methoda 'spline' a funcţiei interp1 apelează fără implicarea utilizatorului funcţia Matlab spline pentru realizarea interpolării.

b. Aproximare cu metoda celor mai mici pătrate

Aproximarea funcţiei f cu metoda celor mai mici pătrate se realizează în Matlab prin parcurgerea următoarelor două etape:

1. Determinarea polinomului de interpolare folosind funcţia Matlab polyfit, care are sintaxa:

P=polyfit(x,y,m)

unde:

- x este vectorul punctelor {xi};

- y este vectorul punctelor {yi};

- m este gradul polinomului de aproximare, 0 ≤ m≤ n-1;

- P este vectorul coeficienţilor polinomului de interpolare, coeficienţii fiind în ordinea descrescătoare a puterilor nedeterminatei polinomului.

2. Calculul valorilor polinomului de aproximare în punctele dorite, utilizând funcţia Matlab polyval, care are sintaxa:

vy=polyval(P,vx)

unde:

- vx este vectorul punctelor în care se doreşte aproximarea funcţiei f;

- P este vectorul coeficienţilor polinomului de interpolare, obţinut în prima etapă;

- vy este vectorul obţinut prin aproximarea funcţiei f în punctele vx cu valorile polinomului P.

A6-4