Vous êtes sur la page 1sur 127

I Congreso Nacional de Estudiantes y II Jornadas de Ingeniera Qumica

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

>> A=[1 2 3; 4 5 6; 7 8 9] La respuesta del programa es la siguiente: A= 1 2 3 4 5 6 7 8 9

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

0.0000 0.0000 1.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

Formacin de una matriz a partir de otras


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

OPERADOR DOS PUNTOS (:)


Defnase un vector x con el siguiente comando: >> x=1:10 x= 1 2 3 4 5 6 7 8 9 10 Se podra decir que el operador (:) representa un rango: en este caso, los nmeros enteros entre el 1 y el 10.

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

Operador < > <= >= == ~=

Descripcin Menor que Mayor que Menor o igual que Mayor o igual que Igual que Distinto que

Operadores lgicos

Operador & | ~

Descripcin and or negacin lgica

Funciones matemticas elementales que operan de modo escalar

Funcin sin(x) cos(x) tan(x) asin(x) acos(x) atan(x) sinh(x)

Descripcin Seno Coseno Tangente Arco seno Arco coseno Arco Tangente Seno hiperblico

Funcin cosh(x) tanh(x) asinh(x) acosh(x) atanh(x) log(x) log10(x)

Descripcin Coseno hiperblico Tangente hiperblico Arco seno hip. Arco coseno hip. Arco tangente hip. Logaritmo natural Logaritmo decimal

Funcin exp(x) sqrt(x) sign(x) rem(x,y) mod(x,y) round(x) fix(x)

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

Funcin floor(x) ceil(x) real(x) imag(x) abs(x) angle(x)

Descripcin valor entero ms prximo hacia - valor entero ms prximo hacia + partes reales partes imaginarias valores absolutos ngulos de fase

Funciones que actan sobre vectores

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)

Funcin cumsum(x) mean(x) std(x) prod(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

Funcin cumprod(x) [y,i]=sort(x)

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.

Funciones que actan sobre matrices

Funcin B = A' B = A.' v = poly(A)

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

Funcin t = trace(A) [m,n] = size(A) n = size(A) nf = size(A,1) nc = size(A,2)

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

Existe tambin la bifurcacin mltiple,

En una sola lnea

Sentencia switchcaseotherwiseend

Sentencia forend

Ejemplo

factorial.m

Sentencia whileend

En una sola lnea

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.

Sentencia try...catch...end La construccin try...catch...end permite gestionar los errores.

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

Funciones grficas 2D elementales

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

loglog() semilogx() semilogy()

Funcin title('ttulo') xlabel('tal') ylabel('cual')

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

Aadir lneas a un grfico ya existente


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.

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.

Control de los ejes


axis([xmin, xmax, ymin, ymax]) axis('ij') utiliza ejes de pantalla, con el origen en la esquina superior izda. y el eje j en direccin vertical descendente axis('xy') utiliza ejes cartesianos normales, con el origen en la esquina inferior izda. y el eje y vertical ascendente axis(equal') el escalado es igual en ambos ejes axis(square') la ventana ser cuadrada axis(image') la ventana tendr las proporciones de la imagen que se desea representar en ella (por ejemplo la de una imagen bitmap que se desee importar) y el escalado de los ejes ser coherente con dicha imagen axis(normal') elimina las restricciones introducidas por 'equal' y 'square' axis('off') elimina las etiquetas, los nmeros y los ejes axis(on') restituye las etiquetas, los nmeros y los ejes

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:

si sin(x) 0 0, f (x) = sin( x ), si sin(x) > 0

DIBUJO DE LNEAS: Funcin plot3()


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

DIBUJO DE MALLADOS: Funciones: meshgrid(), mesh(), surf()


meshgrid Ejemplo

Ejemplo:

z = sin( x + y )e
2 2

( x 2 + y2 )

DIBUJO DE CURVAS DE NIVEL: FUNCIONES contour, contour3, surf.

Siguiendo con el ejemplo anterior

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.

Ejemplo. Encontrar los ceros de f(x),

a. b.

f ( x ) = x 4 + 3x 2 5x + 3 f(x) = 10x + xe x +3

Solucin:

Sistemas de ecuaciones no lineales. Funcin fsolve()

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

5.3 Diferenciacin numrica


diff(x) Si x = [x(1) x(2) x(n)] entonces diff(x) = [x(2)-x(1) x(3)-x(2) x(n)-x(n-1)]

5.4 EDOs de primer orden


[ t , Y ] = ode45( @odefun , tspan , y0 )

Tiempo

Intervalo de tiempo Condiciones iniciales

Variables de salida

Ejemplo Resolver el sistema de Lorentz desde t=0 hasta t=10


dx = 10( y x ), dt dy = xz + 28x y, dt dz 8 = xy z dt 3 x(0) = 1 y(0) = 0 z(0) = 1

Lorentz.m

En la ventana de comandos:

6. Clculo simblico.

6.1 lgebra simblica


collect(S) collect(S,v) expand(S) factor(S) simple(S) simplify(S)
Agrupa trminos semejantes de s.

Agrupa trminos semejantes de s respecto a la variable independiente v

Realiza una expansin de s

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

6.3 Derivacin e integracin

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

6.4 Series de Taylor

6.5 Ecuaciones diferenciales ordinarias (EDOs)


La funcin dsolve permite resolver simblicamente distintos tipos de EDOs Sintaxis: r = dsolve('eq1,eq2,...', 'cond1,cond2,...', 'v') r = dsolve('eq1','eq2',...,'cond1','cond2',...,'v')

Ejemplos:

1. Resolver

dy + 5xy = 0 dx

Variable independiente

dy d2y 2 2. Resolver + 3 5 y = 3 x + 4x 3 2 dx dx C.I. : y(0) = 1, y' (0) = 2

6.6 Transformadas Integrales


Transformada de Laplace Sintaxis: laplace(F) laplace(F,t) laplace(F,w,z)

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:

Transformada inversa de Laplace Sintaxis: F = ilaplace(L) F = ilaplace(L,y) F = ilaplace(L,y,x)

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

Ejercicio 1. Proceso trmico


Ti (C) 25C 20C t (s) 0s Ti (C) 25C 23C 20C 0s 30s 0s 20s f = 0.1 m3/s Ti(t), C 20C t (s) T (C)

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

(fC T (t ) fC T(t ))dt


p i p 0

Ejercicio 2. Reactor Qumico

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

f ( t )C Ai ( t ) f ( t )C A ( t ) VrA ( t )... dC A ( t ) ... = V , [1 ecuacin, 2 incognitas (rA , C A )] dt


E 2 rA ( t ) = k 0 exp RT ( t ) C A (t ) , [2 ecuaciones,3 incognitas(T)] f (t)C p Ti (t ) - UA(T(t ) Tc (t )) - f(t)C p T(t ) - VrA H r ... [3 ecuaciones,4 incognitas(Tc)]

dT(t ) ... = VC v dt

dTc (t ) ... = Vc c C vc , [4 ecuaciones,4 incognitas] dt

f c (t) c C pc Tci (t ) + UA(T(t ) Tc (t )) - f c (t) c C pc Tc (t )...

Subsistema: Ecuacin 1

Subsistema: Ecuacin 2

Subsistema: Ecuacin 3

Subsistema: Ecuacin 4

Puesta en marcha de un reactor no isotrmico

Vous aimerez peut-être aussi