Académique Documents
Professionnel Documents
Culture Documents
MATLAB
Temario
1. 2. 3. 4. 5. 6. 7. Generalidades. Manipulacin de matrices. Grficas en 2D y 3D. Programacin. Mtodos numricos. Clculo simblico. 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 90 78 93 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.1885 0.1311 0.0246 0.0902 -0.0984 0.1066 0.0574
Para comprobar que este resultado es correcto basta con multiplicar A por B >> B*A ans = 1.0000 0.0000 0.0000 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
[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
Por omisin el incremento es 1, pero este operador se puede usar 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 ifend
Sentencia switchcaseotherwiseend
Sentencia forend
Ejemplo
factorial.m
Sentencia whileend
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.
Funcin disp() La funcin disp permite imprimir en pantalla un mensaje de texto o el valor de una matriz, pero sin imprimir su nombre.
Funcin fprintf() Permite tener un control total del formato de salida. Por ejemplo:
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
Funcin 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:
Ejemplo
x = cos( t ) y = sin( t ) z = t
Ejemplo:
z = sin( x + y )e
2 2
( x 2 + y2 )
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. Clculo simblico.
Intenta factorizar s.
Simplifica la forma de S a una forma ms corta, si es posible. Simplifica S usando las reglas de simplificacin de de Maple
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
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
Ejemplos:
1. Resolver
dy + 5xy = 0 dx
Variable independiente
Descripcin L = laplace(F) es la transformada de Laplace de la funcin F, cuya variable por omisin es t. La transformada de Laplace es aplicada a 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:
Descripcin L = laplace(F) es la transformada inversa de Laplace del objeto simblico F, cuya variable independiente por omisin es s. La transformada inversa de Laplace es aplicada a una funcin de s, y retorna como respuesta una funcin de t.
L = L(s ) F = F(t )
Por definicin:
F(t ) =
c + i
c i
st ( ) L s e ds
L = ilaplace(L,y,x) obtiene L como una funcin de x, dado F en funcin de y, en lugar de las variables por omisin s y t, respectivamente.
L(x ) = F( y)e xy dy
0
Ejemplo:
f (s) =
1
(s + a )5
1 4 at 1 c + i st = t e f ( s ) e ds L (f ) = c i 24 2i
En MATLAB:
7. Simulink
H = 1.5 m
Agua
f, m3/s T(t), C
t (s) D = 1.13 m
Balance de materia
dm(t ) f f = dt dm(t ) =0 dt
Balance de energa
dT(t ) fC p Ti ( t ) fC p T(t ) = VC v dt
T( t ) =
1 VC v
AB
Informacin del proceso V=0.38 m3 E=64720 kJ/kgmol =880 kg/m3 Hr=-27900 kJ/kgmol A=3.34 m2 Cpc=4.18 kJ/(kgK) k0=9.36 E(07) m3/(kgmolK) R=8.314 kJ/(kgmolK) Cp=3.68 kJ/(kgK) U=0.426 kJ/(m2C) c=1000 kg/m3 Vc=0.044 m3
Valores de estado estacionario: cAi=9.57 kgmol/m3 Tc=334.8 K cA(t)=3.31 kgmol/m3 Tci(t)=300 K Ti(t)=352.7 K f=0.0021 m3/s T(t)=377.17 K fc(t)=0.000414 m3/s
dT(t ) ... = VC v dt
Subsistema: Ecuacin 1
Subsistema: Ecuacin 2
Subsistema: Ecuacin 3
Subsistema: Ecuacin 4