laboraratorul 1. introducere În matlab - civile.utcb.rocivile.utcb.ro/cmat/cursrt/ms_l1.pdf ·...
Post on 08-Feb-2018
217 Views
Preview:
TRANSCRIPT
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
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(:);
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 .
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')
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');
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
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
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)
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
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
top related