Sunteți pe pagina 1din 5

CURS 4

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

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:
. ..

= f t , y, y, y,... y ( n 1) , t t0 ; t f ,
n
dt

dn y

(1)

,
.

y ( t0 ) = y10 , y ( t0 ) = y20 ,..., y ( n 1) ( t0 ) = yn0


se poate opta pentru alegerea noilor variabile astfel:
(2)

y (i 1) (t ) = zi (t ), i = 1, n ,

obinndu-se un sistem de ecuaii difereniale n variabila z:

CURS 4

.
z1 = z2
.
,
z 2 = z3
...
.
z n = f ( t , z1, z2 ,..., zn )

(3)

cu condiia iniial z ( t0 ) = z10 = y10

... zn0 = yn0 .

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, z i , i valorile lor nederivate, zi ;
2) intervalul de integrare dat prin capetele acestuia, t0 i t f ;
T

3) condiiile iniiale, sub forma unui vector de dimensiune n, y0 = y10 ... yn0 ;

4) pasul de integrare, notat cu h n toate metodele de integrare se consider o diviziune de


ordinul m a intervalului t0 ; t f (o mprire a acestui interval n intervale de aceeai lungime, h), n ale
crei puncte, tk = t0 + k h, k {0,..., n} , se calculeaz valorile soluiei numerice a ecuaiei, notate cu
yk , care sunt aproximri ale valorilor exacte, y ( tk ) ; 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 f z pentru orice moment de timp, t, i
care va fi apelat la fiecare pas de integrare, tk , de programul unde este implementat metoda de
integrare numeric;
6) alte date care se constituie ca parametri constani n funcia f z .
Metoda Taylor de ordinul 1, cunoscut i ca metoda Euler sau metoda Runge-Kutta de ordinul 1:

yk +1 = yk + h f ( tk , yk ) ,

(4)

Exemplu: Sa se scrie un program Matlab care sa realizeze integrarea numerica a sistemului de ecuatii
diferentiale:
x1 = x2
1
( 25 5 x2 25 x1 )
2
Cerinte: - Se va utiliza metoda de integrare numerica Runge-Kutta de ordinal 1.
- Se vor afisa grafic, in aceeasi figura, rezultatele obtinute prin integrare

x2 =

CURS 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

Teme:
1) Se vor rula toate instruciunile i exemplele din cadrul cursului.
2. S se calculeze funcia:
2 x + 3, daca x [10, 2]
f ( x) =
pentru toate valorile ntregi pentru care este definit.
2
2 x 1, daca x (2, 20]
3. S se integreze sistemul de ecuaii (folosind ambele metode prezentate n cadrul cursului):
x1 = 2 x1 + 3x2 4 x3
x2 = x1 + 2 x2
x3 = 2 x1 + x2 + 2