curso_matlab

February 13, 2018 | Author: José Luis Soto Alcocer | Category: Matlab, Equations, Linearity, Matrix (Mathematics), Integral
Share Embed Donate


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



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

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF