Documentos de Académico
Documentos de Profesional
Documentos de Cultura
INTRODUCCION
Matlab es un entorno de trabajo
para
el
clculo
cientfico.
Programado originalmente por
Cleve Moler a finales de los aos
70. Matlab es una abreviatura de
Matrix Laboratory. Su primera
implementacin se hizo en Fortran
que era, y en buena medida an
sigue sindolo, el lenguaje estndar
en la implementacin de mtodos
numricos. Posteriormente se
reimplement en C, que es como
se encuentra en la actualidad.
Las aplicaciones de Matlab
se fueron extendiendo a otras
ramas del clculo cientfico y de
las ciencias aplicadas en general,
dotndole de una gran popularidad en ambientes cientficos (especialmente en
Ingeniera). Dichas extensiones se consiguieron en gran parte mediante la
implementacin de toolboxes, libreras escritas en el lenguaje de programacin propio
de Matlab y que ampliaban el rango de problemas que podan resolverse.
Sin miedo a equivocarse, se pueden enunciar las siguientes reas donde Matlab muestra
un gran potencial:
La extensa gama de problemas que cubre hace de Matlab un lenguaje difcil de entender
y manejar en su completitud. Esto no quiere decir que sea inarbodable: el conocimiento
base que permite empezar a trabajar es muy sencillo. No obstante el elevado nmero de
comandos que se encuentra a disposicin del alumno provoca que en ocasiones existan
problemas no slo para encontrar los comandos adecuados sino tambin para tener una
idea de qu posibilidades exactamente ofrece Matlab en un problema o tarea en
particular.
El lenguaje de programacin de Matlab es bastante ms flexible que el de los lenguajes
tradicionales. No es preciso la declaracin inicial de variables, stas se pueden
introducir en el momento que se necesiten, y por ejemplo, vectores y matrices pueden
declararse sin especificar sus dimensiones e incluso cambiar sus tamaos sobre la
marcha. Ello permite una programacin algo ms desordenada, aunque debe tenerse
bien claro que una programacin clsica, ms al uso, suele generar cdigo ms eficiente.
.
En la figura 1.1 podemos ver el aspecto inicial de MaLab. Distinguimos las siguientes
ventanas
Figura 1.1
Ejercicio 1.1 Ejecuta las instrucciones
>> 4+4 % mi primera operacin
>> 3^4, 4/9
>> 3^4; 4/9
>> 3^4, 4/9;
>> 3^4; 4/9;
y observa la salida.
Haremos algunos comentarios sobre el ejercicio anterior. El circunflejo ^ es la
potenciacin:
>> 3^5
ans =
243
El trmino ans es la primera variable que vemos de Matlab. Concretamente, guarda la
ltima salida dada por Matlab (answer):
>> 4+6
ans =
10
>> ans*2
ans =
20
>> ans*2
ans =
40
3
La raz cuadrada se puede calcular bien elevando a 1/2 ( ^(1/2) ) o bien utilizando sqrt.
Ejercicio 1.2 Comprueba la diferencia entre
4/4+6
4/(4+6)
3^5*2
3^(5*2)
El signo i suele ser habitual en Matemticas mientras que en diversas ramas de la Fsica
y en Ingeniera de Telecomunicaciones o Elctrica se prefiere el smbolo j (en este caso
para no confundir con la intensidad de corriente elctrica). De ah que Matlab permita
ambas representaciones.
Todas las operaciones matemticas incluyen la aritmtica compleja en el sentido usual
>> 1+i +5-6i % suma de dos numeros complejos
ans =
6.0000 - 5.0000i
>> (5+3i)*(5-3i), (1+2i)/(3-4i)
ans =
34.00
ans =
-0.20
>> conj(3e-3+2e-4i) % conjugado
ans =
0.0030 - 0.0002i
>> abs(3+4i), angle(2i) % modulo y argumento
ans =
5
ans =
1.5708
Comandos de Ayuda
La ayuda de Matlab es ciertamente muy clara y completa. Los comandos siempre
dispuestos a echarnos una mano son:
help: muestra una ayuda por pantalla, en la ventana de comandos, con la informacin
esencial sobre un comando concreto.
helpwin: similar a help pero despliega la ayuda en una ventana auxiliar, permitiendo
as una navegacin, estilo web, muy cmoda.
lookfor: permite buscar una cadena en la primera lnea de todos los ficheros de ayuda.
Ejercicio 1.3 Utilizando las funciones de ayuda, obtener informacin de alguna de estas
funciones elementales de Matemtica
Variables
Matlab no necesita la declaracin de variables como en un lenguaje tradicional. En
principio todas las variables son reales, y basta hacer uso de ellas para que queden
declaradas:
>> a=1; b=2; c=3;
>> a-b
ans =
-1
>> a*b*c
ans =
6
El comando who sirve para conocer los nombres de las variables declaradas, mientras
que con whos obtenemos una informacin ms precisa:
>> who
Your variables are:
abc
>> whos a
Name Size Bytes Class
a 1x1 8 double array
Grand total is 1 element using 8 bytes
Para borrar una variable se utiliza la instruccin clear, por ejemplo,
>> a=4;
>> whos a
Name Size Bytes Class
a 1x1 8 double array
Grand total is 1 element using 8 bytes
>> clear a
>> whos a
>>
borra la variable (es decir, whos no devuelve nada). Con la orden
>> clear all
se borran todas las variables declaradas hasta el momento.
Nota. En Matlab es correcto declaraciones de este tipo
>> sin=1;
>> sin+1
ans=
2
De esta forma sin pasa a ser una variable que sobrescribe el valor original que tena
como funcin seno. Para recuperar el valor original basta ejecutar
>> clear sin
Vectores y Matrices
Para definir un vector fila, basta introducir sus coordenadas entre corchetes:
>>v=[1 2 3]
% Vector de 3 coordenadas
v=
123
>>w=[4 5 6];
El operador ' es el de trasposicin (en realidad trasposicin y conjugacin):
>>w'
ans =
4
5
6
Si queremos declarar un vector de coordenadas equiespaciadas entre dos dadas, por
ejemplo, que la primera valga 0, la ltima 20 y la distancia entre coordenadas sea 2,
basta poner:
>>v1=0:2:20
v1 =
0 2 4 6 8 10 12 14 16 18 20
Equivalentemente, si lo que conocemos del vector es que la primera coordenada vale 0,
la ltima 20 y que tiene 11 en total, escribiremos:
>>v2=linspace(0,20,11)
v2 =
0 2 4 6 8 10 12 14 16 18 20
A las coordenadas de un vector se accede sin ms que escribir el nombre del vector y,
entre parntesis, su ndice:
>>v2(3)
ans = 4
y se pueden extraer subvectores, por ejemplo:
>>v2(2:5)
ans=
2468
7
>>v1(:)
ans=
0
2
4
6
8
10
12
14
16
18
20
Las matrices se escriben como los vectores, pero separando las filas mediante un punto
y coma; as una matriz 3x3:
>>M=[1 2 3;4 5 6;7 8 9]
M=
123
456
789
>>M'
ans =
147
258
369
>>N=[v;w;0 0 1]
N=
123
456
001
A los elementos de una matriz se accede sin ms que escribir el nombre de la matriz y,
entre parntesis, los respectivos ndices:
>>N(1,3) % Elemento en la primera fila y tercera columna de la matriz N
ans =
3
ans =
4
7
2
5
8
3
acceder a cualquiera de sus submatrices
>>N(2:3,[1 3]) % Submatriz formada por los elementos que estn en
% "todas" las filas que hay entre la segunda y la tercera y
% en las columnas primera y tercera
ans =
46
01
Existen algunas matrices definidas previamente; por ejemplo, la matriz identidad,
>>eye(5) % eye se pronuncia en ingls como I
ans =
10000
01000
00100
00010
00001
la matriz nula,
>>zeros(3)
ans =
000
000
000
o la matriz cuyos elementos valen todos 1:
>>ones(4)
ans =
1111
1111
1111
1 1 11
10
11
Clculos Bsicos
Diferenciacin:
Ejemplo: Calcular la derivada de
x3
>>syms x;
>>diff(x^3)
ans =
3*x^2
Alternativamente, se puede definir primero x 3 como una funcin:
>>f=inline('x^3','x');
>>diff(f(x))
ans =
3*x^2
Tambin se pueden calcular las derivadas de orden superior:
Ejemplo: La segunda derivada de la funcin f(x):
>>di_(f(x),2)
ans =
6*x
Finalmente, MATLAB puede calcular las derivadas parciales.
>>syms y;
>>g=inline('x^2*y^2','x','y')
g=
Inline function:
g(x,y) = x^2*y^2
>>di_(g(x,y),y)
ans =
2*x^2*y
Integracin
Ejemplo: Hallar la integral de x 2
>>syms x;
>>int(x^2)
ans =
1/3*x^3
or
>>f=inline('x^2','x')
f=
Inline function:
f(x) = x^2
>>int(f(x))
ans =
1/3*x^3
13
x
0
dx
>>int(f(x),0,1)
ans =
1/3
Para integrales dobles, como por ejemplo:
Hallar
sin x
( x 2 + y 2 )dydx
>>syms y
>>int(int(x^2 + y^2,y,0,sin(x)),0,pi)
ans =
pi^2-32/9
Limites
Matlab puede tambin calcular lmites
>>syms x;
>>limit(sin(x)/x,x,0)
ans =
1
Ejemplo: Hallar los limites laterales de:
>>limit(abs(x)/x,x,0,'left')
ans =
-1
>>limit(abs(x)/x,x,0,'right')
ans =
1
Ejemplo: Hallar los limites infinitos
14
Suma y Productos
>>X=1:7
X=
1234567
>>sum(X)
ans =
28
>>prod(X)
ans =
5040
Suma Simblicas:
Ejemplo:
>>syms k n;
>>symsum(1/k - 1/(k+1),1,n)
ans =
-1/(n+1)+1
Serie de Taylor
>>syms x;
>>taylor(sin(x),x,10)
ans =
x-1/6*x^3+1/120*x^5-1/5040*x^7+1/362880*x^9
15
GRFICOS
La construccin de grficos en MATLAB es una ms de las facilidades del sistema. A
travs de comandos simples se puede obtener grficos bidimensionales o
tridimensionales con cualquier tipo de escala y coordenada. Existe en MATLAB una
vasta biblioteca de comandos grficos.
Comando Plot
Primer nivel
El primer comando que trataremos es plot. Es una instruccin muy verstil y la ms
indicada para dibujar grficas de funciones y curvas en el plano. Su sintaxis bsica es
>> plot(x,y)
que dibuja el vector y versus el vector x. Ms en concreto une los puntos (x(i), y(i))
mediante segmentos. Tomando un nmero suficientemente elevado de puntos trazamos
con ello una grfica suave, sin esquinas visibles.
Al ejecutar este comando se abre una ventana, figure en el vocabulario de Matlab,
donde se traza la correspondiente figura.
Si y es real, plot(y) toma x=1:n donde n es la longitud de y. Si, por otro lado, y es un
vector de nmeros complejos, dibuja la parte imaginaria versus la parte real. Es decir, es
equivalente a plot(real(y),imag(y)).
Ejercicio Qu hacen las siguientes lneas de cdigo?
>> clear i
>> t=linspace(0,2*pi,9);
>> plot(exp(i*t));
Segundo nivel
El comando adems acepta una serie de argumentos que, entre otras cosas, permiten
controlar el color, el tipo de marcas sobre los puntos (x(i), y(i)) y el formato de las
lneas que los unen. As, en su aspecto ms general,
plot(x,y,S)
dibuja y versus x, con S una cadena de caracteres que se construye con:
16
Ejemplo:
X=linespace(0,4,100);
Y=exp(-x).*cos(2*pi*x);
figure(1);plot(x,y,.);
figure(2);plot(x,y,r-.);
figure(3);plot(x,y,sm--);
figure(4);plot(x,y,hg);
figure(5);plot(x,y,kv:);
Comandos asociados a Plot
hold on
clf
title
xlabel
ylabel
zlabel
text
gtext
grid
Ejemplo:
figure(1) % desplegamos ventana 1
clf % borramos todo
x=linspace(0,5,100);
f=inline(exp(-n*x).*cos(x),n,x); % funciones vectorizadas
hold on % solapamiento de graficas
y=f(1/3,x);
plot(x,y,k--,linewidth,2)
y=f(1,x);
plot(x,y,r-.,linewidth,2)
y=f(3,x);
plot(x,y,:,color,[0.0,0.0,0.5],linewidth,2)
y=f(9,x);
plot(x,y,-,color,[0.0,0.3,0.0],linewidth,2)
grid on % desplegamos la red
xlim([-0.5,6]), ylim([-0.25,0.5]) % rango de los graficos
xlabel(Eje OX,fontname, Comic Sans Ms, fontsize,12)
ylabel(Eje OY,fontname, Comic Sans Ms, fontsize,12)
title(Algunas graficas de funciones,...
fontsize,16,fontname,Times new roman)
legend(exp(-x/3).*cos(x), exp(-x).*cos(x),...
exp(-3x)*cos(x), exp(-9x).*cos(x));
17
El comando Subplot
Este comando permite la visualizacin de diferentes subventanas grficas (axes) en una
misma ventana. A modo de ejemplo,
subplot(231)
define en la figure seis zonas para volcar las salidas grficas dispuestas en 23 (dos
filas, tres columnas) y accede a la primera de ellas. La numeracin es la desplegada en
la figura
Ejemplo:
x=linspace(0,2*pi,150);
subplot(321)
plot(x,sin(x),linewidth,2);
title(sin(x),fontsize,14)
axis tight
subplot(322)
plot(x,cos(x),linewidth,2);
title(cos(x),fontsize,14)
axis tight
subplot(323)
plot(x,sin(2*x),linewidth,2);
18
title(sin(2x),fontsize,14)
axis tight
subplot(324)
plot(x,cos(2*x),linewidth,2);
title(cos(2x),fontsize,14)
axis tight
subplot(325)
plot(x,sin(4*x),linewidth,2);
title(sin(4x),fontsize,14)
axis tight
subplot(326)
plot(x,cos(4*x),linewidth,2);
title(cos(4x),fontsize,14)
axis tight
19
Solucin:
Parametrizando la curva:
Grficos de superficies
Los grficos de superficie permiten obtener representaciones de figuras tridimensionales
y en especial de figuras de dos variables. El primer paso para representar una funcin de
dos variables z=f(x,y) mediante su grfico de superficie es utilizar el comando
meshgrid, que bsicamente define la matriz de puntos (X,Y) sobre los cuales se evala
la funcin de dos variables para hacer su representacin grfica. El segundo paso es
utilizar los comandos disponibles al efecto que vienen dados por el comando surf y sus
variantes:
Ejemplo:
Representa grficamente la superficie de la siguiente funcin:
z = f ( x, y ) =
sin( x 2 + y 2 )
x2 + y2
Solucin:
[X,Y]=meshgrid(-7.5:0.5:7.5,-7.5:0.5:7.5) ;
% tambin es vlido [X,Y]=meshgrid(-7.5:0.5:7.5)
20
Z = sin(sqrt(X.^2+Y.^2))./ sqrt(X.^2+Y.^2);
surf(X,Y,Z)
21
Ejercicio:
2
2
Dada la siguiente funcin: z = f ( x, y ) = ( x 3) ( y 2) para 2 x 4 ,
1 y 3.
Graficar la superficie de la funcin y sus curvas de nivel.
22