Professional Documents
Culture Documents
Cursos de Capacitacin
MATLAB
0
M AT L A B
Curso de Capacitacin
Tabla de contenido
Aplicaciones I (5 hrs)
CAPTU LO 1
Fundamentos de Matlab (5 Algebra lineal
hrs.) Integracin numrica
Ajuste de curvas
Comandos bsicos
Interpolacin
Variables de tipo arreglo
Nmeros en Matlab
Funciones
CAPTUL O 4
Creando un programa *.m
a la Ingeniera.
Grficas simples
Grficos de vectores
M ATL A B
INTRODUCCION
i
Introduccin
Qu es MATLAB?
L E Y E N DA D E
I C O
N O
1
S Captulo
Informacin
valiosa
Ponga a prueba
sus
conocimientos
Ejercicios de
teclado
Revisin de
libro de trabajo
Fundamentos de Matlab
ESTE CURSO
1
M ATL A B
>>
>> quit
o con el comando:
>> exit
AYUDA EN LINEA
>> help
[lista todos tpicos de Ayuda]
>>!del SALIDA.DAT
2
M ATL A B
VARIABLES
>> eps
eps =
2.2204e-16
>> pi
ans =
3.1416
>> help pi
PI 3.1415926535897....
PI = 4*atan(1) = imag(log(-1)) =
3.1415926535897....
Asignacin de variables:
>> x = 3
x=
3
M ATL A B
>> y = x^2
y=
>> x = 3;
>> y = x^2;
>> y
y=
>> who
ans x y
>> clear x
4
M ATL A B
>> 2+3;
>> 3*4, 4^2;
>> 2+3*4^2;
5
M ATL A B
>> a = sqrt(2)
a=
1.4142
>> format long, b=sqrt(2)
b=
1.41421356237310
>> format short
>> 2+3*4^2/2
>> (2 + 3*4^2)/2
genera = 25.
6
M ATL A B
MATRICES
1 2 3 4
5 6 7 8
9 8 7 6
define una matriz con 3 renglones y 4 columnas, con 12
elementos.
7
M ATL A B
8
M ATL A B
>> A = [1 2 3; 4 5 6; 7 8 9];
>> A = [ 1 2 3
4 5 6
7 8 9]
Note que:
9
M ATL A B
10
M ATL A B
Funcin Descripcin
====================================
=========
diag regresa la diagonal principal de una matriz
como un vector
eye matriz identidad
hilb matriz de Hilbert
magic cuadrado mgico
ones matriz de unos
rand generador de matrices aleatorias
triu parte triangular superior de una matriz
tril parte triangular inferior de una matriz
zeros matriz de ceros
===================================
==========
>> rand(3)
ans =
0.0470 0.9347 0.8310
0.6789 0.3835 0.0346
0.6793 0.5194 0.0535
>>
>> rand(m,n);
>> magic(4)
ans =
16 2 3 13
5 11 10 8
9 7 6 12
11
M ATL A B
4 14 15 1
>>
12
M ATL A B
===================================
==========
>> A'
ans =
1 4 7
2 5 8
3 6 9
>> B = [1+i 2 + 2*i 3 - 3*i]'
B=
1.0000 - 1.0000i
2.0000 - 2.0000i
3.0000 + 3.0000i
>>
Por ejemplo:
13
M ATL A B
16.0000 -38.0000
>>
>> A = magic(5);
>> b = ones(5,1);
>> A*b; <== la matriz de (5x1) contiene la suma
de los renglones.
>> v = ones(1,5);
>> v*A; <== la matriz de (1x5) contiene la suma
de las columnas.
>> A = zeros(1,4)
>> any(A)
>> D = ones(1,4)
>> any(D)
>> all(A)
14
M ATL A B
>> min(A)
>> b = 2*ones(A)
>> A*B
>> A
* , ^ , \ , y /,
[1,2,3,4].*[1,2,3,4]
ans =
1 4 9 16
[1,2,3,4].^2
15
M ATL A B
AX=B
>> X=A\B
>> X=B/A
16
M ATL A B
EJEMPLO NUMERICO
>> A = [ 3 -1 0; -1 6 -2; 0 -2 10 ];
>> B = [ 1; 5; 26 ];
>> X = A \ B
X=
1.0000
2.0000
3.0000
>>
A*X ==> B
Y A*X - B ==> 0
>> A*X
ans =
1.0000
5.0000
26.0000
>> A*X - B
ans =
1.0e-14 *
0.0444
-0.2665
-0.3553
>>
17
M ATL A B
ESTRUCTURAS DE CONTROL
>> x = -3 : .3 : 3
x=
Columns 1 through 7
-3.0000 -2.7000 -2.4000 -2.1000 -1.8000
-1.5000 -1.2000
Columns 8 through 14
-0.9000 -0.6000 -0.3000 0 0.3000
0.6000 0.9000
Columns 15 through 21
1.2000 1.5000 1.8000 2.1000 2.4000
2.7000 3.0000
>>
>> x = [0.0:0.1:2.0]' ;
>> y = sin(x);
>> [x y]
18
M ATL A B
OPERADORES LGICOS
Operador Descripcin
< Menor que
> Mayor que
<= Menor o igual
>= Mayor o igual
== Igual
~= Diferente.
Operador Descripcin
& y
| o
~ no
3<5
ans =
1
>> a = 3 == 5
a=
0
>>
19
M ATL A B
>> A = [ 1 2; 3 4 ];
>> B = [ 6 7; 8 9 ];
>> A == B
ans =
0 0
0 0
>> A < B
ans =
1 1
1 1
>>
>> ~A
>> A&B
>> A & ~B
>> A|B
>> A | ~A
CONDICIONALES
if <condicin>,
<programa>
end
20
M ATL A B
>> a = 1;
>> b = 2;
>> if a < b,
c = 3;
end;
>> c
c=
3
>>
if <condicin1>,
<programa1>
else
<programa2>
end
if <condicin1>,
<programa1>
elseif <condicin2>,
<programa2>
end
CICLOS
21
M ATL A B
ejemplo
for i= 1 : n,
<programa>,
end
>> for i = 1 : 5,
c = 2*i
end
c=
2
c=
4
.....
c=
10
>>
22
M ATL A B
es correcto.
while <condicin>,
<programa>,
end
function h=factorial(n)
h=1;
23
M ATL A B
m=n;
while m>=2
h=h*m;
m=m-1;
end
ALGUNAS NOTAS
if A == B
<instrucciones>
end
if any(any(A ~ B))
<instrucciones>
end
o simplemente
if A == B else
<instrucciones>
end
SUBMATRICES
Ya hemos visto como los dos puntos ":" pueden ser utilizados
para generar vectores. Otro uso comn de los dos puntos es
el de extraer renglones y/o columnas de una matriz, por
ejemplo:
A(1:4,3)
24
M ATL A B
A(:,3)
A(1:4,:)
A(:,[2 4])
>> V=[0 1 0 1 1]
>> A(:,V)
>> A(V,:)
ESCRITURA DE PROGRAMAS
LOS M-FILES
25
M ATL A B
mi_prog.m
>> mi_prog
[x y] = meshgrid(-3:.1:3, -3:.1:3);
z = x.^2 - y.^2;
mesh(x,y,z);
>> prueba
A = [2 3 4; 5 6 7; 8 9 0]
inv(A)
26
M ATL A B
el comando
>> matriz
>> path
type <funcin>
por ejemplo:
>>type mean
27
M ATL A B
function raiz2(x)
% RAIZ2(X) calcula la raz cuadrada de X mediante
el mtodo de Newton
% Valor inicial
xinicio = 1;
for i = 1:100
xnueva = ( xinicio + x/xinicio)/2;
disp(xnueva);
if abs(xnueva - xinicio)/xnueva < eps, break, end;
xinicio = xnueva;
end
28
M ATL A B
[m n] = size(x);
if m == 1
m = n; % para el caso de un vector
end
mean = sum(x)/m;
stdev = sqrt(sum(x.^ 2)/m - mean.^2);
>> y = [1:10];
>> [ym, yd] = stat(y)
ym =
5.5000
yd =
2.8723
>>
>> xm = stat(x)
29
M ATL A B
function a = mcd(a,b)
a = round(abs(a));
b = round(abs(b));
if a == 0 & b == 0
error('mcd no esta definido si ambos nmeros
son cero')
else
while b ~= 0
r = rem(a,b);
a = b; b = r;
end
end
Por ejemplo,
30
M ATL A B
2
Captulo
guardarn en archivo.out.
GRFICOS
Funcin Descripcin
plot(x,y) grfica y vs x
plot(x,y1,x,y2,x,y grfica y1, y2 y y3 vs x en la misma grfica
3)
xlabel('texto') etiqueta el eje x
ylabel('texto') etiqueta el eje y
title('texto') pone un ttulo en la grfica
gtext('texto') activa el mouse para colocar un texto en cualquier parte
de la grfica presionando cualquier tecla (o botn)
print archivo.ps guarda la grfica como un archivo postscript blanco y
negro.
31
M ATL A B
>> x = 0:.01:2*pi;y1=sin(x);y2=sin(2*x);
>> y3 = sin(4*x);plot(x,y1,x,y2,x,y3)
32
M ATL A B
>> x = 0:.01:2*pi;y1=sin(x);y2=sin(2*x);
>> y3 = sin(4*x);plot(x,y1); hold on;
>> plot(x,y2); plot(x,y3); hold of
====================================
=========
Slida (-), no continua (-). dos puntos (:), lnea-punto (-.)
Marcas : punto (.), cruz (+), asterisco (*), crculo (o),
equis (x)
===================================
==========
33
M ATL A B
>> x=linspace(-3,10,400);
>> y=exp(-x.^2);
>> plot(x,y)
>> axis of
34
M ATL A B
>> t=(1:2:15)*pi/8;
>> x=sin(t);
>> y=cos(t);
>> fill(x,y,r );
>> axis square of
>> text(0,0,ALTO,Color,[1 1
1],fontSize,60,HorizontalAlignment,Center);
GRAFICAS TRIDIMENSIONALES
35
M ATL A B
>> mesh(x,y,z)
>> xx = -2:.1:2;
>> yy = xx;
>> [x,y] = meshgrid(xx,yy);
>> z = exp(-x.^2 - y.^2);
>> mesh(z)
CONSIDERACIONES GENERALES
>> casesen
36
M ATL A B
archivo.mat
>> save x
>> save y
de tal forma que se crean los archivos x.mat y y.mat con los
valores de estas variables.
37
M ATL A B
>> diary on
y
>> diary of
respectivamente.
38
M ATL A B
------------------------------------------------------------------------
3
Aplicaciones
Algebra lineal
Matlab fue escrito, originalmente, para proveer una interfase
de fcil uso para utilizar las herramientas del lgebra lineal.
39
M ATL A B
1 0 2 1 3
0 x1
1 1 0 x
5
3 2 0 2 1
2
x3
0 0 1 4 13
x
4
2 0 1 3 11
>> rank(A)
x A1B
>> x=inv(A)*B
>> x=A\B
40
M ATL A B
Ax T B T
x T AT B T
>> B/A
2 4 x1 6
2 4.0001 x 6.0001
2
2 4 x1 6
2 4.0001 x 6
2
2 4 x1 6
2 3.9999 x 6.0001
2
Ax x
41
M ATL A B
>> B=eye(20);
>> BP=sparce(B);
>> whos;
Integracin numrica
42
M ATL A B
>> x=-5:2:5;
>>y=exp(-x.^2);
>>area=trapz(x,y)
>>integral=area/sqrt(pi)
>> x=linspace(-5,5,100);
>> y=exp(-x.^2);
>> area=trapz(x,y)
>> integral=area/sqrt(pi)
f ( x )dx
x
43
M ATL A B
>> z=cumtrapz(x,y);
>> plotyy(x,y,x,z)
Ajuste de curvas
El ajuste de curvas est muy relacionado con los polinmios,
as que primero veamos una introduccina los mismos.
a n x n a n 1x n 1 a n 2 x n 2 ... a1x ao 0
>> R=roots(C )
44
M ATL A B
>> pp=poly(R )
que
>> conv(C1, C2 )
function p=mmpadd(a,b)
% Suma de polinomios A y B
if nargin<2
end
na=length(a); nb=length(b);
su uso ser
>> f=mmpadd(g,t)
45
M ATL A B
>> polyder(C1)
>> x=linspace(-1,3,100);
>> plot(x,y)
Ajuste de curvas
>>x=[0 .1 .2 .3 .4 .5 .6 .7 .8 .9 1];
>> y=[-.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48
9.30 11.2];
>> n=2;
>> p=polyfit(x,y,n)
>> xi=linspace(0,1,100);
>> yi=polyval(p,xi);
>> plot(x,y,-o,xi,yi,- -)
46
M ATL A B
Interpolacin
La interpolacin es una manera de estimar los valores de una
funcin entre un conjunto de datos dados.
>> x2=linspace(0,2*pi,6);
T Beta Alfa
47
M ATL A B
Interpolacin bi-dimensional
>> x=0: .5 : 4;
>> y=0: .5 : 6;
48
M ATL A B
>> mesh(x, y, z)
>> [xxi,yyi]=meshgrid(xi,yi);
>>mesh(xxi,yyi,zzi)
>> x= rand(1,12)*10 ;
>> y= rand(1,12)*10 ;
49
M ATL A B
>> z= zeros(1,12);
>> trimesh(tri, x, y, z)
>> plot(x( k ), y( k ))
>> z= rand(1,12);
50
M ATL A B
4
51
M ATL A B
Aplicaciones II
Races de ecuaciones no lineales
1 e 9.35
. 2 log10
114
f D Re f
M ETOD O GRAF IC O
>> D=0.1;
>> e=0.0025;
52
M ATL A B
>> Re=30000;
>> x=0.01:.01:1;
>> plot(x,y)
>> grid
ac
b
2
53
M ATL A B
M E T O D O D E N E W T O N
El algoritmo es el siguiente:
f ( xk 1 )
xk xk 1
f ' ( xk 1 )
54
M ATL A B
E C U AC I O N E S D E P R I M E R O R D E N
y ' ( t ) f ( y , t ) , y ( 0) yo
dv ( t )
M Faire gM
dt
dv ( t ) v ( t ) v ( t t ) v ( t )
dt t t
C 2
v (t t ) v (t ) t v (t ) g
M
55
M ATL A B
A P L I C A C I O N E S A L A O C E A N O G R A F I A
gT 2 2d
tanh
2
function y=longonda(x )
global T d
g=9.81;
y= g*T*T/(2*pi)*tanh(2*pi*d/x)-x ;
56
M ATL A B
Procedimiento:
load datos.dat
To=datos(:,1);
So=datos(:,2);
S=30:.2:36;
T=5: .5 :35;
[SS,TT]=meshgrid (S, T);
DEN=sw_densi0(SS, TT)-1000;
[c,h]=contour(S, T, DEN);
clabel(c,h,manual )
dx
a bx cy x
dt
dy
d ex y
dt
57
M ATL A B
dx
dt a bx cx x
dy ey d y
dt
function w=pobla( t, z )
a=10; b=1e-5; c=0.1; d=10; e=0.1;
w=[ (a-b.*z(1) , -c.*z(1) ; e.*z(2) , -d ]*[z(1) ; z(2) ];
%Depredador Presa
to=[0,3];
N=[10, 5];
[t , y ]=ode45( pobla , to, N );
plot( t, y)
pause
plot ( y(:,1), y(:,2))
2 0
58
M ATL A B
d 2 y y ( t t ) 2 y ( t ) y ( t t )
dt 2 t 2
(i 1, j ) (i , j 1) (i 1, j ) (i , j 1) 4 (i , j )
%
% programa para ver solucion de laplaciano=0
N=20; M=20;
phi=zeros(N,M);
ax=ones(N,1);
ay=ones(1,M);
% Condiciones de frontera
phi(:,M)=15.*ax(:,1);
phi(:,1)=20.*ax(:,1);
phi(1,:)=5.*ay(1,:);
phi(N,:)=10.*ay(1,:);phin=phi;
% Graficado
h=imagesc(phi);colorbar; set(h,'erasemode','xor');
flag=1;
% Ciclo de solucion iterativa
while flag==1
phin(2:N-1,2:M-1)=0.25*(phi(3:N,2:M-1)+phi(1:N-
2,2:M-1)+...
phi(2:N-1,3:M)+phi(2:N-1,1:M-2));
% Condicion de terminacion de iteracion
if sum(sum(abs(phi-phin)))<0.1; flag=2;break;end
phi=phin;
set(h,'cdata',phi);drawnow
end
% Solucion es phi
59
M ATL A B
REFERENCIAS
60
M ATL A B
61