Un Curso Introdutorio de Matlab
Gerardo Ortigoza
August 20, 2009
1 Introdu
ion
MATLAB es la abreviatura de Matrix Laboratory (laboratorio de matries).
Es un programa de anlisis numrio reado por The MathWorks en 1984.
Est disponible para las plataformas Unix y Windows.
Se pueden ampliar sus apaidades on Toolboxes, algunas de ellas estn
destinadas al proesado digital de seal, adquisiin de datos, eonoma,
inteligenia artiial, lgia difusa.Tambin uenta on otras herramientas
omo Simulink, que sirve para simular sistemas.
La primera versin surgi on la idea de emplear unos paquetes de sub-
rutinas esritas en Fortran en los ursos de lgebra lineal y anlisis numrio,
sin neesidad de esribir programas en Fortran.
Usa un lenguaje de programain reado en 1970 para proporionar un
senillo a
eso al software de matries LINPACK y EISPACK sin tener que
usar Fortran. Tambin tiene su propio ompilador.
Es un software muy usado en universidades, entros de investigain y por
ingenieros. En los ltimos aos ha inluido muhas ms apaidades, omo
la de programar diretamente proesadores digitales de seal, rear digo
VHDL y otras.
MATLAB es un programa de lulo numrio, orientado a matries y
vetores. Por tanto desde el prinipio hay que pensar que todo lo que se
pretenda haer on l, ser muho ms rpido y efetivo si se piensa en
trminos de matries y vetores.
1
2 Matries y Operaiones on Matries
A = [1 2 3; 4 5 6]; AA =
1 2 34 5 6
size(A)ans =2 3 x = [1 5 4 8 10]; size(x)ans =1 5Pratique
x = 0:.1 : 6 size(x) y = ones(size(x)) z = zeros(size(x))Z = zeros(size(A)) Y = ones(size(A)) w = zeros(2, 3) v = eye(5)A(2, 2) A(1, :) A(:, 2) A size(A) x(1 : 10)
B = [2 0 1; 1 2 7]; A+B
ans =3 2 25 7 13
Denamos
C = [3 3;1 4; 6 2]; b = [1 5 2]; c = [1 3]
Realiemos las operaiones
A+ 3 A C A b
c A 2 A A/2 A. B
2
A. 2 B./A
Algunas funiones de Matries
rand(3) rand(4,5) magi(3) hilb(3)
Ejeriio
1. Sea A = hilb(5) investigue el uso de diag(A), triu(A) y tril(A).
2. DenaM = hilb(3) y B = [M, zeros(3, 2); zeros(2, 3), eye(2)], veriqueel tamao de B y su estrutura.
Operaiones on Matries
+ suma resta produto potenia transpuesta
\ divisin por la izquierda/ divisin por la dereha
Sea
A = [1 2 3 ; 4 5 6; 6 7 9]A =
1 2 34 5 66 7 9
b = [1; 0; 1]b =
101
La soluin de Ax = b esta dada porx = A\b
3
x =0.00002.00001.6667
Cuando A es uadrada la divisin por la izquierda se realiza usando elimi-nain Gaussiana, esto es ms eiente que usar x = inv(A) b. Si A noes uadrada entones es fatorizada usando ortogonalizain de Householder
on pivoteo por olumnas y los fatores son usados para resolver el sistema
sobre o subdeterminado en el sentido de mnimos uadrados.
Ejeriios
1. Considere la aproximain eA I + A+ A2
2!+ A
3
3!+
Compare expm(A)on las aproximaiones usando 1, 2, 3 trminos.
Use A =
(1 11 0
)
2. Cuenta Matlab on las funiones de Bessel?
3. La matriz A =
2 11 2 1
1 2 11 2 1
1 2 11 2
se obtiene al disretizar en diferenias nitas el problema:
u(x) = f(x), x (0, 1) u(0) = u(1) = 0,el sistema disreto es:
ui1 + 2ui ui+1 = h2fi
on h = 1/(n + 1), xi = ih. Dena el sistema disreta para diferentesvalores de n y resuelva.
4. Cuenta matlab on alguna funin para denir matries esparidas?
5. Existe alguna funin en Matlab que dibuje diagramas de Venn?
4
3 Expresiones, Variables y algunos omandos
variable=expresion
Matlab es sensible a minsulas y maysulas, as v1 6= V1 Algunos omandosde ventana
whoclearclear x1, x2;clcclfCtrl C
Si sales de Matlab todas las variables se pierden, pueden guardarse usando
save y las variables van a parar a un arhivo matlab.mat, despus pueden
reuperarse usando load.
Ayudas en Matlab
help nombre del omando
helpwin
helpdesk
www.mathworks.om
4 Comandos de ontrol
x=[;
4.1 for
for i=1:10
x = [x, i 2];end
for i=1:5
for j=1:5
H(i, j) = 1/(i+ j 1);end
end
H
5
4.2 while
n=0;
while 2 n < 100n=n+1;
end
n
El ms pequeo entero no negativo n tal que 2n 100
4.3 if
n=10;
if n mayor que
Funciones Matricialeseig chol svd inv luqr hess expm sqrt polydet size norm cond rank
Funciones Vectorialesmax min sort sum prod
median mean std
Ejeriios
1. La suesin de Fibona
i es la suesin innita de nmeros naturales
1,2,3,5,8,13,21,34,55
donde el primer elemento es 1, el segundo es 2 y ada elemento restante
es la suma de los dos anteriores. Esriba un programa para alular
estos nmeros.
2. Cubos narisistas: Son ubos narisistas aquellos nmeros enteros po-
sitivos que son exatamente iguales a la suma de sus dgitos elevados
al ubo. Por ejemplo 371 es narisista, ya que:
371 = 33 + 73 + 13.
Esriba un programa que alule los nmeros narisistas menores que
1000. untos de estos nmeros hay?
3. Note que 1, 233 = 122 + 332. Existe algn otro nmero positivo de
uatro dgitos on esta propiedad? Esriba un digo.
5 Mles
Hay dos lases de Mles: los sript les y los funtion les. Los Sript les
ontienen una ole
in de omandos que se ejeutan en el orden en que son
esritos. Los Funtion les son arhivos que denen funiones.
funtion [x1,x2=rootquad(a,b,)
7
% Esta funin resuelve un uadrtia
% a x 2 + b x+ c = 0% dados los oeientes a, b y c% Sintaxis [x1,x2=rootquad(a,b,)
d = b 2 4 a c;x1 = (b+ sqrt(d))/(2 a);x2 = (b sqrt(d))/(2 a);
Ejeriios
1. Modique la funin rootquad para que funione de forma vetorial.
Note que uando usamos help nombre de la funin denida aparee el
omentario de la funin, adems no se deben usar nombres de funiones ya
denidas en Matlab.
Ejemplo 5.1 Denir la funin
f(x) =
x x < 0x2 0 x < 24 2 x
funtion y=f(x)
y1=x.*(x
format short e notain ienta on 5 deimales
format long e notain ienta on 15 deimales.
Ejeriios
1. Considere la funin rootquady modiquela para que pueda ser usada
de forma vetorial.
7 Gras
7.1 Gras en 2d
x=0:.1:2*pi;
y1=sin(x);
y2=os(x);
plot(x,y1,r-,x,y2,b:);
legend(sin(x),os(x));
title(Gra de las Funiones seno y oseno);
xlabel(x);
ylabel(y);
grid on;
axis tight;
%text(x,y,texto); pone le mensaje texto en la posiin (x,y)
0 1 2 3 4 5 6
0.8
0.6
0.4
0.2
0
0.2
0.4
0.6
0.8
1
x
Graficas de las Funciones seno y Coseno
y
sin(x)cos(x)
Gra de las funiones Seno y Coseno
9
Tipo de lnea Smbolo Tipo de punto Smbolo Color Smbolo
slida - punto . azul b
disontinua mas + verde g
punteada : estrella * rojo r
raya-punto -. irulo o negro k
t=0:.05:pi+.01;
r=sin(3*t).*exp(-0.3*t);
polar(t,r)
0.2
0.4
0.6
0.8
1
30
210
60
240
90
270
120
300
150
330
180 0
Gra de la funin r = sin(3)exp(0.3)
7.2 Gras en 3d
1. Gra de una hlie:
t=0:0.1:6*pi;
plot3(sin(t),os(t),t);
xlabel(x);ylabel(y);zlabel(z); text(0,0,0,origen);
grid on;
title (Helie)
2. Gra de una funin de 2 variables: z=f(x,y)
10
(a) Generar una malla de puntos en el plano xy usando meshgrid.(b) Evaluar la funin f en estos puntos.() Crear la superie on el omando mesh.
Ejemplo 7.1 Graar z = 20x2+x
2+ 15y
2+5y
2para (x, y) [4, 4] [4, 4]
1
0.5
0
0.5
1
1
0.5
0
0.5
10
5
10
15
20
x
origen
Helice
y
z
Gra de la Hlie ~x(t) = (cos(t), sin(t), t)
[x,y=meshgrid(-4:0.2:4,-4:0.2:4);
z = 0.5 (20 x. 2 + x) + 0.5 (15 y. 2 + 5 y);mesh(x,y,z);
gure;
ontour3(x,y,z,20);
gure;
surf(x,y,z);
shading interp;
11
42
02
4
4
2
0
2
4300
250
200
150
100
50
0
50
Gra de la funion z = 20x2+x
2+ 15y
2+5y
2
42
02
4
4
2
0
2
4300
250
200
150
100
50
0
Curvas de nivel tridimensionales z = 20x2+x
2+ 15y
2+5y
2
42
02
4
4
2
0
2
4300
250
200
150
100
50
0
50
12
Contornos de z = 20x2+x
2+ 15y
2+5y
2
3. Subplot El omando subplot(m,n,p) divide la ventana de gras en
una matriz de m n areas y elige la p-sima omo la ventana ativa.
[X, Y, Z] = sphere(12);subplot(1,2,1);
mesh(X,Y,Z);
title(Esfera Opaa);
hidden on;
subplot(1,2,2);
mesh(X,Y,Z);
title(Esfera Transparente);
hidden o;
1
0
1
10.5
00.5
11
0.8
0.6
0.4
0.2
0
0.2
0.4
0.6
0.8
1
Esfera Opaca
1
0
1
10.5
00.5
11
0.8
0.6
0.4
0.2
0
0.2
0.4
0.6
0.8
1
Esfera Transparente
4. Silla de Montar Ejeriio: Graar la funin z = x2 y2.
[x, y] = meshgrid(4 : 0.2 : 4,4 : 0.2 : 4);z = x. 2 y. 2;mesh(x,y,z);
title(silla de montar); xlabel(x);ylabel(y);zlabel(z);
13
42
02
4
4
2
0
2
420
15
10
5
0
5
10
15
20
x
silla de montar
y
z
z = x2 y2
ontour(x,y,z,20);%20 urvas de niveltitle(Curvas de Nivel);
xlabel(x);ylabel(y);
4 3 2 1 0 1 2 3 44
3
2
1
0
1
2
3
4Curvas de Nivel
x
y
polor(x,y,z);
shading interp;
title(Contornos);
xlabel(x);ylabel(y);
14
4 3 2 1 0 1 2 3 44
3
2
1
0
1
2
3
4Contornos
x
y
gure;
polor(x,y,z);
shading interp;
hold on;
ontour(x,y,z,20,k);
title(Contornos y urvas de nivel);
xlabel(x);ylabel(y);
hold o;
4 3 2 1 0 1 2 3 44
3
2
1
0
1
2
3
4Contornos y curvas de nivel
x
y
15
r=0:0.05:1;
theta=0:0.1:2*pi+0.1;
x = r cos(theta);y = r sin(theta);mesh(x, y, sin(pi (x. 2 + y. 2)));axis([-1 1 -1 1 0 2);
1
0.5
0
0.5
1
10.8
0.60.4
0.20
0.20.4
0.60.8
10
0.5
1
1.5
2
Gra de z = sin(r2)
Referenes
[1 D.M. Etter, Soluin de problemas en Ingeniera on Matlab, Prentie
Hall, 1998.
[2 S. Nakamura, ANALISIS NUMERICO VISUAL.GRAFICA MATLAB,
Prentie Hall 1997.
[3 B. R. Hunt, R. L. Lipsman, Dierential Equations with Matlab, Wiley
2005.
16
IntroduccionMatrices y Operaciones con MatricesExpresiones, Variables y algunos comandosComandos de controlforwhileif
MfilesCadenas de caracteres y formatos de salidaGrficasGrficas en 2dGrficas en 3d
Top Related