Laboraratorul 1. INTRODUCERE ÎN MATLAB - civile.utcb.rocivile.utcb.ro/cmat/cursrt/ms_l1.pdf ·...

10
Laboraratorul 1. INTRODUCERE ÎN MATLAB Bibliografie: 1. M. Ghinea, V. Fireţeanu, Matlab: Calcul numeric- Grafică-Aplicaţii, ed. Teora, Bucureşti, 1998. 2. I. Iatan , Îndrumător de laborator în Matlab 7.0, Ed. Conspress, Bucureşti, 2009. Scopuri: 1) Aplicarea Matlab-ului in calcule matematice fundamentale. 2) Calcul numeric în Matlab cu aplicaţii în Algebră. 3) Rezolvarea in Matlab a ecuaţiilor si sistemelor de ecuatii diferenţiale. 4) Notiunea fisier in Matlab: creare, scriere, adaugare de date, citire. 5) Grafica in Matlab: reprezentari grafice 2D, reprezentarea grafica a histogramelor, reprezentari grafice 3D. MATLAB-ul este un pachet de programe de o performanţă remarcabilă care are o vastă aplicabilitate atât în domeniul ştiinţei cât al ingineriei. Pentru lansarea în execuţie a programului se acţionează dublu click pe pictograma Matlab de pe Desktop sau se selectează Start All Programs Matlab. APLICAŢII ÎN CALCULE MATEMATICE FUNDAMENTALE 1) Să se calculeze expresiile următoare: a) 3 3 2 5 17 2 5 17 >> (17+5*sqrt(2))^(1/3)+(17-5*sqrt(2))^(1/3) ans = 5.0367 b) 3 3 1 1 1 1 i i i i >> ((1+i)/(1-i))^3-((1-i)/(1+i))^3 ans = 0 - 2.0000i c) 5 3 log x B , pentru 7 x ; Folosim formula de schimbare a bazei logaritmice

Transcript of Laboraratorul 1. INTRODUCERE ÎN MATLAB - civile.utcb.rocivile.utcb.ro/cmat/cursrt/ms_l1.pdf ·...

Page 1: Laboraratorul 1. INTRODUCERE ÎN MATLAB - civile.utcb.rocivile.utcb.ro/cmat/cursrt/ms_l1.pdf · Laboraratorul 1. INTRODUCERE ÎN MATLAB Bibliografie: 1. M. Ghinea, V. Fireţeanu,

Laboraratorul 1. INTRODUCERE ÎN MATLAB

Bibliografie:

1. M. Ghinea, V. Fireţeanu, Matlab: Calcul numeric- Grafică-Aplicaţii, ed. Teora,

Bucureşti, 1998.

2. I. Iatan , Îndrumător de laborator în Matlab 7.0, Ed. Conspress, Bucureşti, 2009.

Scopuri:

1) Aplicarea Matlab-ului in calcule matematice fundamentale.

2) Calcul numeric în Matlab cu aplicaţii în Algebră.

3) Rezolvarea in Matlab a ecuaţiilor si sistemelor de ecuatii diferenţiale.

4) Notiunea fisier in Matlab: creare, scriere, adaugare de date, citire.

5) Grafica in Matlab: reprezentari grafice 2D, reprezentarea grafica a histogramelor,

reprezentari grafice 3D.

MATLAB-ul este un pachet de programe de o performanţă remarcabilă care are o vastă

aplicabilitate atât în domeniul ştiinţei cât al ingineriei.

Pentru lansarea în execuţie a programului se acţionează dublu click pe pictograma

Matlab de pe Desktop sau se selectează StartAll Programs Matlab.

APLICAŢII ÎN CALCULE MATEMATICE FUNDAMENTALE

1) Să se calculeze expresiile următoare:

a) 33 25172517

>> (17+5*sqrt(2))^(1/3)+(17-5*sqrt(2))^(1/3)

ans =

5.0367

b)

33

1

1

1

1

i

i

i

i

>> ((1+i)/(1-i))^3-((1-i)/(1+i))^3

ans =

0 - 2.0000i

c) 53log xB , pentru 7x ;

Folosim formula de schimbare a bazei logaritmice

Page 2: Laboraratorul 1. INTRODUCERE ÎN MATLAB - civile.utcb.rocivile.utcb.ro/cmat/cursrt/ms_l1.pdf · Laboraratorul 1. INTRODUCERE ÎN MATLAB Bibliografie: 1. M. Ghinea, V. Fireţeanu,

2

a

xx

b

b

alog

loglog .

>> x=7;

>> log(x^(1/5))/log(3)

ans =

0.3542

d) xxxxC 7cos5cos3coscos 4444 , pentru 8

x ;

>> x=pi/8;

>> C=cos(x)^4+cos(3*x)^4+cos(5*x)^4+cos(7*x)^4

C =

1.5000

2) Să se sorteze în ordine descrescătoare elementele vectorului

7820176.0 x , cu precizarea indicelui fiecărui element.

>> x=[-0.76 -1 20 8 -7]

x =

-0.7600 -1.0000 20.0000 8.0000 -7.0000

>> [y,I]=sort(x,’descend’)

y =

20.0000 8.0000 -0.7600 -1.0000 -7.0000

I =

3 4 1 2 5

3) Se consideră matricea

34.71278

78547.5

79.007.4

39971

A .

Se cere:

a) Transformaţi matricea A într-un vector coloană b ;

>> A=[1 -7 99 3;4.7 0 0.9 -7;5.7 4 5 78;-78 12 -7.4 3];

>> b=A(:);

Page 3: Laboraratorul 1. INTRODUCERE ÎN MATLAB - civile.utcb.rocivile.utcb.ro/cmat/cursrt/ms_l1.pdf · Laboraratorul 1. INTRODUCERE ÎN MATLAB Bibliografie: 1. M. Ghinea, V. Fireţeanu,

3

b) Să se extragă submatricea D de dimensiune 23x , ce constă din elementele situate pe

ultimele trei linii şi primele două coloane ale matricei A .

>> D=A(2:4,1:2)

D =

4.7000 0

5.7000 4.0000

-78.0000 12.0000

CALCUL NUMERIC ÎN MATLAB CU APLICAŢII ÎN ALGEBRĂ

4) Rezolvaţi ecuaţiile neliniare:

a) arctgx1 x

>> f=@ (x) 1+x-atan(x);

>> x=fzero(f,[-3 3])

x =

-2.1323

>> f(x)

ans =

2.2204e-016

b) 0cos2 xx

>> f=@ (x) x.^2-cos(pi*x);

>> s=fsolve(f,[-0.5,0.5])

s =

-0.4384 0.4384

>> f(s)

ans =

1.0e-011 *

0.962 0.1001

5) Rezolvaţi sistemele neliniare:

a)

026

036

33

33

yyx

xyx (considerând ca punct iniţial 5.0,5.0 )

Pasul 1. Definim funcţia vectorială f .

Page 4: Laboraratorul 1. INTRODUCERE ÎN MATLAB - civile.utcb.rocivile.utcb.ro/cmat/cursrt/ms_l1.pdf · Laboraratorul 1. INTRODUCERE ÎN MATLAB Bibliografie: 1. M. Ghinea, V. Fireţeanu,

4

>>f=@(x) [x(1)^3+x(2)^3-6*x(1)+3;

x(1)^3-x(2)^3-6*x(2)+2];

Pasul 2. Rezolvăm sistemul neliniar.

>> s = fsolve(f,[0.5 0.5])

s =

0.53237037226762 0.35125744755245

Pasul 3. Efectuăm verificarea soluţiei pe care am obţinut-o.

>> f(s)

ans =

1.0e-009 *

0.29623858921468

0.19358559200100

b)

0

1

9

2

222

zyx

xyz

zyx

(considerând ca punct iniţial 6.1,2.0,5.2 ).

>> f=@(x) [x(1)^2+x(2)^2+x(3)^2-9;x(1)*x(2)*x(3)-1;x(1)+x(2)-x(3)^2]

f =

@(x) [x(1)^2+x(2)^2+x(3)^2-9;x(1)*x(2)*x(3)-1;x(1)+x(2)-x(3)^2]

>> s = fsolve(f,[2.5 0.2 1.6])

s =

2.49137569683072 0.24274587875742 1.65351793930053

>> f(s)

ans =

1.0e-011 *

0.11226575225010

0.13493650641294

-0.05244693568329

REZOLVAREA IN MATLAB A ECUAŢIILOR SI SISTEMELOR DE ECUATII DIFERENŢIALE

6) Să se integreze ecuaţia de tip Riccati

xxyxyyx 212 22 , 0x

>> y=dsolve('x*Dy=y^2-(2*x+1)*y+x^2+2*x','x')

Page 5: Laboraratorul 1. INTRODUCERE ÎN MATLAB - civile.utcb.rocivile.utcb.ro/cmat/cursrt/ms_l1.pdf · Laboraratorul 1. INTRODUCERE ÎN MATLAB Bibliografie: 1. M. Ghinea, V. Fireţeanu,

5

y =

(-x-1+x^2*C1)/(-1+x*C1)

7) Să se integereze ecuaţia diferenţiala Euler:

xyyx 1

>> y=dsolve('x*D3y+D2y=1+x','x')

y =

1/12*x^3+x*log(x)*C1-C1*x+1/2*x^2+C2*x+C3

8) Să se rezolve următorul sistem de ecuaţii diferenţiale liniare neomogen:

33

23

213

2312

2321

xyyy

xyyy

xxyyy

>> [y1,y2,y3]=dsolve('Dy1=y2+y3-x-x^2','Dy2=3*y1+y3-2-x^2','Dy3=3*y1+y2+x-3','x')

y1 =

1+2/3*C2*exp(3*x)-C3*exp(-2*x)

y2 =

x+exp(-x)*C1+C2*exp(3*x)+C3*exp(-2*x)

y3 =

-exp(-x)*C1+C2*exp(3*x)+C3*exp(-2*x)+x^2

NOTIUNEA FISIER IN MATLAB

9) Construiti un program in Matlab, cu ajutorul caruia:

- sa se creeze un fisier in care vor fi salvate doua matrice, una de tipul ( ) si

cealalta ( ) ;

- sa se citeasca continutul fisierului in alte doua matrice.

Se va construi un script in Matlab cu numele fisier.m, avand continutul:

W=[1 6; 7 8]; w=[-2 3 5; 6 7 8];

fid=fopen('pond1fb','w');

fprintf(fid,'%f\t',W);

fprintf(fid,'%f\t',w);

fclose(fid);

fid=fopen('pond1fb','r');

Page 6: Laboraratorul 1. INTRODUCERE ÎN MATLAB - civile.utcb.rocivile.utcb.ro/cmat/cursrt/ms_l1.pdf · Laboraratorul 1. INTRODUCERE ÎN MATLAB Bibliografie: 1. M. Ghinea, V. Fireţeanu,

6

a=fscanf(fid,'%f\t',[2,3]);

b=fscanf(fid,'%f\t',[2,2]);

fclose(fid);

In linia de comanda se scrie

>>fisier

GRAFICA IN MATLAB

10) Reprezentati grafic in Matlab printr-o histograma, notele obtinuite de cei 50 de studenti

inscrisi la cursul de Statistica. Notele se vor citi dintr-un fisier text.

Se construieste un script in Matlab, cu denumirea fis.m, ce contine:

fid=fopen('pond.txt','r');

u=fscanf(fid,'%f\t',[1,50]);

fclose(fid);

In linia de comanda scriem:

>> fis

>> for j=1:max(u)

v=find(u(1:length(u))==j);

n(j)=length(v);

end

>> sum(n)

ans =

50

>> v=1:10;

>> hist(u,v)

>> grid on

Page 7: Laboraratorul 1. INTRODUCERE ÎN MATLAB - civile.utcb.rocivile.utcb.ro/cmat/cursrt/ms_l1.pdf · Laboraratorul 1. INTRODUCERE ÎN MATLAB Bibliografie: 1. M. Ghinea, V. Fireţeanu,

7

11) Reprezentaţi grafic următoarele funcţii în plan:

21

2arcsin)

x

xxfa

, 5,5x

Pasul 1. Se fixează intervalul pe care va fi reprezentată funcţia şi un anumit pas.

>>x=-5:0.1:5;

Pasul 2. Definim funcţia ce urmează să fie reprezentată.

>> f=@(x) asin(2*x./(1+x.^2));

Pasul 3. Realizăm reprezentarea grafică.

>> plot(f(x),'m','LineWidth',4)

0 20 40 60 80 100 120

-2

-1.5

-1

-0.5

0

0.5

1

1.5

2

Page 8: Laboraratorul 1. INTRODUCERE ÎN MATLAB - civile.utcb.rocivile.utcb.ro/cmat/cursrt/ms_l1.pdf · Laboraratorul 1. INTRODUCERE ÎN MATLAB Bibliografie: 1. M. Ghinea, V. Fireţeanu,

8

xxfb arcsin) , xxg arccos , 1,1x

>>x=-1:0.01:1;

>> f=@(x) asin(x);

>> g=@(x) acos(x);

>> plot(x,f(x),'r',x,g(x),'b','LineWidth',3)

12) Reprezentati arcul de parabola 2: xyAB , care uneste punctele 1,1A si 4,2B .

Secventa Matlab urmatoare permite reprezentarea arcului AB .

>> x=-4:.1:4;

>> y=x.^2;

>> plot(x,y,1,1,'or',2,4,'or')

13) Scrieţi un fişier “function” în Matlab pentru a reprezenta grafic funcţia

-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1-2

-1

0

1

2

3

4

-4 -3 -2 -1 0 1 2 3 40

2

4

6

8

10

12

14

16

A(1,1)A(1,1)A(1,1)A(1,1)

B(2,4)

Page 9: Laboraratorul 1. INTRODUCERE ÎN MATLAB - civile.utcb.rocivile.utcb.ro/cmat/cursrt/ms_l1.pdf · Laboraratorul 1. INTRODUCERE ÎN MATLAB Bibliografie: 1. M. Ghinea, V. Fireţeanu,

9

0,0

0,1

cos

x

xx

xxf , 5.0,5.0x , 01.0h

Se selectează succesiv File->New->M-file şi se scriu următoarele instructiuni

function r=f(x)

if x~=0

r=x*cos(1/x);

elseif x==0

r=0;

end

end

Se salvează fişierul cu f.m apoi în linia de comanda se scrie:

>> x=-0.5:0.01:0.5;

>> for k=1:length(x)

y(k)=f(x(k));

end

>> plot(x,y)

14) Reprezentati grafic in Matlab corpul solid, de forma tetraedrului din primul octant,

marginit de planele 1 zyx , 0x , 0y , 0z .

>> x=[1 0 0 0 1 0]; y=[0 0 1 0 0 1]; z=[0 0 0 1 0 0];

>> plot3(x,y,z,1,0,0,'ob',0,1,0,'ob',0,0,1,'ob',0,0,0,'ob')

-0.5 -0.4 -0.3 -0.2 -0.1 0 0.1 0.2 0.3 0.4 0.5-0.4

-0.3

-0.2

-0.1

0

0.1

0.2

0.3

0.4

Page 10: Laboraratorul 1. INTRODUCERE ÎN MATLAB - civile.utcb.rocivile.utcb.ro/cmat/cursrt/ms_l1.pdf · Laboraratorul 1. INTRODUCERE ÎN MATLAB Bibliografie: 1. M. Ghinea, V. Fireţeanu,

10

15) Realizati in Matlab graficul corpului, limitat de suprafetele: xzy 42 22 si 2x .

Secventa Matlab urmatoare permite reprezentarea corpului omogen.

>> [y,z]=meshgrid(-3:.03:3,-2.5:.03:2.5);

>> x=y.^2/4+z.^2/2;

>> [m,n]=size(x);

>> x1=2*ones(m,n);

>> plot3(x,y,z,x1,y,z)

00.2

0.40.6

0.81

0

0.2

0.4

0.6

0.8

1

0

0.2

0.4

0.6

0.8

1

xy

z

A(1,0,0)

O(0,0,0)

C(0,0,1)

B(0,1,0)

01

23

45

6

-5

0

5

-3

-2

-1

0

1

2

3

xy

z