Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Matlab Curso Agosto de 2008 1218461129833863 9
Matlab Curso Agosto de 2008 1218461129833863 9
Temario
1. 2. 3. 4. 5. 6. 7. 8. Generalidades. Manipulacin de matrices. Grficas en 2D y 3D. Programacin. Mtodos numricos. Matemticas simblicas. Creacin de GUIs Simulink.
1. Generalidades
Desarrollado a finales de los setenta (Universidades de New Mexico y Stanford) En la actualidad ampliamente difundido en la Universidad y la Industria. Ncleo bsico del programa: Clculo numrico basado en matrices. Matlab = Matrix Laboratory. Mdulos adicionales. Simulink, MatLab Symbolic Toolbox (ncleo del programa Maple), etc.
2. Manipulacin de Matrices
Una sencilla operacin con A es hallar su matriz traspuesta. En MATLAB el apstrofo (') es el smbolo de trasposicin matricial. Para calcular A' (traspuesta de A) basta teclear lo siguiente >> A' ans = 1 4 7 2 5 8 3 6 9
La variable ans puede ser utilizada como operando en la siguiente expresin que se introduzca. Tambin podra haberse asignado el resultado a otra matriz llamada B: >> B=A' B = 1 4 7 2 5 8 3 6 9
Ahora ya estn definidas las matrices A y B, y es posible seguir operando con ellas. Por ejemplo, se puede hacer el producto B*A (deber resultar una matriz simtrica): >> B*A ans = 66 78 78 93 90 108
90 108 126
En MATLAB se accede a los elementos de un vector poniendo el ndice entre parntesis (por ejemplo x(3) x(i)). Los elementos de las matrices se acceden poniendo los dos ndices entre parntesis, separados por una coma (por ejemplo A(1,2) A(i,j)). Las matrices se almacenan por columnas (aunque se introduzcan por filas, como se ha dicho antes), y teniendo en cuenta esto puede accederse a cualquier elemento de una matriz con un slo subndice. Por ejemplo, si A es una matriz (3x3) se obtiene el mismo valor escribiendo A(1,2) Que escribiendo A(4).
Invertir una matriz es tan fcil como trasponerla. A continuacin se va a definir una nueva matriz A -no singular- en la forma: >> A=[1 4 -3; 2 1 5; -2 5 3] A = 1 4 -3 2 1 5 -2 5 3
Ahora se va a calcular la inversa de A y el resultado se asignar a B. Para ello basta hacer uso de la funcin inv( ) >>B=inv(A) B = 0.1803 0.2213 0.1311 0.0246 -0.0984 0.1066
Para comprobar que este resultado es correcto basta con multiplicar A por B >> B*A ans = 1.0000 0.0000 0.0000
De forma anloga a las matrices, es posible definir un vector fila x en la forma siguiente (si los tres nmeros estn separados por blancos o comas, el resultado ser un vector fila): >> x=[10 20 30] % vector fila x = 10 20 30 MATLAB considera comentarios todo lo que va desde el carcter tanto por ciento (%) hasta el final de la lnea.
Si los nmeros estn separados por intros o puntos y coma (;) se obtendr un vector columna: >> y=[11; 12; 13] % vector columna y = 11 12 13
MATLAB tiene en cuenta la diferencia entre vectores fila y vectores columna. Por ejemplo, si se intenta sumar los vectores x e y se obtendr el siguiente mensaje de error: >> x+y ??? Error using ==> + Matrix dimensions must agree.
Estas dificultades desaparecen si se suma x con el vector traspuesto de y: >> x+y' ans = 21 32 43
Operadores
Tipos de datos: MATLAB es un programa preparado para trabajar con vectores y matrices. Como caso particular tambin trabaja con variables escalares (matrices de dimensin 1). MATLAB trabaja siempre en doble precisin, es decir guardando cada dato en 8 bytes, con unas 15 cifras decimales exactas. Ya se ver ms adelante que tambin puede trabajar con cadenas de caracteres (strings) y, desde la versin 5.0, tambin con otros tipos de datos: Matrices de ms dos dimensiones, matrices dispersas, vectores y matrices de celdas, estructuras y clases y objetos.
Otras formas de definir matrices: Existen en MATLAB varias funciones orientadas a definir con gran facilidad matrices de tipos particulares. Algunas de estas funciones son las siguientes: eye(4) zeros(3,5) zeros(4) ones(3) ones(2,4) forma la matriz unidad de tamao (4x4) forma una matriz de ceros de tamao (3x5) dem de tamao (4x4) forma una matriz de unos de tamao (3x3) idem de tamao (2x4)
linspace(x1,x2,n)
genera un vector con n valores igualmente espaciados entre x1 y x2 logspace(d1,d2,n) genera un vector con n valores espaciados logartmicamente entre 10^d1 y 10^d2. Si d2 es pi6, los puntos se generan entre 10^d1 y pi rand(3) forma una matriz de nmeros aleatorios entre 0 y 1, con distribucin uniforme, de tamao (3x3) rand(2,5) idem de tamao (2x5)
randn(4)
magic(4)
hilb(5)
forma una matriz de nmeros aleatorios de tamao (4x4), con distribucin normal, de valor medio 0 y varianza crea una matriz (4x4) con los nmeros 1, 2, ... 4*4, con la propiedad de que todas las filas y columnas suman lo mismo crea una matriz de Hilbert de tamao (5x5). La matriz de Hilbert es una matriz cuyos elementos (i,j) responden a la expresin (1/(i+j-1)). Esta es una matriz especialmente difcil de manejar por los grandes errores numricos a los que conduce
A continuacin se describen algunas de las funciones que crean una nueva matriz a partir de otra o de otras, comenzando por dos funciones auxiliares: [m,n]=size(A) devuelve el nmero de filas y de columnas de la matriz A. Si la matriz es cuadrada basta recoger el primer valor de retorno N=length(x) calcula el nmero de elementos de un vector x
zeros(size(A)) forma una matriz de ceros del mismo tamao que una matriz A previamente creada ones(size(A)) dem con unos A=diag(x) forma una matriz diagonal A cuyos elementos diagonales son los elementos de un vector ya existente x x=diag(A) forma un vector x a partir de los elementos de la diagonal de una matriz ya existente A
diag(diag(A)) crea una matriz diagonal a partir de la diagonal de la matriz A blkdiag(A,B) crea una matriz diagonal de submatrices a partir de las matrices que se le pasan como argumentos triu(A) forma una matriz triangular superior a partir de una matriz A (no tiene por qu ser cuadrada). tril(A) dem con una matriz triangular inferior
Defnase un vector x con el siguiente comando: >> x=1:10 x = 1 2 3 4 5 6 7 8 9 10 En cierta forma se podra decir que el operador (:) representa un rango: en este caso, los nmeros enteros entre el 1 y el 10.
Por defecto el incremento es 1, pero este operador puede tambin utilizarse con otros valores enteros y reales, positivos o negativos. En este caso el incremento va entre el valor inferior y el superior. >> x=1:2:10 x= 13579 >> x=10:-1:1 x= 10 9 8 7 6 5 4 3 2 1
Operadores relacionales
Descripcin Menor que Mayor que Menor o igual que Mayor o igual que Igual que Distinto que
Operadores lgicos
Operador & | ~
Descripcin Seno Coseno Tangente Arco seno Arco coseno Arco Tangente Seno hiperblico
Descripcin Coseno hiperblico Tangente hiperblico Arco seno hip. Arco coseno hip. Arco tangente hip. Logaritmo natural Logaritmo decimal
Descripcin funcin exponencial raz cuadrada devuelve -1 si <0, 0 si =0 y 1 si >0. resto de la divisin similar a rem redondeo hacia el entero ms prximo redondea hacia el entero ms prximo a0
Descripcin valor entero ms prximo hacia - valor entero ms prximo hacia + partes reales partes imaginarias valores absolutos ngulos de fase
Funcin [xm,im]=max(x)
Descripcin mximo elemento de un vector. Devuelve el valor mximo xm y la posicin que ocupa im mnimo elemento de un vector. Devuelve el valor mnimo y la posicin que ocupa suma de los elementos de un vector
min(x)
sum(x)
Descripcin devuelve el vector suma acumulativa de los elementos de un vector valor medio de los elementos de un vector desviacin tpica producto de los elementos de un vector
Descripcin devuelve el vector producto acumulativo de los elementos de un vector ordenacin de menor a mayor de los elementos de un vector x. Devuelve el vector ordenado y, y un vector i con las posiciones iniciales en x de los elementos en el vector ordenado y.
Descripcin calcula la traspuesta (conjugada) de la matriz A calcula la traspuesta (sin conjugar) de la matriz A devuelve un vector v con los coeficientes del polinomio caracterstico de la matriz cuadrada A
Descripcin devuelve la traza t (suma de los elementos de la diagonal) de una matriz cuadrada A devuelve el nmero de filas m y de columnas n de una matriz rectangular A devuelve el tamao de una matriz cuadrada A devuelve el nmero de filas de A devuelve el nmero de columnas de A
4. PROGRAMACIN DE MATLAB
Funciones M - Files
SENTENCIA IF
SENTENCIA SWITCH
SENTENCIA FOR
Ejemplo
factorial.m
SENTENCIA WHILE
SENTENCIA BREAK
La sentencia break hace que se termine la ejecucin del bucle ms interno de los que comprenden a dicha sentencia.
SENTENCIA CONTINUE
La sentencia continue hace que se pase inmediatamente a la siguiente iteracin del bucle for o while, saltando todas las sentencias que hay entre el continue y el fin del bucle en la iteracin actual.
En el caso de que durante la ejecucin del bloque sentencias1 se produzca un error, el control de la ejecucin se transfiere al bloque sentencias2. Si la ejecucin transcurriera normalmente, sentencias2 no se ejecutara nunca.
FUNCIN INPUT
La funcin input permite imprimir un mensaje en la lnea de comandos de MATLAB y recuperar como valor de retorno un valor numrico o el resultado de una expresin tecleada por el usuario. >> n = input( Teclee el nmero de ecuaciones ')
FUNCIN DISP
La funcin disp permite imprimir en pantalla un mensaje de texto o el valor de una matriz, pero sin imprimir su nombre.
>> disp('El programa ha terminado') >> A=rand(4,4) >> disp(A)
FUNCION FPRINTF
La cadena de control contiene los formatos de escritura. Por ejemplo: vol = 2.0393938; fprintf('El volumen de la esfera es: %12.5f \ n',vol); El volumen de la esfera es: 2.03939
3. GRFICOS EN 2D y 3D
Funcin plot()
Descripcin crea un grfico a partir de vectores y/o columnas de matrices, con escalas lineales sobre ambos ejes dem con escala logartmica en ambos ejes dem con escala lineal en el eje de ordenadas y logartmica en el eje de abscisas dem con escala lineal en el eje de abscisas y logartmica en el eje de ordenadas
Descripcin aade un ttulo al dibujo aade una etiqueta al eje de abscisas. Con xlabel off desaparece aade una etiqueta al eje de ordenadas. Con ylabel off desaparece
Funcin
Descripcin
text(x,y,'texto')
introduce 'texto' en el lugar especificado por las coordenadas x e y. Si x e y son vectores, el texto se repite por cada par de elementos. Si texto es tambin un vector de cadenas de texto de la misma dimensin, cada elemento se escribe en las coordenadas correspondientes
Funcin gtext('texto')
Descripcin introduce texto con ayuda del ratn: el cursor cambia de forma y se espera un clic para introducir el texto en esa posicin activa la inclusin de una cuadrcula en el dibujo. Con grid off desaparece la cuadrcula
grid
Se utilizan para ello los comandos hold on y hold off. El primero de ellos hace que los grficos sucesivos respeten los que ya se han dibujado en la figura (es posible que haya que modificar la escala de los ejes); el comando hold off deshace el efecto de hold on.
COMANDO subplot()
Una ventana grfica se puede dividir en m particiones horizontales y n verticales, con objeto de representar mltiples grficos en ella. Cada una de estas subventanas tiene sus propios ejes, aunque otras propiedades son comunes a toda la figura. La forma general de este comando es: subplot(m,n,i) donde m y n son el nmero de subdivisiones en filas y columnas, e i es la subdivisin que se convierte en activa.
FUNCIN line()
La funcin line() permite dibujar una o ms lneas que unen los puntos cuyas coordenadas se pasan como argumentos. Para dibujar un segmento de color verde entre dos puntos, esta funcin se llamara de la siguiente manera: line([xini, xend], [yini, yend],[zini, zend],color,g)
Ejemplo:
y = sin( x ) e
x2
Ejemplo:
y1 = sin( x ) x y 2 e = y3 = sin( x )e x
Ejemplo:
La funcin plot3 es anloga a su homloga bidimensional plot. Su forma ms sencilla es la siguiente: >> plot3(x,y,z) que dibuja una lnea que une los puntos (x(1), y(1), z(1)), (x(2), y(2), z(2)), etc. y la proyecta sobre un plano para poderla representar en la pantalla.
Ejemplo
x = cos( t ) y = sin( t ) z = t
Ejemplo:
z = sin( x + y )e
2 2
( x 2 + y2 )
Se puede compartir datos entre callbacks almacenando los datos en la estructura handles. Ejemplo. Para almacenar los datos contenidos en el vector X en la estructura handles: 1. Seleccionar un nombre para el campo de la estructura, handles.nombre 2. Asignar X a handles.nombre handles.nombre = X; 3. Guardar la estructura handles con guidata guidata(hobject,handles)
5. Mtodos Numricos
5.1 Ecuaciones
fzero(@f,a) Encuentra el cero ms cercano al valor a de la funcin f. roots(c) Encuentra todos los ceros de un polinomio cuyos coeficientes son almacenados en el vector c.
a. b.
f ( x ) = x 4 + 3x 2 5x + 3 f(x) = 10x + xe x +3
Solucin:
Ejemplo
mifuncion.m
En la ventana de comandos:
5.2 Integracin
quad(@f, a, b) Integra por cuadraturas la funcin f, desde a hasta b.
Ejemplo
Tiempo
Variables de salida
Lorentz.m
En la ventana de comandos:
6. Matemticas simblicas
collect(S,v)
expand(S)
factor(S)
Intenta factorizar s.
simple(S)
Simplifica la forma de S a una forma ms corta, si es posible. Simplifica S usando las reglas de simplificacin de de Maple
simplify(S)
Ejemplos
6.2 Lmites
Ejemplo
1. Calcular lim
x 5
(x 5)
( x + 4) 3
Ejemplos
1. Calcular d x 3 + 3sen ( x 1 / 3 ) 5x +4 dx 5e
2. Calcular
d2 dx 2
sen ( x ) x 1 e
3. Calcular
x+y x + 4z x y 5 + y
4. Calcular
(5 + 3ax + e )dx
ax
5. Calcular
(3x e )dx
b 3 4 x +5 a
6. Calcular
(3 x y z e
0 0 0
1 z y+z
4 y + 5+ x + z
) dx dy dz
2. Resolver
Ejemplo:
d2y Fo 2 + y = cos( o t ) o 2 m dt
Descripcin L = laplace(F) es la transformada de Laplace de la funcin F, cuya variable por omisin es t. La transformada de Laplace es una funcin de t, y retorna como respuesta una funcin de s.
F = F(t ) L = L(s )
Por definicin:
L(s ) = F(t )e st dt
0
L=laplace(F,w,z) obtiene L como una funcin de z, dado F en funcin de w, en lugar de las variables por omisin s y t, respectivamente.
L(z ) = F( w )e zw dw
0
Ejemplo:
f ( t ) = e at 1 L(f ) = e e dt = s+a 0
at st
En MATLAB:
7. Simulink
Subsistema: Ecuacin 1
Subsistema: Ecuacin 2
Subsistema: Ecuacin 3
Subsistema: Ecuacin 4