curso_matlab
Short Description
Download curso_matlab...
Description
INSTITUTO TECNOLÓGICO SUPERIOR DE IRAPUATO
CURSO DE MATLAB PARA INGENIERÍA BIOQUÍMICA
JOSÉ LUIS SOTO ALCOCER MARZO DE 2009
I INTRODUCCIÓN 1.1 Definición y usos Matlab es un lenguaje de computación técnica de alto desempeño, que emplea la computación donde los problemas y las soluciones son expresados en una notación matemática familiar. Los usos típicos de Matlab incluyen: a) Computación y matemáticas, b) Desarrollo de algoritmos, c) Manejo de datos, d) Modelación, simulación y desarrollo de prototipos, e) Análisis de datos, exploración y visualización, f) Gráficos de ciencia e ingeniería, g) Desarrollo de aplicaciones, que incluyen construcción de interfaces para graficación.
1.2 Entorno de Matlab El despliegue de inicio de la pantalla de Matlab muestra:
Barra de menús
Barra estándar
Apuntador y cursor Recuadro de directorio actual
Ventana de directorio actual
Ventana de comandos Ventana de historial de comandos
Figura 1.1 Despliegue de inicio de Matlab
1
1.3 Variables, números y operadores en Matlab Variables: A diferencia de otros lenguajes de programación, matlab no requiere de declaración de variables o dimensionamiento de matrices, pues las crea automáticamente cuando encuentra el nombre por primera vez, debe recalcarse que distingue entre asignación de variables con letras minúsculas y letras mayúsculas, ejemplo:
>> metodo=5 >> METODO=23
Si se desea que Matlab no despliegue valores de variables o matrices, es necesario terminar cada sentencia con punto y coma, ejemplo:
>>concentracion=100;
Números: Para el almacenamiento de números internamente se usa un formato de precisión de aproximadamente 16 dígitos en un intervalo entre 10-308 a 10308, denominado “long”. Para expresar la escala de la potencia 10 se usa la letra e o E; los números imaginarios deberán acompañarse ya sea de la letra i o j, algunos ejemplos de números en Matlab son:
5
2.7183
1.55E15
2.23E-12
6.67j
Operadores: Operadores aritméticos suma, +; resta, -; multiplicación, *; división, /; recíproco, \; potencia ^
Operadores de elemento a elemento suma,.+; resta, .- ; multiplicación, .*, división, ./; recíproco, .\; potencia .^
Operadores lógicos and, or, not, xor, any, all 2
1.4 Funciones internas Al igual que cualquier paquete matemático se cuenta con funciones matemáticas del tipo trigonométrico, exponencial, complejas y redondeo, las cuales se citan a continuación en la tabla siguiente:
Tabla 1.1 Funciones matemáticas Trigonométricas sin
seno
sinh
seno hiperbólico
asin
arco seno
asinh
arco seno hiperbólico
cos
coseno
cosh
coseno hiperbólico
acosh arco coseno hiperbólico tan
tangente
tanh
tangente hiperbólico
atan
arco tangente
atan2
arco tangente en los 4 cuadrantes
atanh
arco tangente hiperbólica
sec
secante
sech
secante hiperbólica
asec
arco secante
asech arco secante hiperbólica csc
cosecante
csch
cosecante hiperbólica
acsc
arco cosecante
acsch arco cosecante hiperbólica cot
cotangente
coth
cotangente hiperbólica
acot
arco cotangente
acoth
arco cotangente hiperbólica
3
Tabla 1.1 Funciones matemáticas (continuación) Exponenciales exp
exponencial
log
logaritmo natural
log10
logaritmo de base 10
log2
logaritmo de base 2
pow2
potencia de base 2
sqrt
raíz cuadrada
conj
complejo conjugado
imag
parte imaginaria del número complejo
real
parte real del número complejo Redondeo y residuo
fix
complejo conjugado
floor
redondea a menos infinito
ceil
redondea a más infinito
round redondea al entero más cercano mod
residuo de la división
rem
residuo
sign
signo
1.5 Gráficos en dos y tres dimensiones Instrucción plot Sintaxis >>plot(x,y) Ejemplo >>x=[0:pi/100:2*pi]; >>y=sin(x); >>plot(x,y)
El ejemplo anterior generaría la función seno como se muestra a continuación, las leyendas de los ejes y títulos se pueden editar desde el entorno gráfico
4
Figura 1.2 Gráfica de la función seno en Matlab
Instrucción hold on Permite la graficación de varias funciones a la vez
Ejemplo >> x=[0,0]; >> y=[-5,5]; >> plot(x,y); >> hold on; >> x=[-5,5]; >> y=[0,0]; >> plot(x,y); >> x=[-5:0.5:5]; >> y=sqrt(1-x); >> plot(x,y); >>plot(x,-y);
Esta serie de instrucciones permitirá desplegar la figura de una parábola, con los ejes respectivos X y Y; si se desea editar puede hacerse desde la ventana de la misma gráfica
5
Figura 1.3 Gráfica de la parábola y = 1 − x en Matlab
Una manera alterna de realizar varias gráficas en una misma ventana de despliegues gráficos, puede realizarse de la manera como indica el ejemplo siguiente. >> t=[0:pi/100:pi]; >> x=cos(t); >> y=sin(t); >> plot(t,x,'c-',t,y,'m--'); lo cual produciría 1
0.8 seno coseno 0.6
0.4
f
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
0
0.5
1
1.5
2
2.5
3
3.5
t
Figura 1.4 Gráfica del seno y coseno
6
Gráficas en tres dimensiones En este tipo de gráficas se emplean las instrucciones mesh y surf, tal como se observa en el siguiente ejemplo:
>> [x,y]=meshgrid(-10:0.5:10); >> r=sqrt(x.^2+y.^2); >> z=sin(r)./r; >> mesh(x,y,z);
1
0.8 0.6
z
0.4
0.2
0 -0.2
-0.4 10 8 6 4 2 0 -2 -4 -6 -8 -10
-10
-8
-6
-4
y
-2
0
2
4
6
8
10
x
Figura 1.5 Empleo de la instrucción mesh
>> surf(x,y,z);
1
0.8 0.6
0.4
0.2
0 -0.2
-0.4 10 8 6 4 2 0 -2 -4 -6 -8 -10
-10
-8
-6
-4
-2
0
2
4
6
8
10
Figura 1.6 Empleo de la instrucción surf
7
II SOLUCIÓN DE ECUACIONES NO LINEALES 2.1 Raíces de polinomios Para encontrar todas las raíces de un polinomio, Matlab cuenta con funciones internas, que permite encontrarlas de una manera rápida y sencilla.
Función roots Sintaxis >>variable=roots([ pn…p2 p1 p0]); o bien >>p=[ pn…p2 p1 p0]; >>variable=roots(p); Ejemplo: encontrar las raíces del polinomio x 4 + 6 x 3 + 7 x 2 − 6 x − 8 = 0 . >> p=[1 6 7 -6 -8]; >> raices=roots(p) raices = -4.0000 1.0000 -2.0000 -1.0000
Función polyval Verifica que las raíces encontradas de un polinomio sean satisfactorias Sintaxis >>polyval([pn+…+p2+p1+p0], variable) Ejemplo: con respecto al ejemplo anterior
>> polyval(p,raices) ans = 1.0e-012 * 0.1332 0.0071 0.0053 -0.0036
8
Función solve Sintaxis >>solve(‘ecuación’,’variable_a_resolver’) El uso de esta función se ilustra mediante el ejemplo siguiente: Ejemplo: resuelva la ecuación del ejemplo anterior. >> solve('x^4+6*x^3+7*x^2-6*x-8',’x’) ans = -1 1 -2 -4 o bien >> solve('x^4+6*x^3+7*x^2-6*x-8') solamente Ejemplo: Calcule el volumen molar a 100 oC y 50 atm para los gases dados en la tabla siguiente, mediante la ecuación de estado de Redlich-Kwong dada por la expresión: a P + T 1 / 2V (V + b ) (V − b ) = RT Donde: P: presión en atm T: temperatura en K V: volumen molar en l/gmol R: constante universal de los gases en atm l/gmol K Los valores de a y b se calculan mediante: a = 0.4278
R 2Tc Pc
2.5
, b = 0.0867
RTc Pc
Para el oxígeno Pc=49.70 atm, Tc=154.40 K. >> t=373; >> p=50; >> pc=49.7; >> tc=154.40; >> r=0.0821; >> a=0.4278*r^2*tc^2.5/pc;
9
>> b=0.0867*r*tc/pc; >> a a= 17.1866 >> b b= 0.0221 >> sol=solve('(50+17.1866/(373^0.5*v*(v+0.0221)))*(v-0.0221)-0.0821*373','v'); >> double(sol) ans = 0.6073 0.0026 + 0.0253i 0.0026 - 0.0253i
Advierta que la solución se asigna a la variable sol, para después desplegarla en forma de punto flotante con la función double. Otra opción para resolver el problema, es mediante el empleo de la instrucción syms la cual le da un valor simbólico a alguna variable.
Instrucción syms Sintaxis >>syms nombre_variable Ejemplo: >> syms v; >> t=373; >> p=50; >> pc=49.7; >>tc=154.4; >> r=0.0821; >> a=0.4278*r^2*tc^2.5/pc a= 17.1866 >> b=0.0867*r*tc/pc b= 0.0221 10
>> f=(p+a/(t^0.5*v*(v+b)))*(v-b)-r*t; >>sol= solve(f); >> double(sol) 0.6073 0.0026 + 0.0253i 0.0026 - 0.0253i
11
III MATRICES Y SISTEMAS DE ECUACIONES LINEALES 3.1 Operaciones con matrices y solución de sistemas lineales En este capítulo se revisarán todas las operaciones realizadas con matrices, además de la solución de sistemas de ecuaciones lineales, que han sido estudiados en cursos de matemáticas.
3.2 Vectores La forma de declarar vectores en Matlab se muestra a continuación. Syntaxis >>variable=[número 1, número 2,…, número n] o bien
>>variable=[número1 número 2 … número n];
Donde los números no han sido separados por ningún signo de puntuación. Ejemplo:
>> z=[2 4 5 6 7]; si se omite el punto y coma, se despliegan los valores del vector, como se había advertido anteriormente. >> z=[2 4 5 6 7] z= 2
4
5
6
7
3.3 Matrices Las matrices se designan según la sintaxis presentada enseguida. Sintaxis >>variable=[ vector1; vector2; …;vectorn] Ejemplo
>> z=[[2 3 4];[1 2 3];[3 4 5]] z= 2
3
4
1
2
3
3
4
5
Una forma más simple es como se muestra >> z=[2 3 4; 1 2 3; 3 4 5] (se han omitido los corchetes de los vectores)
12
z= 2
3
4
1
2
3
3
4
5
3.4 Transpuesta de una matriz La transpuesta de una matriz designada como A será A’ Sintaxis >>z’; Ejemplo: la matriz transpuesta de la matriz que se citó anteriormente será >> z' ans = 2
1
3
3
2
4
4
3
5
3.5 Determinante de una matriz Sintaxis >>det (nombre_de_la_matriz) Ejemplo:
>> A=[ 1 5 -8; 3 5 -2; 8 9 -1] A= 1
5
-8
3
5
-2
8
9
-1
>> det(A) ans = 52
3.6 Inversa de una matriz Sintaxis >>inv(nombre_de _la_matriz) Ejemplo: para la matriz A del ejemplo anterior
>> inv(A)
13
ans = 0.2500 -1.2885
0.5769
-0.2500
1.2115 -0.4231
-0.2500
0.5962 -0.1923
3.7 Multiplicación de matrices Sintaxis >>nombre_de_la_matriz_1*nombre_de_la_matriz_2 Ejemplo: considerar la misma matriz A.
>> A
A= 1
5
-8
3
5
-2
8
9
-1
>> B=inv(A) B= 0.2500 -1.2885
0.5769
-0.2500
1.2115 -0.4231
-0.2500
0.5962 -0.1923
>> A*B ans = 1.0000
0
0
0
1.0000 -0.0000
0
0.0000
1.0000
3.8 Solución de sistemas de ecuaciones lineales Como se sabe la solución se fundamenta en el hecho siguiente Ax = b A −1 * Ax = A −1 * b I * x = A −1 * b
(3.1) Ejemplo: resolver el siguiente sistema de ecuaciones
14
2 x1 + 4 x 2 + 6 x3 = 18 8 x1 + 5 x 2 + 6 x3 = 40 3 x1 + x 2 − 2 x3 = 4
>> A=[2 4 6; 8 5 6; 3 1 -2]; >> b=[18; 40; 4]; >> x=inv(A)*b x= 4.0000 -2.0000 3.0000 Observe que los elementos del vector b son separados por punto y coma, de no haber realizado esto, se emplearía para el cálculo la transpuesta de b, como se muestra
>> A=[2 4 6; 8 5 6; 3 1 -2]; >> b=[18 40 4]; >> x=inv(A)*b' x= 4.0000 -2.0000 3.0000
3.9 Otras operaciones La suma de matrices y la multiplicación por un escalar no se han incluido por ser demasiado obvias, de cualquier forma se introduce aquí la sintaxis.
Suma de matrices >>nombre_de_la_matriz_1+nombre_de_la_matriz_2
Multiplicación por un escalar >>escalar*nombre_de_la_matriz
15
IV SOLUCIÓN DE SISTEMAS DE ECUACIONES NO LINEALES 4.1 Sistemas de ecuaciones no lineales Los sistemas a los que se hacen referencia, implica una combinación de lo que se revisó en los dos capítulos anteriores, pues se resuelven sistemas del tipo definido a continuación.
(
f 1 = f1 x 1 , x 2 ,..., x n
)
f 2 = f 2 ( x1 , x 2 ,..., x n )
M f n = f n ( x1 , x 2 ,..., x n ) (4.1)
4.2 Función solve Aquí, se refiere la sintaxis, para dos ecuaciones solamente, aunque puede ampliarse para un sistema de ecuaciones cualquiera. Sintaxis >>solve(‘ecuación1’,’ecuación2,’variable_1’,’variable_2’). Ejemplo: resuelva el sistema de ecuaciones no lineales siguiente:
f 1 ( x, y ) = 2 * x + y 2 − 6 = 0
f 2 ( x, y ) = x 2 − y 2 + 2 * y = 0 >> [x,y]=solve('2*x+y^2-6=0','x^2-y^2+2*y=0'); >> double([x,y]) ans = -1.8705 - 0.0000i 3.1211 + 0.0000i 0.6252 - 0.0000i 2.1794 + 0.0000i 2.1095 - 0.0000i -1.3345 - 0.0000i -4.8642 + 0.0000i -3.9659 + 0.0000i
4.3 Comprobación de la solución Función inline Verifica que las raíces encontradas de un sistema sean satisfactorias Sintaxis nombre_variable=inline(‘[ecuación1; ecuación2]’). Ejemplo: comprobar que las raíces del ejemplo anterior satisfagan el sistema. >> f1f2=inline('[2*x+y.^2-6;x.^2-y.^2+2*y]')
16
f1f2 = Inline function: f1f2(x,y) = [2*x+y.^2-6;x.^2-y.^2+2*y] >> f1f2(double(x),double(y)) ans = 1.0e-014 * 0.1776 + 0.0000i 0.1776 + 0.0000i 0 + 0.0000i 0 -0.0888 + 0.0000i -0.0888 - 0.0000i -0.0444 - 0.0000i 0.1776 - 0.0000i
4.4 Representación gráfica de la solución Se puede hacer uso de lo que se revisó en el capítulo 1 para ver gráficamente, la solución. >> [x,y]=meshgrid(-5:0.5:5); >> z=x.^2-y.^2+2*y; >> mesh(x,y,z); >> hold on; >> z=2*x+y.^2-6; >> mesh(x,y,z); >> z=0*x.*y; >> mesh(x,y,z); >>plot3([-1.8705,0.6252,2.1095,-4.8642],[3.1211,2.1794,-1.3345,-3.9659], [0,0,0,0],'d');
La figura que aparece junto con los puntos de intersección se muestra a continuación.
17
40
z
20
0
-20
-40 5 5 0
y
0 -5
-5
x
Figura 4.1 Intersección entre planos
4.5 Otras funciones gráficas Función sphere Realiza la gráfica de una esfera. Sintaxis >>[x,y,z]=sphere(numero).
Función cylinder Realiza la grafica de un cilindro. Sintaxis >>[x,y,z]=cylinder(numero).
Función meshc Añade un mapa de contorno. Sintaxis >>mesh(x,y,z)
Función hidden off Efectúa las gráficas en forma transparente
18
V AJUSTE DE DATOS 5.1 Ajuste de datos Frecuentemente es necesario ajustar datos experimentales a ciertas funciones para crear un modelo matemático que describa cierto fenómeno; el tipo de función al cual pueden ajustarse puede ser de tipo lineal, polinomial o alguna otra; en esta sección revisaremos algunos de ellos.
5.2 Funciones de matlab para el ajuste de datos Función polyfit Syntaxis >>polyfit(var_independiente, var_dependiente, grado de ajuste) Ejemplo: > peso=[0:10:90] peso = 0
10
20
30
40
50
60
70
80
90
>> calor_esp=[1 0.9 0.81 0.73 0.675 0.65 0.64 0.615 0.575 0.515] calor_esp = 1.0000 0.5750
0.9000
0.8100
0.7300
0.6750
0.6500
0.6400
0.6150
0.5150
>> z=polyfit(peso,calor_esp,1) z= -0.0048
0.9267
La función que resulta es yˆ = −0.0048 x + 0.9267
>> z=polyfit(peso,calor_esp,2) z= 0.0000 -0.0089
0.9815
La función resultante en este caso es yˆ = 0 x 2 − 0.0089 x + 0.9815
EL ajuste a cierto tipo de funciones se puede realizar dentro del entorno gráfico, mediante la instrucción plot; esto puede ilustrarse mediante el ejemplo que se muestra a continuación.
19
> plot(peso, calor_esp,'o--') 1.1 data 1 linear quadratic cubic
y = - 0.0048*x + 0.93 y = 4.6e-005*x2 - 0.0089*x + 0.98
1
y = - 1.1e-006*x3 + 0.0002*x2 - 0.014*x + 1
calor especifico
0.9
0.8
0.7
0.6
0.5
0.4
0
10
20
30
40 50 peso de ácido nítrico
60
70
80
90
Figura 5.1 Ajuste de datos
La forma en que se desplegaron las ecuaciones, sus gráficos y leyendas, fue desde el entorno gráfico, en la barra de menus, seleccionando
Tools→Basic Fitting
Dentro de este cuadro se selecciona las opciones linear, quadratic, cubic y show equations.
Figura 5.2 Ventana del Basic fitting de matlab
20
5.3 Instruccón cftool Al invocarse la instrucción despliega una ventana en la cual pueden realizarse los ajustes ya analizados y otros correspondientes a otras funciones, para desplegar la ventana y comenzar a trabajar sobre ella se teclea. >>cftool;
La manipulación de datos para el ajuste es extremadamente sencilla y no necesita una descripción aparte.
5.4 Otras funciones de ajuste Para observar el desplegado de otras funciones de ajuste, puede usarse la instrucción siguiente >> cflibhelp; Con dicha instrucción se mostrará la mayor parte de las funciones a las cuales los datos de cualquier experimento pueden ser ajustados.
21
VI SOLUCIÓN DE SISTEMAS DE ECUACIONESDIFERENCIALES 6.1 Integración numérica de funciones Instrucción syms Designa variables simbólicas Sintaxis >>sims x;
Función int Realiza integrales de funciones definidas por variables simbólicas. Sintaxis >>int(nombre_función, límite superior, límite inferior) ∞
Ejemplo: resolver la integral dada por
e − x senx ∫0 x dx
>> syms x; >> f=(exp(-x)*sin(x))/x;
%definición de la función
>> int(f,0,inf) %inf define a infinito ans = 1/4*pi Ejemplo: resolver
1
∫
−1
e
− x2 2
2π
dx
>> syms x; >> f=exp(-(x^2)/2)/sqrt(2*pi); >> int(f,-1,1) ans = 2251799813685248/5644425081792261*erf(1/2*2^(1/2))*2^(1/2)*pi^(1/2) >> double(ans) %para cambiar a un número de punto flotante ans = 0.6827
6.2 Creación de un archivo M Los archivos M son creados por el usuario y son empleados por matlab, para ejecutar ciertas funciones. Para crear uno se pulsa en la barra de menus, la opción representada por una hoja en blanco y tecleamos a continuación en ese editor 22
function dy = enfriam (x, y) % Temperatura de enfriamiento de un cuerpo humano % Ultima modif: [May 9,08] dy = -0.063 * (y - 20);
A continuación salvamos los cambios como en cualquier editor de textos con cualquier nombre, en esta ocasión guarde con el nombre de enfriamiento. El archivo
anterior
describe
a
la
ecuación
diferencial
dada
por:
dy = −0.063 * ( y − 20 ) que modela la temperatura de enfriamiento de un cuerpo dt
humano.
6.3 Solución de ecuaciones diferenciales Función ode45 Sintaxis
>>ode45(‘nombre_archivo_M’,
[valor
inicial
de
la
variable
independiente, valor final de la variable independiente], valor inicial variable dependiente). Ejemplo: Resuelva la ecuación diferencial
dy = −0.063 * ( y − 20 ) con las dt
condición inicial en t=0, y=37; para t=40, y=?. >> [t, T]=ode45('enfriamiento',[0,40],37); >> plot(t,T)
Advierta que en la ecuación diferencial la variable dependiente es y y el resultado en matlab se guarda en T, lo cual no advierte ninguna importancia; en el caso de que se omitiera la asignación de los resultados al vector [t, T], se hubiese desplegado la gráfica inmediatamente sin necesidad de emplear plot(t, T). De cualquier forma la solución numérica a la ecuación diferencial está representada por la Figura 6.1.
23
38 36 34 32
T
30 28 26 24 22 20
0
5
10
15
20 t
25
30
35
40
Figura 6.1 Solución gráfica de una ecuación diferencial
6.4 Solución de sistemas de ecuaciones diferenciales La función ode 45 puede resolver sistemas de ecuaciones diferenciales de la misma forma en que se ejecutó para una ecuación diferencial, siempre y cuando se escriba el archivo M correspondiente la sintaxis de esta función considerando un sistema de 3 ecuaciones sería. Sintaxis
>>ode45(‘nombre_archivo_M’,
[valor
inicial
de
la
variable
independiente, valor final de la variable independiente], [valores iniciales de la variable dependiente).
Ejemplo: considere una reacción llevada a cabo en un reactor batch o str (stirred tank reactor) como se muestra en la Figura 6.2, la reacción se lleva k1 k2 cabo de acuerdo a la reacción A → R → S ; en el tiempo t=0, las
concentraciones iniciales son
[A]o = 1
M, [ R]o = 0 M, se desea saber las
concentraciones al cabo de t=2.5 horas, Las constantes de velocidad son
k1 = 3 hr-1, k 2 = 1 hr-1.
Considerando la Figura 6.2 el conjunto de reacciones que definen el sistema, considerando que no hay entradas ni salidas, están dados por:
24
k1 k2 Figura 6.2 Reactor batch str para la reacción A → R → S
Para un reactor cstr (continuous stirred tank reactor) las ecuaciones están dadas por:
d (V [ A]) = Fo ⋅ [ A]o − F ⋅ [A] − V ⋅ k1 ⋅ [A] ⋅ dt d (V ⋅ [R ]) = Fo ⋅ [R ]o − F ⋅ [R ] + V ⋅ k1 ⋅ [ A] − V ⋅ k2 ⋅ [R ] dt d (V ⋅ [S ]) = Fo ⋅ [S ]o − F ⋅ [S ] + V ⋅ k 2 ⋅ [S ] dt
Pero para un reactor batch no hay flujos de entrada ni de salida, además el volumen permanece constante, por tanto el sistema a resolver se reduce a:
d [A] = − k1 ⋅ [ A] = −3 ⋅ [ A] dt d [R ] = k1 ⋅ [ A] − k2 ⋅ [R ] = 3 ⋅ [ A] − 1 ⋅ [R ] dt d [S ] = k2 ⋅ [R ] = 1 ⋅ [R ] dt Junto con las condiciones iniciales:
A
t=0
[A]o = 1 , [ R]o = 0 , [S ]o = 0
t=2.5
[A] = ? , [ R] = ? , [S ] = ?
El archivo M que se debe escribir para resolver el sistema será el siguiente:
25
function sistema = batch(t, z) A=z(1); R=z(2); S=z(3); % Valores iniciales de variables dependientes k1=3; k2=1; % Constantes (velocidad de reaccion) para las ecs. sistema=[-k1*A; k1*A-k2*R; k2*R]; % Sistema de 3 EDO's (Vector columna), no aparece S
A continuación guarde el archivo M con el nombre de reactor_batch, aunque puede usar cualquier otro. La solución con matlab se efectúa de la forma como se indica a continuación. >> [t,z]=ode45('reactor_batch',[0,2.5],[1,0,0]); >> plot(t,z) Que desplegará la solución dada en forma gráfica por la siguiente figura 1 0.9 0.8
[concentración]
0.7
[A] [R] [S]
0.6 0.5 0.4 0.3 0.2 0.1 0
0
0.5
1
1.5
2
2.5
t
Figura 6.3 Cinética de reacción en un reactor batch para la reacción k1 k2 A → R → S
Si se desea desplegar los valores numéricos bastará con teclearse >> [t,z] sin punto y coma al final.
26
VII INTRODUCCÓN AL SIMULINK 7.1 Simulink Es una herramienta de matlab empleada para modelar, simular y analizar sistemas, que pueden ser lineales o no lineales; de datos continuos, discretos o combinación de los dos. Los sistemas simulados en simulink reciben el nombre de modelos.
7.2 Ejemplo de simulación de una ecuación de segundo orden mediante simulink Ejemplo: simular la Ecuación diferencial con condiciones iniciales y(0)=0, y´(0)=-2000;
d2y dy + a + by = 0 . 2 dt dt
Para simular esta ecuación diferencial se escribe como
d2y dy = −a − by ; con 2 dt dt
a=-2000, b=-20000, a continuación dentro de matlab pulsamos el ícono de simulink en la barra estándar, al momento del cual se desplegara la ventana siguiente:
Figura 7.1 Ventana del simulink
27
A continuación se crea un documento nuevo en la barra estándar de esta ventana, sobre la cual construiremos el diagrama siguiente:
dy/dx
1 s
1 s
Integrator
y
Integrator 1 Scope
Gain -K-
a=-2000 b=-20000 Gain 1 -K -
Figura 7.2 Modelo en simulink para resolver la ecuación diferencial
Cada uno de los íconos de ganancia e de integración fueron tomados de la librería de simulink, particularmente del menu “bloques comúnmente usados” y unidos arrastrando el ratón y pulsando el click izquierdo simultáneamente; el valor respectivo de los integradores y bloques de ganancia se introduce dando doble click con el botón izquierdo del ratón.
El bloque sum, suma los valores correspondientes al producto de cada integrador con su ganancia, para observar el resultado damos doble click con el mismo botón en el bloque de scope, en la barra de menus de la ventana donde se construyó el diagrama de la figura 7.2.
En la opción simulation se elige la opción configuration parameters y se selecciona .01 segundos; a continuación se comienza la simulación con el ícono “start simulation” en la barra estándar de la ventana mencionada anteriormente, desplegándose la Figura 7.3. En la ventana desplegada “scope” pulsamos el ícono correspondiente a autoescale con forma de binoculares para ajustar la gráfica.
28
Figura 7.3 Ventana de la solución a la ecuación diferencial d2y dy + a + by = 0 mediante simulink 2 dt dt
BIBLIOGRAFÍA SUGERIDA Báez-López, D., Matlab con aplicaciones a la Ingeniería, Física y Finanzas, Editorial, Alfaomega, México, (2007).
Medina-Heredia, G. y P. A., Quintana-Hernández, Solución de problemas de ingeniería química empleando matlab, XXIV Seminario Anual de Ingeniería Química, México, (2007).
Nieves, A., F. C., Domínguez, Métodos Aplicados a la Ingeniería, Editorial, CECSA, México, (2002).
29
View more...
Comments