0% au considerat acest document util (0 voturi)
165 vizualizări4 pagini

Laborator MATLAB NR 07 (Implementarea Metodelor Neliniare)

Documentul prezintă rezolvarea unor probleme de calcul numeric utilizând MATLAB. Sunt tratate teme precum determinarea minimului unei funcții, calculul zerourilor, integrarea numerică, derivarea numerică și integrarea numerică a ecuațiilor diferențiale.

Încărcat de

Paunescu Mihai
Drepturi de autor
© Attribution Non-Commercial (BY-NC)
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd
0% au considerat acest document util (0 voturi)
165 vizualizări4 pagini

Laborator MATLAB NR 07 (Implementarea Metodelor Neliniare)

Documentul prezintă rezolvarea unor probleme de calcul numeric utilizând MATLAB. Sunt tratate teme precum determinarea minimului unei funcții, calculul zerourilor, integrarea numerică, derivarea numerică și integrarea numerică a ecuațiilor diferențiale.

Încărcat de

Paunescu Mihai
Drepturi de autor
© Attribution Non-Commercial (BY-NC)
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd
Sunteți pe pagina 1/ 4

LABORATOR NR. 7.

Determinarea minimului unei func ii


Exemplul 7.1. S se g seasc minimul func iei:
f ( x) = x 4 5x 2 + 4

n intervalul [0, 3]. Se creeaz fi"ierul func ie funct2.m cu urm torul con inut:
% Linia de declaratie a functiei function y=funct2(x) % Incarcarea vectorului cu coeficientii polinomului c=[1,0,-5,0,4]; % Evaluarea polinomului pentru valoarea data a lui x y=polyval(c,x);

Programul pentru rezolvarea acestei probleme este prezentat n continuare:


clear; % Stergerea variabilelor din spatiul de lucru

%Gasirea valorii pentru care functia este minima xmin=fmin('funct2',0,3); % Generarea unui vector cu pasul 0.1 avand % elementele cuprinse intre limitele date x=0:0.1:3; % Determinarea valorilor functiei in punctele vectorului x y=funct2(x); % Reprezentarea cu o linie continua rosie de grosimea 1.5 a variatiei % functiei pe intervalul dat plot(x,y,'r-','LineWidth',[1.5]) % Setarea pe memorare a figurii curente hold on % Calcularea minimului functiei ymin=funct2(xmin); % Marcarea cu semnul "+" galben de dimensiune 16 a minimului functiei plot(xmin,ymin,'y+','MarkerSize',[16]) % Afisarea rezultatelor disp('Functia are valoarea minima egala cu:'); disp(ymin); disp('in punctul:'); disp(xmin);

Calculul zerourilor unei func ii


Exemplul 7.2. S se g seasc zeroul cel mai apropiat de valoarea 0,5 a func iei date n exemplul 7.1. Problema se poate rezolva cu ajutorul unei singure linii de program MATLAB:
x0=fzero('funct2',0.5)

Rezultatul ob inut, 1, poate fi verificat n figura ob inut anterior, unde este reprezentat varia ia func iei date.

Integrarea numeric
Exemplul 7.3. S se aproximeze numeric integrala:
2 1

1 dx x

cu ajutorul celor trei func ii MATLAB destinate acestui scop (quad, quad8 "i trapz). n fiecare caz s se calculeze eroarea relativ fa de solu ia exact , egal cu ln 2 . S se g seasc metoda care rezolv aceast problem cu eroarea relativ cea mai mic . Func ia de integrat este nc rcat n fi"ierul func ie funcint.m:
function y=funcint(x) % Functia de integrat y=1./x;

n continuare se prezint programul scris pentru rezolvarea acestei probleme:


clear; % Stergerea tuturor variabilelor din spatiul de lucru

% Setarea formatului de scriere a randurilor format compact % Incarcarea vectorului x cu elementele cuprinse % intre limitele de integrare x=1:1e-2:2; % Determinarea valorilor functiei de integrat in aceste puncte y=funcint(x); % Calcularea solutiei exacte sol_exact=log(2); % Calcularea aproximativa a integralei cu ajutorul metodei lui Simpson I_S=quad('funcint',1,2); % Calcularea erorii relative la aceasta metoda eroare_S=abs(I_S-sol_exact)/sol_exact*100; % Afisarea rezultatelor % (comanda num2str converteste un numar intr-un sir de caractere) disp(['Solutia exacta a integralei= ',num2str(sol_exact)]); disp(' '); disp('Solutia aproximativa a integralei'); disp(['prin metoda lui Simpson=', num2str(I_S)]); disp(['Eroarea relativa= ',num2str(eroare_S),' %']); % Calcularea aproximativa a integralei cu ajutorul metodei lui Newton-Cotes I_NC=quad8('funcint',1,2); % Calcularea erorii relative la aceasta metoda eroare_NC=abs(I_NC-sol_exact)/sol_exact*100; % Afisarea rezultatelor disp(' '); disp('Solutia aproximativa a integralei '); disp(['(prin metoda lui Newton-Cotes)=', num2str(I_NC)]); disp(['Eroarea relativa= ',num2str(eroare_NC),' %']); % Calcularea aproximativa a integralei cu ajutorul metodei trapezelor I_t=trapz(x,y); % Calcularea erorii relative la aceasta metoda eroare_t=abs(I_t-sol_exact)/sol_exact*100; % Afisarea rezultatelor disp(' '); disp('Solutia aproximativa a integralei '); disp(['(prin metoda trapezelor)=', num2str(I_t)]); disp(['Eroarea relativa= ',num2str(eroare_t),' %']); % Generarea unui vector cu erorile obtinute la diferite metode eror=[eroare_S, eroare_NC,eroare_t]; % Determinarea erorii minime (val_eroare contine valoarea % minima din vectorul eror % - nr_eroare contine numarul elementului minim din vectorul eror

[val_eroare, nr_eroare]=min(eror); % Afisarea erorii minime si a metodei cu ajutorul careia s-a obtinut disp(' '); disp(['Eroarea cea mai mica de ',num2str(val_eroare)]); if nr_eroare==1 disp('s-a obtinut cu ajutorul metodei Simpson'); end; if nr_eroare==2 disp('s-a obtinut cu ajutorul metodei Newton-Cotes'); end; if nr_eroare==3 disp('s-a obtinut cu ajutorul metodei trapezelor'); end;

Derivarea numeric
Exemplul 7.4. S se calculeze derivata func iei:
f ( x) = x 4 5 x 2 + 4 pe intervalul [-3, 3] utiliznd aproximarea cu diferen e progresive. S se reprezinte ntr-o singur figur func ia dat (cu o linie punctat verde) "i derivata ei (cu o linie continu mov). De asemenea s se marcheze cu asteriscuri galbene maximele "i minimele locale ale func iei date. Pentru calculul derivatei se va folosi func ia diff. Punctele critice ale func iei date se determin urm rind schimbarea de semn a derivatei. Pentru aceasta se calculeaz elementele vectorului produs, con innd produsul diferen elor de la un pas "i de la pasul anterior. n vectorul minmax se ncarc acele elemente ale vectorului xd, pentru care elementele vectorului produs sunt negative. Programul destinat rezolv rii acestei probleme este dat n continuare.
clear; % Stergerea tuturor variabilelor din spatiul de lucru

% Incarcarea vetorului x cu elementele cuprinse intre limitele date x=-3:0.1:3; % Incarcarea vectorului y cu valorile functiei in punctele definite y=funct2(x); % Calcularea aproximativa a derivatei df=diff(y)./diff(x); % Reprezentarea grafica a functiei de derivat (cu o linie punctata verde) plot(x,y,'g:') % Mentinerea reprezentarii grafice curente hold on % Incarcarea vectorului xd cu n-1 elemente din vectorul x xd=x(2:length(x)); % Reprezentarea grafica a derivatei (cu o linie continua mov) plot(xd,df,'m-') % Calcularea elementelor vectorului produs produs=df(1:length(df)-1).*df(2:length(df)); % Incarcarea punctelor critice in vectorul minmax minmax=xd(find(produs<0)); % Calcularea valorii functiei initiale in punctele critice fminmax=y(find(produs<0)+1); % Reprezentarea grafica a maximelor si minimelor % locale ale functiei initiale (cu asteriscuri galbene) plot(minmax,fminmax,'y*') % Plasarea unui caroiaj asupra figurii grid on % Etichetarea celor doua curbe reprezentate gtext('Functia'); gtext('Derivata');

Integrarea numeric a ecua iilor diferen iale


Exemplul 7.5. S se integreze ecua ia diferen ial :
y = 12 x 2 10

pe intervalul [0, 3] cu condi iile ini iale: y (0) = 4, y (0) = 0 Ecua ia diferen ial dat se transform n urm torul sistem de ecua ii diferen iale de ordinul nti:
t1 = y = 12 x 2 10 t 2 = t1 Fi"ierul de tip M care descrie acest sistem de ecua ii diferen iale (fsist.m) are urm torul con inut:
function tp=fsist(x,y) tp(1)=12.*x.^2-10; tp(2)=y(1);

n continuare se d sursa programului MATLAB destinat rezolv rii acestei probleme. Condi iile ini iale sunt stocate n vectorul y0. Limitele de integrare x0 "i xf sunt specificate la nceputul programului.
clear; x0=0; xf=3; % Stergerea tuturor variabilelor din spatiul de lucru % Precizarea limitelor de integrare

% Specificarea conditiilor initiale y0=[0 4]; % Apelarea functiei destinata integrarii ecuatiei diferentiale % - in x si y sunt stocate solutiile [x y]=ode45('fsist',x0,xf,y0); % Reprezentarea cu o linie punctata verde a variatiei derivatei % de ordinul I., memorata in prima coloana a vectorului solutie y plot(x,y(:,1),'g:'); hold on; % Reprezentarea in aceeasi figura cu o linie contunua albastra % a variatiei solutiei, memorata in a doua coloana a vectorului solutie y plot(x,y(:,2),'b-'); % Plasarea unei legende legend('-','Solutia',':','Derivata de ordinul I.')

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