CURS_4.pdf
-
Upload
momescu-maryus -
Category
Documents
-
view
214 -
download
2
Transcript of CURS_4.pdf
-
CURS 4
1
CURS 4
Structura programelor MATLAB
MATLAB-ul lucreaz fie n modul linie de comand, situaie n care fiecare linie este prelucrat imediat i rezultatele sunt afiate, fie cu programe coninute n fiiere. Aceste dou moduri formeaz mpreun un mediu" de programare.
Fiierele ce conin instruciuni MATLAB se numesc fisiere-M (deoarece au extensia ,,.m) i sunt programe MATLAB. Un fiier-M const dintr-o succesiune de instruciuni MATLAB, cu posibilitatea apelrii altor fisiere-M precum i a apelrii recursive.
Un program MATLAB poate fi scris sub forma fiierelor script sau a fiierelor function. Ambele tipuri de fiiere sunt scrise n format ASCII, iar algoritmul care a fost implementat poate fi urmrit cu foarte mult uurin, dac se cunosc conveniile i sintaxa MATLAB. Aceste tipuri de fiiere, obligatoriu cu extensia *.m, permit crearea unor funcii noi care le pot completa pe cele deja existente. Prin aceast facilitate, MATLAB-ul poate fi extins la aplicaii specifice utilizatorului, care are posibilitatea s scrie noi proceduri.
Fiierele script
Un fiier script este un fiier extern care conine o secven de comenzi MATLAB. Prin apelarea numelui fiierului, se execut secvena MATLAB coninut n acesta. Dup execuia complet a unui fiier script, variabilele cu care acesta a operat rmn n zona de memorie a aplicaiei (workspace). Aceste fiiere nu permit integrarea n programe mari, realizate pe principiul modularizrii. Fiierele script sunt folosite pentru rezolvarea unor probleme care cer comenzi succesive att de lungi, nct ar putea deveni greoaie pentru lucrul n mod interactiv, adic n modul linie de comand.
Fiierele funcie
Dac prima linie a fisierului-M conine cuvntul function, fiierul respectiv este declarat ca fiier funcie. O funcie difer de un ,script prin faptul c poate lucra cu argumente. Variabilele definite i manipulate n interiorul fiierului funcie sunt localizate la nivelul acesteia. Prin urmare, la terminarea execuiei unei funcii, n memoria calculatorului nu rmn dect variabilele de ieire ale acesteia.
Fiierele funcie sunt utilizate pentru extinderea MATLAB-ului, adic pentru crearea unor noi funcii MATLAB. Forma general a primei linii a unui fiier funcie este:
function [param_ieire]= nume_funcie(param_intrare)
unde:
function - este cuvnt cheie care declar fiierul ca fiier funcie (obligatoriu); nume_funcie - numele funciei, adic numele sub care se salveaz fiierul, fr extensie. Nu poate fi identic cu cel al unui fisier-M preexistent.
param_ieire - parametri de ieire trebuie separai cu virgul i cuprini ntre paranteze drepte. Dac funcia nu are parametri de ieire, parantezele drepte i semnul egal nu mai au sens.
-
CURS 4
2
param_intrare - parametri de intrare trebuie separai cu virgul i cuprini ntre paranteze rotunde. Dac funcia nu are parametri de intrare, parantezele rotunde nu mai au sens.
Aceste fiiere pot fi adugate ca funcii noi n structura MATLAB. Comenzile i funciile care sunt utilizate de noua funcie sunt nregistrate ntr-un fiier cu extensia .m. Prima linie a fiierului trebuie s conin definiia sintactic a noii funcii. De exemplu, un fiier funcie numit medie.m", care calculeaz media aritmetic, poate avea urmtoarea form:
Exemple de implementat la laborator (utilizarea funciilor n MATLAB)
1. calculul mediei aritmetice a n numere introduse ca un vector coloan
function m=medie(x) n=length(x); s=0;
for i=1:n
s=s+x(i); end
m=s/n;
Apelai funcia n linia de comand dup ce ai introdus un vector coloan:
a=[1 2 3 4 5]
med=medie(a)
Integrarea sistemelor de ecuaii difereniale
Pentru o ecuaie diferenial de ordin n>1, dat sub forma:
(1) ( ) ( ) ( )0 0 0
. .. ( 1)0
. ( 1)0 1 0 2 0
d, , , ,... , ; ,
d
, ,...,
nn fn
nn
y f t y y y y t t tt
y t y y t y y t y
=
= = =
,
se poate opta pentru alegerea noilor variabile astfel:
(2) ( 1) ( ) ( ), 1,i iy t z t i n = = , obinndu-se un sistem de ecuaii difereniale n variabila z:
-
CURS 4
3
(3)
( )
.
1 2.
2 3
.
1 2
...
, , ,...,n n
z z
z z
z f t z z z
=
=
=
,
cu condiia iniial ( ) 0 0 0 00 1 1 ...T
n nz t z y z y = = = .
Elemente necesare pentru integrarea numeric a EDO: Aceste elemente trebuie vzute drept date de intrare care sunt furnizate unei metode numerice de
integrare. Ele sunt listate mai jos: 1) Ecuaia diferenial de rezolvat trebuie mai nti adus la forma (3) printr-o schimbare de
variabil adecvat; rezult astfel un sistem de ecuaii difereniale de dimensiune egal cu ordinul
ecuaiei, n, care descrie legtura dintre derivatele celor n noi variabile, .
iz , i valorile lor nederivate, iz ; 2) intervalul de integrare dat prin capetele acestuia, 0t i ft ;
3) condiiile iniiale, sub forma unui vector de dimensiune n, 0 00 1 ...
Tny y y = ;
4) pasul de integrare, notat cu h n toate metodele de integrare se consider o diviziune de ordinul m a intervalului 0; ft t (o mprire a acestui interval n intervale de aceeai lungime, h), n ale crei puncte, { }0 , 0,...,kt t k h k n= + , se calculeaz valorile soluiei numerice a ecuaiei, notate cu
ky , care sunt aproximri ale valorilor exacte, ( )ky t ; este intuitiv evident c soluia numeric se apropie cu att mai mult de soluia exact cu ct diviziunea este mai fin (pasul de integrare, h, este mai mic);
5) un subprogram (funcie) care calculeaz valoarea funciei zf pentru orice moment de timp, t, i care va fi apelat la fiecare pas de integrare, kt , de programul unde este implementat metoda de integrare numeric;
6) alte date care se constituie ca parametri constani n funcia zf .
Metoda Taylor de ordinul 1, cunoscut i ca metoda Euler sau metoda Runge-Kutta de ordinul 1:
(4) ( )1 ,k k k ky y h f t y+ = + ,
Exemplu: Sa se scrie un program Matlab care sa realizeze integrarea numerica a sistemului de ecuatii diferentiale:
( )1 2
2 2 11 25 5 252
x x
x x x
=
=
Cerinte: - Se va utiliza metoda de integrare numerica Runge-Kutta de ordinal 1. - Se vor afisa grafic, in aceeasi figura, rezultatele obtinute prin integrare
-
CURS 4
4
Rezolvare: % program principal pentru integrare numerica clear all;close all; x=[7 10]; h=0.1; t0=0; tf=10; t(1)=0; i=1; for m=0.1:h:tf, x(i+1,:)=x(i,:)+h* func(t,x(i,:)); t(i+1)=m; i=i+1; end subplot(211); hold on; plot(t,x(:,1),'k'); subplot(212); hold on; plot(t,x(:,2),'k');
% implementare sistem de ecuatii diferentiale function xd=func(t,x) xd(1)=x(2);
xd(2)=1/2*(25-5*x(2)-25*x(1));
n Matlab exist metode de integrare implementate (metode ODE). Una din metodele Matlab cele mai utilizate este ode45. Rezolvare:
% program principal pentru integrare numerica clear all;close all; x0=[7 10]; t0=0; tf=10; [t,x]=ode45('func',[t0 tf],x0); subplot(211); hold on; plot(t,x(:,1),'k'); subplot(212); hold on; plot(t,x(:,2),'k');
% implementare sistem de ecuatii diferentiale function xd=func(t,x) xd(1)=x(2); xd(2)=1/2*(25-5*x(2)-25*x(1)); xd=xd';
-
CURS 4
5
Teme: 1) Se vor rula toate instruciunile i exemplele din cadrul cursului. 2. S se calculeze funcia:
( ) 22 3, [ 10, 2]2 1, (2,20]x daca xf x
x daca x+
=
pentru toate valorile ntregi pentru care este definit.
3. S se integreze sistemul de ecuaii (folosind ambele metode prezentate n cadrul cursului): 1 1 2 3
2 1 2
3 1 2
2 3 42
2 2
x x x x
x x x
x x x
= +
= +
= + +