Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
1. INTRODUCCIN
Matlab es el nombre abreviado de .MATrix LABoratory. Matlab es un programa pensado para realizar clculos numricos con
vectores y matrices. Como caso particular puede trabajar con nmeros escalaras, tanto reales como complejos. Una de las
capacidades ms atractivas es la facilidad para la representacin de grficos, as como, la variedad tanto en dos como en tres
dimensiones. Adems MATLAB tiene un lenguaje propio de programacin.
2. ENTRAR EN MatLab
Si aparece el icono de MATLAB como acceso directo en la pantalla inicial, es suficiente, pulsar sobre l con el ratn. En otro caso,
ser necesario buscarlo a partir del men de inicio.
Una vez iniciado MATLAB, nos encontramos con la pantalla de la figura 1, donde se observan los diferentes mens.
Tenemos las siguientes ventanas:
a. La ventana de comandos (Command Window);
b. La ventana histrica de comandos (Command History);
c. El espacio de trabajo (Workspace);
d. El directorio actual (Current Directory).
3. BREVE RECORDATORIO DE MATRICES Y OPERACIONES BSICAS CON MatLab
Para definir una matriz en MATLAB, basta con introducir entre corchetes todos sus vectores separados por punto y coma o por
cambio de lnea. Los vectores se pueden introducir separando sus componentes por espacios en blanco o por comas.
m]
Define un vector columna, cuyos elementos son los valores a, b, c, d, m.
En resumen, las comas o espacios separan elementos de un vector fila, mientras que el punto y coma o el cambio de lnea separa las
filas. MATLAB indica un error cuando las filas tienen diferente nmero de elementos.
La sintaxis de un matriz es la siguiente:
Matriz= [a11, a12,..., a1n; a21, a22,, a2n;;am1,am2,...amn]
Matriz=[a11,a12,,a1n
a21, a22,,a2n
am1,am2,,amn]
Define una matriz de m filas y n columnas.
Ejercicio 2
D*A
x+ yt
x+y
A ^ t * D ^ -1
t.^2
Tambin se pueden crear matrices eligiendo partes de matrices ya existentes. Tenemos los siguientes comandos:
x(n): Devuelve el n-simo elemento del vector x
x([n,m,p]): Devuelve los elementos del vector x situados en las posiciones n-sima, m-sima y p-sima.
x(n:m): Devuelve los elementos del vector x situados entre el n-simo y el rn-simo, ambos inclusive
x(n:p:m): Devuelve los elementos del vector x situados entre el n-simo y el m-simo, ambos inclusive pero separados de p en
p unidades
A(m,n): Devuelve el elemento (m,n) de la matriz A (fila m y columna n
A([m, n],[p, q]): Devuelve la submatriz de A formada por la interseccin de las filas n-sima y m-sima y las columnas p-sima
y q-sima.
A(n,:): Devuelve la fila n-sima de la matriz A
A(:,p): Devuelve la columna p-sima de la matriz A
diag(A): Extrae la diagonal de la matriz A
Ejercicio 3
3. Seleccionar de la matriz D la submatriz de orden 2 x 2 contenida en las dos primeras filas y dos primeras columnas y
asignrsela a la matriz E.
4. Calcular A1,2*D2,2.
Long
short
Ejercicio 5
long e
Inversa
sin(Z)
asin(Z)
cos(Z)
acos(Z)
sec(Z)
atan(Z)
csc(Z)
asec(Z)
tan(Z)
acsc(Z)
cot(Z)
acot(Z)
sec=secante
csc=cosecante
Funciones exponenciales:
Constantes especiales
pi : nmero
i = raz cuadrada de -1
a + bi : Nmero complejo con parte real a y parte compleja b
Funciones especficas de variable numrica
abs(Z): Mdulo o valor absoluto
rem(a,b): Da el resto de la divisin entre los reales a y b
angle(Z): Argumento de un complejo
imag(Z): Parte imaginaria de un complejo
real(Z): Parte real de un complejo
conj(Z): Complejo conjugado
fix(x): Elimina la parte decimal del real x
floor(x): Redondea los decimales al menor entero ms cercano
ceil(x): Redondea los decimales al mayor entero ms cercano
round (x): El entero ms prximo al real x
Polinomios
Para representar un polinomio en Matlab es suficiente con introducir sus coeficientes en un vector fila. Por ejemplo;
si p ( x ) = x 3 + x + 1, pondremos
P = [1,0,1,1].
Los comandos ms utilizados para el manejo de polinomios son los siguientes:
polyval(p,x): Valor de p en x
roots(p): Clculo de las races
Ejercicio 6
Ejercicio 7
Asignar a z1,z2 los valores 3 + 2i y 5 + 2i y calcular
R e ( z 1 ) indica la parte real del nmero complejo.
Ejercicio 8
o simplemente
Por ejemplo, para crear la funcin
pondremos
Cuando hay ms de una variable es ms conveniente el primer mtodo, ya que as fijamos nosotros el orden de las variables en la
funcin.
Una vez definida la funcin podemos calcular el valor de la funcin en cualquier punto al igual que con las funciones
predefinidas en MATLAB.
Ejercicio 9
Definir la funcin
y calcular
Tambin podemos definir nuestra funcin de forma que se aplique a un vector o funcin punto a punto. Por ejemplo, la
funcin g ( t ) = e t2 se puede definir como
en cuyo caso sera vlida tanto si t es un escalar como si es un vector o matriz.
Ejercicio 10
Definir un vector t compuesto de todos los puntos desde 1 hasta 2 equies- paciados y separados por una
distancia de 0,1 unidades. Calcular el valor de g ( t ) .
En algunas situaciones es necesario definir funciones dependientes de un parmetro. En la funcin definida con el comando
inline esto es complicado de realizar. Por ello, vamos a ver otra forma de definir funciones en la que s es factible.
La sintaxis es la siguiente
f = @ ( x 1 , x 2 , . . . , x n ) funcin
Por ejemplo, para definir la funcin f ( x , y ) = x 2 y pondremos
f=@(x,y) x^2 *y,
o bien
f=@(x,y) x.^2.*y,
si queremos calcular el valor de vectores.
Vamos a imaginar ahora que queremos que la funcin depende de un parmetro a. Por ejemplo, f( x , y ) = a x 2 y .
En primer lugar debernos asignar el valor de a , por ejemplo,
a = 2.
Despus definimos la funcin
f=@(x,y)a*x^2*y.
Si ponemos
f(2,3)
el resultado que nos da es
24.
Si cambiarnos el valor de a debemos definir de nuevo la funcin. Si no, la funcin seguir utilizando el valor antiguo de a.
Ejercicio 11
6. GRFICOS
Matlab produce grficos de dos y tres dimensiones, as como contornos y grficos de densidad. Se pueden representar los
grficos y listar los datos, permite el control de colores, sombreados y otras caractersticas de los grficos. Los grficos producidos
por Matlab son portables a otros programas.
Veamos los comandos de representacin ms usuales.
Para representar grficamente una funcin utilizaremos el siguiente comando:
plot(X,Y): Representa el conjunto de puntos (X,Y), donde X, Y son dos vectores.
Si queremos representar la funcin y = f ( x ) en un intervalo [a, b], construiremos primero un vector que contenga una
subdivisin del intervalo con un paso pequeo:
x = a : paso : b.
En segundo lugar, calcularemos el vector y = f ( x ) . Notemos que hemos de escribir la funcin f de forma que se pueda calcular en
vectores. Por ejemplo, si y = x2 pondremos
y = x.^2.
Notemos tambin que las funciones estndar de MATLAB (cos, sin, exp, log, etc.) funcionan tanto con escalares como con
vectores.
Ejercicio 12
Por ejemplo, si queremos representar la funcin y= x2 en el intervalo [ - 2 , 2 ] , efectuamos los siguientes pasos:
plot(X,Y,'S'): La misma grfica que plot(X,Y) con la opciones definidas en S. Usualmente, S se compone de dos caracteres
entre comillas simples, el primero de los cuales fija el color de la lnea del grfico, mientras que el segundo fija el carcter a usar en
el graficado.
Algunos de los valores posibles de colores y caracteres son, respectivamente, los siguientes:
Colores
y amarillo
m magenta
r rojo
c cyan
g verde
b azul
w blanco
k negro
. puntos
x x-marcas
+ signo ms
o crculos
- slidos
: lneas a puntos
Caracteres
* estrellas
_lneas
continuas
-.Guiones y puntos
Ejercicio 13
Ejercicio 14
Representar grficamente, con distintos colores y caracteres, las siguientes funciones en el mismo grfico en el
intervalo [-5,5]:
f ( x ) = e-x
g(x)= x3-x-1
Ejercicio 16
Sin cerrar el grfico anterior, teclear figure( 2). Crear la grfica de h ( x ) = x4 en el intervalo [-5,5].
Ejercicio 17
Teclear figure( 1 ) y aadir un ttulo a la primera grfica, los nombres de los ejes x, e y y el texto
f ( x ) ( r e s p . g ( x ) ) en un punto prximo a las grficas de la funciones.
Ejercicio 18
Ejercicio 19
Volver a la primera figura y borrar el texto f ( x ) ( p a r a ello ir al grfico, pinchar con el ratn en el texto a
borrar y usar la tecla supr).
A continuacin se presentan comandos que permiten manipular los ejes de un grfico, la colocacin del mismo dentro de la
pantalla, su apariencia, su presentacin desde distintos puntos de vista, etc.
Axis([xmin xmax ymin ymax]): Sita los valores mximo y mnimo para los ejes X e Y en el grfico actual
axis('auto'): Sita los ejes en la escala automtica por defecto (la dada por xmin=min(x), xmax=max(x) e y libre)
axis(axis): Congela el escalado de ejes en los lmites corrientes, de tal forma que al situar otro grfico sobre los mismo ejes (con
hold en on), la escala no cambie.
axis('equal'): Sita el mismo factor de escala para ambos ejes
axis('off'): Elimina las etiquetas y marcas de los ejes y las rejillas, manteniendo el ttulo del grfico y los textos situados en l
con text y gtext
axis('on'): Coloca de nuevo las etiquetas, marcas y rejillas de los ejes
Ejercicio 20
Hacer activa la figura 1 y cambiar el tamao de los ejes. Por ejemplo, [-10,10] x [-5,5].
Ejercicio 21
Teclear axis('off'), figure(gcf) y ver qu pasa. Restituir despus las etiquetas y marcas.
Ejercicio 22
Finalmente, podemos dividir una ventana grfica en m particiones horizontales y n verticales para colocar mltiples grficas en
ella:
subplot(m,n,p): Divide la ventana grfica en m x n subventanas y coloca el grfico corriente en la ventana p-sima, empezando
a contar por la parte superior izquierda y de izquierda a derecha hasta acabar la lnea, para pasar a la siguiente
Ejercicio 23
S e a n x , y los vectores creados en el Ejercicio 12. Teclear subplot( l , 3,1), plot(x,y) Qu ocurre?
Ejercicio 24
Dibujar en las dos particiones restantes las funciones f ( x ) , g ( x ) del ejercicio 15.
Ejercicio 25
A continuacin vamos a representar grficamente una funcin de dos variables. Obviamente necesitamos un grfico en tres
dimensiones. Utilizaremos el comando e z s u r f . La sintaxis es:
ezsur f(f(x,y),[x 1x2] ,[y1y2] )
Ejercicio 26
Dibujar la grfica del paraboloide z = 1 - x2 - y2 e n ( x , y ) [-2, 2] x [-3, 3]. Ponerle un ttulo a la grfica.
Aadirle las etiquetas de los ejes y escribir el texto f ( x , y ) cerca del dibujo.
Asimismo, el comando e z s u r f permite dibujar superficies parametrizadas. Por ejemplo, vamos a dibujar la esfera de radio 1.
La parametrizacin d esta esfera es
Tecleamos el comando
e z s u r f ( ' s i n ( u ) * c o s ( v ) ' , ' s i n ( u ) * sin(v)',' cos(u)',[0 pi 0 2 * pi]);
Ejercicio 27
Fijar los ejes x [-2,2], y [-2,2] ; z [0,30], y dibujar en el mismo grfico junto a la hlice la curva
r(t)=(t,t4,t).
En el ltimo ejercicio poner el comando hold on despus de dibujar el primer grfico, ya que si ponemos primero hold on,
entonces se generar un grfico bidimensional, y ya no podremos obtener la grfica en tres dimensiones.
Vamos a dibujar de dos maneras varias soluciones de la ecuacin y' = 2ty en el intervalo [-2,2],
hold on
axis([-2,2,-20,25])
ode45(inline(' 2 * y * t' , ' t' , ' y' ),[-2,2],10)
ode45(inline(' 2 * y * t' , ' t' , ' y' ),[-2,2],-10)
ode45(inline(' 2 * y * t' , ' t' , ' y' ),[-2,2],15)
ode45(inline(' 2 * y * t' , ' t' , ' y' ),[-2,2],-15)
3. Dibujar en un grfico distintas soluciones de la ecuacin y' = - y + e - t en el intervalo [0,10]. Elegir un tamao adecuado
de los ejes. A qu convergen las soluciones cuando t -> + ?
Notemos que al usar el comando ode45 Matlab escoge el valor del paso h. Podemos saber cul este paso imprimiendo el archivo
de tiempos t y viendo la diferencia entre dos valores consecutivos. Sin embargo, hemos de tener en cuenta que Matlab no siempre
coge un tamao de paso fijo, sino que este valor puede variar segn el momento del tiempo.
Ejercicio 32
Ejecutar [t, y] = ode45(inline('2 * y * t ' , ' t ' , ' y ' ) , [-2,2], 10) y ver cul es el paso h utilizado.
Ejercicio 33
Ejecutar [t,y] = ode45(inline( l / y ' , ' t ' , ' y ' ) , [-2, 2], 1) y ver que el tamao de h no es fijo.
En muchas ocasiones hemos de resolver una ecuacin diferencial que depende de uno o varios parmetros.
Si queremos resolver la ecuacin diferencial
y'= at2y
usando el comando ode45 pondremos
ode45(@(t,y) a * t^2 * y, [0,T],yo).
En este caso no podremos utilizar el comando inline, ya que no permite el uso de parmetros.
Ejercicio 34
Dada la ecuacin y' = a t y + b en el intervalo [0, 2] con la condicin inicial y(0) = 1:
1. Resolver la ecuacin para (a, b) = (-1, 2), (a, b) = (2, - 1), (a, b) = ( 0 , 2 ) .
2. Dibujar en el mismo grfico y con distintos colores las tres soluciones.
10
En el primer caso se obtiene la solucin general, mientras que en el segundo la solucin del problema de Cauchy. Para escribir la
derivada
en la ecuacin utilizaremos la expresin
Du. Por defecto, la variable independiente es t, pero se puede usar cualquier otra variable de la siguiente forma:
dsolve('ecuacin', ' var')
o
dsolve(' ecuacin',' condicin inicial',' v a r ' ) .
Por ejemplo, para resolver la ecuacin
Ponemos
u = dsolve(' Du = u')
y se obtiene
u = C1 * exp(t).
O bien, para utilizar x como variable independiente
dsolve(' Du = u','x')
El resultado es
C1 * exp(x).
En este ltimo caso, al no poner u = " el resultado no se ha asignado a ninguna variable. Si resolvemos el problema de Cauchy
pondremos
u = dsolve( ' Du = u ' , ' u ( 0 ) = 1 ' ) ,
obteniendo
u = exp( t ) .
El resultado u es una variable de caracteres que se puede asignar a una funcin:
f = inline(u).
A partir de la funcin f se pueden calcular los valores de la solucin o dibujarla con el comando plot.
Ejercicio 35
1.
2.
3.
4.
Dada la ecuacin
Las ecuaciones de orden superior se resuelven de manera similar. Por ejemplo, la sintaxis en una ecuacin de segundo orden
sera:
dsolve(' ecuacin' ),
dsolve(' ecuacin',' v a r ' ) ,
dsolve('ecuacin',' condicin inicial_1',' condicin inicial_2')
o
dsolve('ecuacin',' condicin inicial_1 ', ' condicin inicial_2',' var')
La sintaxis de las derivadas es la siguiente:
11
y " - 2 y + y = et, y ( 0 ) = 1 , y ( 0 ) = 0 .
12