Sunteți pe pagina 1din 11

PRACTICA

Formule de Cuadratur a si Aproximarea solut iilor sistemelor 2013

Danci-Bumbea Ionut

Facultatea de Matematic a si Informatic a Universitatea Ovidius din Constant a

Introducere

O problema de cuadratur a numeric a se formuleaz a astfel: Fiind dat a functia f (cel put in) continu a pe intervalul [a,b], determinai coecient ii/ponderile ai si nodurile diviziunii intervalului [a.b],xi ,i=1,...,n a.i.
n

f (x)dx =
i=1

ai f (xi )

sa e exact a pentru polinoamele de grad maxim posibil. daca nodurile xi sunt echidistante, atunci formula de cuadratur a(1) se nume ste de tip Newton-Cotes daca ponderile ai sunt toate egale, formula de cuadratur a(1) se nume ste de tip Cebisev daca at at nodurile xi , c at si ponderile ai sunt determinate a.i. sa e indeplinita cerinta de mai sus, formula de cuadratur a(1) se nume ste de tip Gauss. In MATLAB, exist a dou a funct ii predenite(built-in) care aproximeaz a integra lele pe R. Acestea sunt quad si quadl si au urm atoarea sintaxa: q=quad(fum,a,b) sau q=quad(fun,a,b,tol) sau q=quad(fun,a,b,tol,pl,p2,...) sau [q,nevf]=quad(fun,a,b,...) unde: a, b sunt capetele intervalului f un este un nume de script( de tip funct ie) ce cont ine denit ia funct iei de integrat tol este parametru optional si reprezint a eroarea relativ a dorit a; parametrul tol poate cont ine si eroarea absolut a; n acest caz, tol = [errel, errabs]; nimicdaca acest parametru lipseste, valoarea implicit a este considerat a 106 , unde estimarearelativa = |estimareacurentaestimareaanterioara|/|estimareacurenta| < tol si estimareaabsoluta = |estimareacurenta estimareaanterioara| < tol Daca nu este ndeplinita aceast a condit ie, atunci aproximarea se raneaz a (adica se consider a mai multe puncte n diviziune) p an a c and este ndeplinit acest criteriu de oprire.

p1, p1... sunt parametri opt ionali si sunt dat i doar dac a funct ia de integrat depinde de ei nevf -parametru opt ional si reprezint a numarul de evaluari ale funct iei de integrat Exemplu. Fie funct ia denit a de function y=functiamea(x,a,b,c) aceasta este un exemplu de funct ie rational a care depinde de parametrii a,b,c y = (a + b. sin(x))./(4 + c. exp(x.2 ); Pentru a calcula integrala denit a de 0 la 1, cu a-1,b=-1,c=3, rulat i scriptul urmator. tol=le-5 le-3]; format long [q.nevf]=quad(functiamea,0,1,tol,[],1,-1,3) sau Q=quad(@functiamea,0,1,tol,[],1,-1,3) Exemplu. Se poate apela funct ia quad si astfel: >> F = @(x)(1+ exp(x) log (x))./x(x.3 2 x 5); >> Q = quad(F, 1, 2) Q=-1.208374865456 Obs Funct ia quad are la baz a metoda adaptiv-recursiv a Simpson, iar quadl pe cea de tip Lobattol. Obs Cele dou a funct ii Matlab se folosesc ns a c and funct ia de integrat este exprimat a sub forma unei funct ii analitice; daca aceasta este descris a prin valori numerice, se aproximeaz a mai int ai printr-o funct ie de interpolare si de-abia dupa aceea va integrat a numeric. Daca cumva integratul este dat prin valori numerice n noduri echidistante ale intervalului de integrare, se foloseste funct ia built-in trapz cu urmatoare sintaxa: z = trapz 9x, y ) sau z = traps(y ) unde x este un vector coloana care cont ine abscisele, iar y un vector coloan a sau o matrice cu acela si num ar de linii ca x si cont ine valorile funct iei corespunzatoare acelor abscise. z este scalar daca y este vector si este vector daca y este matrice, n care sunt stocate ariile calculate pentru ecare coloan a a lui y. Daca funct ia este apelat a doar cu argumentul y, atunci capetele intervalului de integrare sunt a=1,b=n (n=lungimea lui y), iar diviziunea este echidistant a de norma l. Obs. Daca cumva funct ia de integrat este n form a analitic a, atunci se creaz a vectorii x si y (ultimul prin evaluarea funct iei n punctele din vectorul x) si de-abia dup a aceea se apeleaz a funct ia trapz. Integrare cu niduri de tip Newton-Cotes Ex. Rezolvat i problema produs a la curs (cea de acoperire a unei cladiri cu bucati tabla/tigla ondulata) prin cele 3 metode prezentate la curs: metoda dreptunghiurilor, trapezelor si Simpson clasic a, pun and condit ia: a. sa se utilizeze acela si num ar de noduri(n=20, de exemplu) b.eroarea de aproximare sa e de 103 . Pentru ecare caz n parte, sa se compare timpul de execut ie cu cel pentru folosirea comenzi built-in quad, iar pentru punctul a., comparat i si valorile obt inute cu cea dat a de quad. Comentat i rezultatele. Daca se considera ca puncte n diviziune si capetele intervalului, atunci formulele se numesc de tip nchis; altfel se numesc de tip deschis. Nodurile xi = a + (i 1)h, h = 1, 2, , n, iarh = (b a)/(n 1).

Ponderile pot determinate si din condit ia ca formula de cuadratur a s a e exact a pentru monoamele 1, x2 , ..., xn1 function [s, p, x] = NeCo(functie, a, b, n, varargin) - aceasta funct ie aproximeaz a integrala denit a de la [a,b] a lui f folosind metoda Newton-Cotes cu n puncte - functie este numele funct iei n care e denit a functia f - n s este stocat a valoarea aproximativ a a integralei - x este vectorul absciselor, iar p este vectorul ponderilor if (n 2) error( Trebuie sa e cel put in 2 puncte!!) end - punctele echidistante sunt x = (0:n-1)/(n-1); - f este vectorul de termeni liberi; de fapt, vectorul de termeni liberi este (b-a)*f f = 1./(1:n); -V = Vander(x); -V = rot90(V); -se rezolv a sistemul Vp=f -p = V/f; -se reface solut ia prin nmultire cu b-a -p = (b-a)*p; -x = a + (b-a)*x; -x = x; -s este vectorul valorilor f (xi ) -s = feval(functie,x,varargin:); -aproximarea integralei este produsul scalar dintre vectorii p si s -s=prodscal(p,s) sau s=p*s sau s=dot(p,s) unde -function calcul=prodscal(x,y) -x si y trebuie s a e ambii vectori coloan a sau ambii vectori linie - calcul=0; -[n m]=size(x); -for i=1:n - calcul=calcul+x(i)*y(i); -end De remarcat c a aici se obt in metodele clasice si nu cele compozit (obt inute la curs). Exercit iu. Modicat i acum acest script a.i. diviziunea s a e a = x0 < x1 < < xn = b. In acest caz, xi=a+ih, i=0,,n, unde h=(b-a)/n. Exercit iu. Acum vom implementa varianta Simpson clasic a (vezi notit ele de la curs). -function s=simpson(a,b,n); -h=(b-a)/n; -s=0; -for i=1:n-1 - xi=s+i*h;xi1=s+(i+1)*h; xm=(xi+xi1)/2; - s=s+functie(xi)+4*functie(xm)+functie(xi1);

-end -s=h/6; Exercit iu. Iar acum vom implementa varianta Simpson compozit a. - function s=simpson(a,b,n) Acest script foloseste metoda Simpson compozit a (vezi curs) pentru aproximarea integralei din f(x) (introdus a de la tastatur a) pe intervalul [a, b], undea = x0 , iarb = xn adica s = (h/3) [f (a) + f (b) + 2f (x + par) + 4f (xi mpar)] n trebuie s a e numar par syms s x fu fprintf(1,Introduce ti funct ia de aproximat ( n variabila x)); -s = input( ,s); fu = inline(s,x); if rem(n,2) == 1 error(n trebuie s a e par); end h=(b-a)/n; sp ar = 0.0; si mpar = 0.0; m = n - 1; calculam punctele interioare for i = 1:m x = a + i * h; if rem(i,2) == 0 sp ar = sp ar + f u(x); else si mpar = si mpar + f u(x); end end s = (f u(a) + f u(b) + 2.0 sp ar + 4.0 si mpar) h/3.0; fprintf(Valoarea aproximativ a a integralei este 12.8f , s); end Exercit iu. Acum modicat i voi acest script a.i. 1. si funct ia de integrat s a e dat a ca parametru de intrare 2. acest script s a nu e funct ie si s a cear a s a e introduse de la tastatur a nu doar funct ia f, ci si capetele intervalului a, b, c at si num arul de puncte n. Exercit iu. Repetat i ultimele dou a exercit ii pentru metodele dreptunghiurilor si trapezelor. Integrare cu noduri de tip Gauss Aceste clase de metode cer ca urmatoarea relat ie s a e adevarat a pentru polinoame de grad maxim posibil

p(x)f (x)dx =
a i=1

ak f (xk )

unde p(x) este funct ia pondere. Alegerile clasice pentru aceste funct ii c at si intervalele de integrare sunt listate n tabelul de mai jos

1.1

Tabel
Functia pondere p(x) Intervalul de integrare Numele metodei

1 1/sqrt(1 x2 ) e x 2 ex

[-1,1] [-1,1] (0, ) ( )

Gauss-Legendre Gauss-Cevisev Gauss-Laguerre Gauss-Hermite

acinile Se stie c a toate ponderile sunt pozitive si ca nodurile diviziunii sunt rad unor clase de polinoame care sunt ortogonale n raport cu ponderile si intervalele date. Funct ia quad va calcula valoarea aproximativ a pentru integrale denite din tabelul de mai sus (formulele nu le vet i regasi in curs). function [s, w, x] = Gquad(fun, a, b, n, type, varargin) acest script calculeaz a valoarea aproximativ a prin metoda Gauss-Legendre (type = L) sau t Gauss-Cebisev (type = C) cu n (n 0) noduri. -a = -1 si b = 1. -s, w si x contin valoarea aproximativ a a integralei, vectorul de ponderi si vectorul de noduri -d = zeros(1,n-1); -if type == L Integrare cu noduri Lagrange -k = 1:n-1; -d = k./(2*k - 1).*sqrt((2*k - 1)./(2*k + 1)); -fc = 2; -J = diag(d,-1) + diag(d,1); -[u,v] = eig(J); -[x,j] = sort(diag(v)); w = (f c u(1, :).2 ) ; -w = w(j); -w = 0.5*(b - a)*w; -x = 0.5*((b - a)*x + a + b); else Integrare cu noduri Cebisev -x = cos((2*(1:n) - (2*n + 1))*pi/(2*n)); -w(1:n) = pi/n; -end -f = feval(fun,x,varargin:); -s = w*f(:); -w = w; Aproximarea integralelor multiple Aproximarea integralelor duble pe domeniul D = (x, y): x in [a, b], y in [c,d] se realizeaz a cu instruct iunea dblquad (fun, a, b, c, d, tol), unde tol are aceea si semnicat ie ca si n cazul 1. Fie funct ia f(x, y) denit a pe [0,1]x[0,1] prin function z = f unctie(x, y ); z = exp(3 y ). sin(x2 ) + cos(x y ); Comanda q= dblquad(functie, 0, 1, 0, 1) va a sa rezultatul a= -0.22176646183245 Similar, funct ia triplequad va aproxima integralele triple.

Aproximarea solutiilor ecuatiilor neliniare

1. Rezolvati ecuatia prezentata la curs la problema de dinamica populatiei prin cele 4 metode studiate si comentati rezultatele obtinute. Inainte de a incepe rezolvarea, reprezentati grac functia respectiva. 2. Ecuatia x3 + 4x2 10 = 0 are o solutie unica in [1,2] (justicati voi). Pentru a o aduce la form x=g(x) exista mai multe variante. a. x = g1 (x) = x x3 4x2 + 10 b. x = g2 (x) = (10/x 4x)1/2 c. x = g3 (x) = 0.5(10 x3 )1/2 d. x = g4 (x) = (10/(4 + x))1/2 e. x = g5 (x) = x (x3 + 4x2 10)/(3x2 + 8x) Pentru x0 = 1.5, intocmiti un tabel cu rezultatele obtinute dupa aplicarea principiului contractiei. Care din cele 5 variante este corecta? Justicati! Radacina este p=1.365230013. De cate iteratii a fost nevoie ca sa se obtina radacina exacta? Dar daca utilizam metoda bisectiei? 3. Repetati exercitiul 1 pentru ecuatia x4 +2x2 x 10 = 0 considerand x0 = 1. Se va considera eroare de aproximare de 102 . 4. Repetati exercitiul 1 pentru ecuatia x4 3x2 3 = 0 considerand x0 = 1. Se va considera o eroare de aproximare de 102 . 5. Aproximati sqrt(11) prin principiul contractiilor si comparati numarul de iteratii necesare pentru a avea o eroare mai mica decat 105 cu cel obtinut de metoda bisectiei pentru o aceeasi eroare. x0 va considerat de voi. 6. Aproximati solutiile reale ale ecuatiei x3 6x2 + 10x 4 = 0 prin x9 dat de metoda coardei .Vericati voi daca sunt indeplinite conditiile din teorema de convergenta. Care este eroarea obtinuta? Comparati apoi numarul de iteratii necesare pentru a obtine aceeasi eroare, dar de data aceasta prin metoda bisectiei. 7. Folositi metoda Newton/tangentei pentru a aproxima cu o eroare mai mica decat 105 solutiile ecuatiilor urmatoare: a. ex + 2x + 2cosx 6 = 0 pe [1,2] b. ln(x 1) + cos(x 1) = 0 pe [1,3,2]. c. sinx ex = 0 pe [0,1,3] si [6,7]. d. (x 2)2 lnx = 0 pe [1,2]. 8.Urmatoarele patru metode sunt folosite pentru a-l calcula pe 211/3 . a. xn = (20xn1 + 21/x2 n1 )/21 2 b. xn = xn1 (x3 n1 21)/(3xn1 ) 4 c. xn = xn1 (xn1 21xn 1)/(x2 n1 21) d. xn = (21/xn1 )1/2 Pentru x0 = 1 care din cele patru variante este cea mai buna ? Observatii: Scrieti scripturi/functii asemanatoare celor din Laboratorul 5pentru implementarea metodelor: coarda, tangenta, secanta si principiului contractiei. Pentru calculul derivatei, veti implementa o functie cu denitia/formula derivatei functiei respective. 9. Metoda secantei poate dedusa din metoda tangentei: xn = xn1 f (xn1 )/f (xn1 ); pentru a nu mai calcula derivata, aceasta se aproximeaza cu f (xn1 ) [f (xn1 ) f (xn2 )]/[xn1 xn2 ]. Scriptul ar putea arata astfel: -function rad=secanta(a,b,err,n)

-i=2; -fa=f(a); -fb=f(b); -while (i=n si abs(a-b)err) -x=b-fb*(b-a)/(fb-fa); -i=i+1; -a=b; -fa=fb; -b=x; -fb=f(x); -rad=x; -end Aproximati prin metoda tangentei si metoda secantei cu o eroare de 106 radacinile reale pe [-1,0] si [0,1] ale ecuatiei 230x4 + 18x3 + 9x2 221x 9 = 0 10. a. Valoarea economiilor bazate pe plati periodice este data de ecuatia de anuitate A = P/i[(1 + i)n 1] unde A reprezinta sunma din cont, P rata lunara , i dobanda pe perioada de timp (luna/an), iar n reprezinta numarul de perioade in care se fac depuneri. O persoana ar dori sa aiba dupa 20 de ani de munca depusi in cont 750 000. Stiind ca nu poate depune mai mult de 1500 pe luna, care trebuie sa e dobanda minimala oferita de banca astfel ca persona respectiva sa aiba suma dorita la sfarsitul celor 20 de ani? b. Aproximati (prin mai multe metode studiate) solutia ecuatiei care modeleaza cresterea populatiei, exemplu prezentat la curs. Comparati numarul de iteratii necesare ecarei metode pentru a obtine o eroare de 10 3 Denitie: Fie (xn ) un sir care converge catre x. Spunem ca aceasta convergenta este de ordinul l daca exista constantele pozitive l si m astfel ca lim |xn1 x| = m. |xn x|l

Pentru l=1, spunem ca avem convergenta liniara, iar pentru l=2 convergenta patratica. Este de dorit sa avem convergenta patratica, dar nu intotdeauna se intampla acest lucru. Dintre metodele studiate, doar metoda tangentei are convergente patratica (deci daca se aplica pe o aceeasi problema, metoda tangentei va converge cel mai rapid), restul avand o convergenta liniara. Totusi daca cumva radacina ecuatiei nu este simpla, ci multipla, chiar si la metoda tangentei vom avea o convergenta liniara. 11. Vericati ca pentru ecuatia ex x 1 = 0 care are pe 0 ca radacina dubla, metoda tangentei are si ea o convergenta liniara (luati x0 = 1). n 12. Aratati ca sirul xn = 102 indiferent de valoarea lui k. 13. Construiti voi un sir care sa aiba o convergenta cubica. 14. Pentru accelerarea convergentei se foloseste o metoda numita metoda lui Aitken. Aceasta consta in a transforma sirul (xn ) in (yn ) care va converge mai rapid la valoarea limitei lui (xn ). Transformarea este urmatoarea:

yn = xn

xn+1 xn )2 = m. xn + 2 2xn+1 + xn

Vericati acest lucru pentru sirul xn=cos(1/n). 2.

Aproximarea solut iilor sistemelor de ecuat ii neliniare.

Metoda Newton-Raphson Formula care se implementeaz a este xk+1 = xk (f (xk )1 f (xk )). O varianta pentru funct iile implementate (pentru un sistem particular) ar urm atoarea: -function y=funct(x); -y(1)=x(1)+x(2)-1; -y(2)=sin(x(1)+x(2))+x(2); -y=y(:) -function derivata=jacobiana(x) -derivata=[1 1; cos(x(1)+x(2)) 1+cos(x(1)+x(2))] -function [rad,nriter]=NeRa(f,j,x0,err1,err2,maxiter); Aceasta funct ie calculeaz a aproximat ia solut iei sistemului f(x)=0 x0 este aproximat ia init ial a, j este matricea Jacobi algoritmul se opre ste dac a norma aproximat iei curente esteerr1 sau eroarea relativ a a doua aproximat ii succesive este err2 sau daca s-au efectuat deja maxim trei iterat ii jc=rcond(feval(j,x0)); -detj=det(feval(j,x0)) vericam daca matricea Jacobi n x0 este inversabil a -if detj1e-10 error(Introducet i o alt a aproximat ie init ial a x0); -end -xanterior=x0(:); n loc s a scriem A1 x, scriem A/x pentru c a dac a y = A1 x, atunci x=Ay, de unde y=A/x -xcurent=xanterior-feval(j,xanterior)/feval(f,xanterior); -for k=1:maxiter -xanterior=xcurent; -nriter=k; -xcurent=xanterior-feval(j,xanterior)/feval(f,xanterior); ... se folosesc pentru a atent iona compilatorul MATLAB ca instruct iunea continu a si pe linia urmatoare -if(norm(feval(f,xcurent))err1)... -norm(xanterior-xcurent,inf)err2...

-(nriter==maxiter) -break -end -end -rad=xcurent; Voi nsa trebuie sa vericat i (ca la seminar) c a sunt ndeplinite condit iile din teorema de convergent a, pentru ca altfel rezultatele obt inute dupa rularea ultimului script s-ar putea s a nu convearg a catre solut ia sistemului. 1. Implementat i (folosindu-v a eventual de exercit iul anterior) funct ii pentru aproximarea solut iilor unui sistem prin principiul contract iilor.

Bibliograe
[1] sites.google.com/site/elapelican/ [2] http://www.latex-project.org/ [3] http://en.wikipedia.org/wiki/LaTeX

S-ar putea să vă placă și