Вы находитесь на странице: 1из 43

Instituto Tecnológico Superior de Irapuato

Departamento de Ingenierı́a Bioquı́mica

Profesor:
José Luis Soto Alcocer

Taller de Matlab

Irapuato, Gto. 16 de octubre de 2017


I
II
Índice general

Índice de figuras V

Índice de tablas VII

1. Introducción 1
1.1. Definición y usos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2. Entorno de Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.3. Variables, números y operadores en Matlab . . . . . . . . . . . . . . . . . . . . . 2
1.3.1. Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3.2. Números . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3.3. Operadores matemáticos . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3.4. Funciones Internas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

2. Gráficos en dos y tres dimensiones 5


2.1. Instrucción plot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2. Instrucción hold on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.3. Gráficas en coordenadas polares . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.4. Gráficas de funciones implı́citas y ecs. con dos variables . . . . . . . . . . . . . . 8
2.5. Gráfica de funciones definidas en forma paramétrica . . . . . . . . . . . . . . . . 9
2.6. Gráfica de funciones con diferente rango . . . . . . . . . . . . . . . . . . . . . . 9
2.7. Gráficas en tres dimensiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

3. Solución de ecuaciones no lineales 13


3.1. Raı́ces de polinomios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.2. Función roots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.3. Función solve . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.4. Instrucción syms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

4. Sistemas de ecuaciones lineales 17


4.1. Operaciones con matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.2. Vectores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

III
IV ÍNDICE GENERAL

4.3. Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.4. Transpuesta de una matriz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.5. Determinante de una matriz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.6. Inversa de una matriz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.7. Multiplicacción de matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.8. Solución de sistemas de ecuaciones lineales . . . . . . . . . . . . . . . . . . . . . 20
4.9. Suma de matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.10. Multiplicación por un escalar . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

5. Solución de sistemas de ecuaciones no lineales 21


5.1. Sistemas de ecuaciones no lineales . . . . . . . . . . . . . . . . . . . . . . . . . . 21
5.2. Función solve . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
5.3. Representación gráfica de la solución . . . . . . . . . . . . . . . . . . . . . . . . 22

6. Ajuste de datos 23
6.1. Funciones de matlab para el ajuste de datos . . . . . . . . . . . . . . . . . . . . 23
6.2. Función polyfit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
6.3. Instruccón cftool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

7. Solución de ecuaciones diferenciales 25


7.1. Lı́mites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
7.2. Diferenciación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
7.3. Integración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
7.4. Archivos M . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
7.5. Solución de ecuaciones diferenciales . . . . . . . . . . . . . . . . . . . . . . . . . 27
7.6. Solución de sistemas de ecuaciones diferenciales . . . . . . . . . . . . . . . . . . 28
7.7. Introducción a la programación . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
7.8. Lectura de datos de un archivo de Excel . . . . . . . . . . . . . . . . . . . . . . 31

Bibliografı́a 33
Índice de figuras

1.1. Despliegue de inicio de Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

2.1. Gráfica de la función seno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5



2.2. Gráfica de la función y = ± 1 − x . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.3. Gráfica de la función seno coseno . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.4. Gráfica en coordenadas polares . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.5. Gráfica de la función (x − 2)2 + (y − 3)2 = 5 . . . . . . . . . . . . . . . . . . . 8
2.6. Gráfica de la función (x − 2)2 + (y − 3)2 = 5 y y = 2 ∗ (x − 3)2 + 3 . . . . . . . 9
2.7. Gráfica de dos funciones con diferente rango . . . . . . . . . . . . . . . . . . . . 10
2.8. Gráfica de una función en tres dimensiones . . . . . . . . . . . . . . . . . . . . . 11

5.1. Intersección entre planos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

6.1. Ajuste de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

7.1. Solución de la ecuación diferencial dy


dt
= −0,063(y − 20) . . . . . . . . . . . . . . 28
7.2. Reactor batch str . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
7.3. Cinética de reacción en un reactor batch . . . . . . . . . . . . . . . . . . . . . . 30
7.4. Archivo de Excel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

V
VI ÍNDICE DE FIGURAS
Índice de tablas

1.1. Funciones elementales en Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . 3

7.1. Atributos para formateo de impresión . . . . . . . . . . . . . . . . . . . . . . . . 32

VII
VIII ÍNDICE DE TABLAS
Capı́tulo 1

Introducción

1.1. Definición y usos


Matlab es un lenguaje de computación técnica de alto desempeño, que emplea la compu-
tación donde los problemas y las soluciones son expresados en una notación matemática fa-
miliar. 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 puede apreciarse en la figura 1.1.

Barra de menús Barra estándar

Apuntador Recuadro de
y cursor directorio actual Ventana de
área de trabajo
Ventana de
Ventana de
directorio actual
comandos
Ventana de
historial de
comandos

Figura 1.1: Despliegue de inicio de Matlab

1
2 CAPÍTULO 1. INTRODUCCIÓN

1.3. Variables, números y operadores en Matlab


1.3.1. 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=5

Si se desea que Matlab no despliegue valores de variables o matrices, es necesario terminar


cada sentencia con punto y coma, ejemplo:

>> concentracion=100;

1.3.2. Números
Para el almacenamiento de números internamente se usa un formato de precisión de apro-
ximadamente 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

1.3.3. Operadores matemáticos


1. Operadores aritméticos: suma, +; resta, -; multiplicación, *; división, /; recı́proco,\; po-
tencia ˆ.

2. Operadores de elemento a elemento: suma,.+; resta, .- ; multiplicación, .*, división, ./;


recı́proco, .\; potencia .ˆ.

3. Operadores lógicos: and, &&; or, ||; not ,˜; OR, xor.

1.3.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 más usuales de se muestran en la tabla
1.1.
1.3. VARIABLES, NÚMEROS Y OPERADORES EN MATLAB 3

Tabla 1.1: Funciones elementales en Matlab

Función Notación en Matlab

sen x sin(x)

cos x cos(x)

tan x tan(x)

x sqrt(x)

log10 (x) log10(x)

ln(x ) log(x)

|x | abs(x)

ex exp(x)

arco sen x asin(x)

arco cos x acos(x)

arco tan x atan(x)


4 CAPÍTULO 1. INTRODUCCIÓN
Capı́tulo 2

Gráficos en dos y tres dimensiones

2.1. 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 en la figura 2.1 , las leyendas
de los ejes y tı́tulos se pueden editar desde el entorno gráfico o bien mediante las instrucciones
xlabel y ylabel, de acuerdo a la continuación del código anterior.
>>x=[0:pi/100:2*pi];
>>y=sin(x);
>>plot(x,y)
>>xlabel(’eje x’);
>>ylabel(’eje y’);
>>legend(’gráfica de la función seno’);
Lo cual producirı́a:

Figura 2.1: Gráfica de la función seno

5
6 CAPÍTULO 2. GRÁFICOS EN DOS Y TRES DIMENSIONES

2.2. Instrucción hold on


Permite la graficación de varias funciones a la vez. Ejemplo:

>> x=[0,0];
>> y=[-5,5];
>> plot(x,y); %dibuja el eje y
>> hold on;
>> x=[-5,5];
>> y=[0,0];
>> plot(x,y); %dibuja el eje x
>> x=[-5:0.5:5];
>> y=sqrt(1-x);
>> plot(x,y); %dibuja la parte positiva de la parábola
>>plot(x,-y); %dibuja la parte negativa de la parábola
>>xlabel(’x’);
>>ylabel(’y’);
>>legend(’Parábola’);


Figura 2.2: Gráfica de la función y = ± 1 − x

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--’); %permite graficar varias funciones a la vez
>>xlabel(’x’);
>>ylabel(’y’);
2.3. GRÁFICAS EN COORDENADAS POLARES 7

>>legend(’coseno’,’seno’); %coloca etiquetas a cada gráfica


>>grid on; %permite colocar una cuadrı́cula en los ejes cartesianos

Lo cual producirı́a

Figura 2.3: Gráfica de la función seno coseno

2.3. Gráficas en coordenadas polares


Las siguientes instrucciones pueden emplearse para realizar gráficas en coordenadas polares:

>> a=[0:pi/100:2*pi];
>> r=sin(3*a);
>> polar(a,r);

Lo cual resulta:

Figura 2.4: Gráfica en coordenadas polares


8 CAPÍTULO 2. GRÁFICOS EN DOS Y TRES DIMENSIONES

2.4. Gráficas de funciones implı́citas y ecs. con dos va-


riables
El ejemplo siguiente muestra cómo puede graficarse la función (x − 2)2 + (y − 3)2 = 5.

>> f=’(x-2)^2+(y-3)^2-5’;
>> ezplot(f,[-1,5,0,6]); % dominio y rango
>> xlabel(’x’);
>> ylabel(’y’);
>> grid on;

Dando por resultado la gráfica siguiente:

Figura 2.5: Gráfica de la función (x − 2)2 + (y − 3)2 = 5

Si se desea graficar dos funciones con la instrucción ezplot, es necesario emplear la instrucción
hold on, de acuerdo al ejemplo que se muestra a continuación, donde se grafica la función anterior
junta a la función y = 2 ∗ (x − 3)2 + 3, dentro del mismo dominio y rango.

>>f=’(x-2)^2+(y-3)^2-5’;
>> ezplot(f,[-1,5,0,6]);
>> hold on;
>> g=’y-2*(x-3)^2-3’;
>> ezplot(g,[-1,5,0,6]);
>> grid on;

Produciendo la gráfica 2.6


2.5. GRÁFICA DE FUNCIONES DEFINIDAS EN FORMA PARAMÉTRICA 9

Figura 2.6: Gráfica de la función (x − 2)2 + (y − 3)2 = 5 y y = 2 ∗ (x − 3)2 + 3

2.5. Gráfica de funciones definidas en forma paramétrica


La instrucción ezplot puede graficar funciones en forma parámetrica, se puede ensayar la
siguiente instrucción para graficar las funciones y = sen(t) y x = cos(t) en el intervalo de
[−π, π].

>>ezplot(’sin(t)’,’cos(t)’,[-pi,pi]);

O bien una rosa de tres petalos definida en el intervalo [0, π] por:

>>ezplot(’sin(3*t)*cos(t)’,’sin(3*t)*sin(t)’,[0,pi]);
>>grid on;

2.6. Gráfica de funciones con diferente rango


Para graficar dos funciones con diferente rango puede seguirse el ejemplo que se da a conti-
nuación, para graficar las funciones y = 200e−0,05x sen(x) y y = 0,8e−0,05x sen(10x) :

>>x = [0:0.01:20];
>>y1 = 200*exp(-0.05*x).*sin(x);
>>y2 = 0.8*exp(-0.5*x).*sin(10*x);
>>[hAx,hLine1,hLine2] = plotyy(x,y1,x,y2);
>>xlabel(’Time (\mus)’);
>>ylabel(hAx(1),’decaimiento lento’); % left y-axis
>>ylabel(hAx(2),’decaimiento rapido’)

Lo cual produce la grafica mostrada en la figura 2.7


10 CAPÍTULO 2. GRÁFICOS EN DOS Y TRES DIMENSIONES

Figura 2.7: Gráfica de dos funciones con diferente rango

Si quiere agregarse una gráfica adicional, puede emplearse el siguiente código:

>>x = [0:0.01:20];
>>y1 = 200*exp(-0.05*x).*sin(x);
>>y2 = 0.8*exp(-0.5*x).*sin(10*x);
>>y3 = 0.2*exp(-0.5*x).*sin(10*x);
>>[hAx,hLine1,hLine2] = plotyy(x,y1,[x’,x’],[y2’,y3’]);

2.7. 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);

Lo cual produce la gráfica siguiente:


2.7. GRÁFICAS EN TRES DIMENSIONES 11

Figura 2.8: Gráfica de una función en tres dimensiones

La instrucción >> surf(x,y,z), definirı́a una gráfica de superficie.


12 CAPÍTULO 2. GRÁFICOS EN DOS Y TRES DIMENSIONES
Capı́tulo 3

Solución de ecuaciones no lineales

3.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.

3.2. Función roots


Sintaxis >> variable=roots([ pn . . . p2 p1 p0 ]);
Ejemplo: encontrar las raı́ces del polinomio x4 + 6x3 + 7x2 − 6x − 8 = 0 .

>> raices=roots([1 6 7 -6 -8]) %no escribir el; para desplegar los resultados

Que produce el desplegado siguiente:

raices =
-4.0000
1.0000
-2.0000
-1.0000

3.3. 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’)

13
14 CAPÍTULO 3. SOLUCIÓN DE ECUACIONES NO LINEALES

ans =

1
-2
-1
-4
O bien >> solve(x4 + 6 ∗ x3 + 7 ∗ x2 − 6 ∗ x − 8) solamente.
Ejemplo: Calcule el volumen molar a 100 ‰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 + 1/2 (V − b) = RT
T V (V + b)
Donde:
P: Presión en atm.
T: Temperatura en K.
V: Volumen molar en l/g–mol .
R: Constante universal de los gases en atm·l/g–mol·K.
Los valores de a y b se calculan mediante:
R2 Tc2,5
a = 0,4278
Pc
RTc
b = 0,0867
Pc
Para el oxı́geno Pc =49.7 atm, Tc =154.4 K
>> T=373;
>> P=50;
>> Pc=49.7;
>> Tc=154.40;
>> R=0.0821;
>> a=0.4278*R^2*Tc^2.5/Pc;
>> 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)
3.4. INSTRUCCIÓN SYMS 15

3.4. 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;
>> b=0.0867*R*Tc/Pc;
>> f=(P+a/(T^0.5*V*(V+b)))*(V-b)-R*T;
>> sol= solve(f);
>> double(sol)

Que origina el depliegue

0.6073
0.0026 + 0.0253i
0.0026 - 0.0253i
16 CAPÍTULO 3. SOLUCIÓN DE ECUACIONES NO LINEALES
Capı́tulo 4

Sistemas de ecuaciones lineales

4.1. Operaciones con matrices


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.

4.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];
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

4.3. Matrices
Las matrices se designan según la sintaxis presentada enseguida.
Sintaxis >>variable=[ vector 1; vector 2; . . . ; vector n]
Ejemplo:

17
18 CAPÍTULO 4. SISTEMAS DE ECUACIONES LINEALES

>> z=[2 3 4; 1 2 3; 3 4 5]

z =

2 3 4
1 2 3
3 4 5

4.4. Transpuesta de una matriz


La transpuesta de una matriz A se designa como A’.
Ejemplo: la matriz transpuesta de la matriz que se citó anteriormente será:

>> z’

ans =

2 1 3
3 2 4
4 3 5

4.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 =
4.6. INVERSA DE UNA MATRIZ 19

52.0000

4.6. Inversa de una matriz


Sintaxis >>inv(nombre de la matriz)
Ejemplo: para la matriz A del ejemplo anterior

>> inv(A)

ans =

0.2500 -1.2885 0.5769


-0.2500 1.2115 -0.4231
-0.2500 0.5962 -0.1923

4.7. Multiplicacció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
20 CAPÍTULO 4. SISTEMAS DE ECUACIONES LINEALES

ans =

1.0000 0 0
0 1.0000 -0.0000
0 0.0000 1.0000

4.8. Solución de sistemas de ecuaciones lineales


La solución de un sistema de ecuaciones está dada por:

Ax = b
A−1 ∗ Ax = A−1 ∗ b
I ∗ x = A−1 ∗ b
Ejemplo: resolver el siguiente sistema de ecuaciones dado por:

2x1 + 4x2 + 6x3 = 18


8x1 + 5x2 + 6x3 = 40
3x1 + x2 − 2x3 = 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
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.

4.9. Suma de matrices


Sintaxis >>nombre de la matriz 1+nombre de la matriz 2

4.10. Multiplicación por un escalar


Sintaxis>>escalar*nombre de la matriz
Capı́tulo 5

Solución de sistemas de ecuaciones no


lineales

5.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.

f1 = f1 (x1 , x2 , . . . , xn )

f2 = f2 (x1 , x2 , . . . , xn )
f3 = f3 (x1 , x2 , . . . , xn )
..
.
fn = fn (x1 , x2 , . . . , xn )

5.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ón 1’,’ecuación 2’,’variable 1’,’variable 2’)
Ejemplo: resolver el sistema de ecuaciones no lineales siguiente:

f1 (x, y) = 2x + y 2 − 6 = 0

f2 (x, y) = x2 − y 2 + 2y = 0

>> [x,y]=solve(’2*x+y^2-6=0’,’x^2-y^2+2*y=0’,’x’,’y’);
>> double([x,y])

21
22 CAPÍTULO 5. SOLUCIÓN DE SISTEMAS DE ECUACIONES NO LINEALES

ans =

-1.8705 3.1211
0.6252 2.1794
2.1095 -1.3345
-4.8642 -3.9659

5.3. 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’); %esto es un solo renglón

La gráfica generada junto con los puntos de intersección se muestra en la figura 5.1.

Figura 5.1: Intersección entre planos


Capı́tulo 6

Ajuste de datos

6.1. Funciones de matlab para el 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 se revisarán algunos de ellos.

6.2. Función polyfit


Syntaxis >>polyfit(var independiente, var dependiente, grado de ajuste)
Ejemplo:

>> peso=[0:10:90];
>> calor_esp=[1 0.9 0.81 0.73 0.675 0.65 0.64 0.615 0.575 0.515];
>> z=polyfit(peso,calor_esp,1)

z =

-0.0048 0.9267

La función que resulta es calor esp = −0,0048peso + 0,9267

El ajuste a una función de grado 2 corresponderı́a a las instrucciones siguientes:

>> z=polyfit(peso,calor_esp,2)

z =

23
24 CAPÍTULO 6. AJUSTE DE DATOS

0.0000 -0.0089 0.9815

En este caso la función serı́a calor esp = 0,0000peso2 − 0,0089peso + 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,
considerando las variables, peso y calor especı́fico señaladas en los ejemplos anteriores.

>>plot(peso, calor_esp,’o--’);
>>xlabel(’peso’);
>>ylabel(’calor_especı́fico’);

La forma de desplegar las ecuaciones, los gráficos y leyendas, se logra desde la barra de
menús de la gráfica, seleccionando: Tools −→ Basic Fitting, posteriormente las opciones linear,
quadratic, cubic y show equations, en la pequeña pantalla desplegada; apareciendo ası́, la gráfica
mostrada en la figura 6.1.

Figura 6.1: Ajuste de datos

6.3. Instruccón cftool


Al teclear el comando cftool en la ventana de comandos, se despliega una ventana en la cual
pueden realizarse los ajustes ya analizados y otros correspondientes a otras funciones.

>>cftool;

La manipulación de datos para el ajuste es extremadamente sencilla y no necesita una


descripción adicional.
Capı́tulo 7

Solución de ecuaciones diferenciales

7.1. Lı́mites
Para evaluar lı́mites se emplea la instrucción limit, cuya sintaxis está dada por:
Sintaxis >>limit(f, x, x0 ) Ejemplo: calcular el lı́mite de la función f (x) = x2 cuando x
tiende a 3.

>>syms x
>>limit(x^2,x,3)
ans =

9

Ejemplo: lı́mite de g(x) = x2 + 1 cuando x tiende a ∞

>>syms x
>>limit(sqrt(x^2+1), x, inf)

ans =

Inf

En el caso de lı́mites unilaterales se usan las instrucciones: limit(f, x, a, ’left’) o limit(f, x,


a, ’right’) en el caso de que sea por la derecha o por la izquierda.

7.2. Diferenciación
Para derivar funciones se emplea la instrucción diff , cuyo manejo se muestra en los ejemplos
mostrados a continuación:

25
26 CAPÍTULO 7. SOLUCIÓN DE ECUACIONES DIFERENCIALES

>> syms x
>> f=2*x^2;
>> diff(f)

ans =

4*x

Para las derivadas de funciones multivariable como g(x, y) = 2x3 y, puede derivarse primero
respecto a x para despues derivar respecto a y la misma función, como se ilustra en el ejemplo
siguiente:

>> syms x y
>> g=2*x^3*y;
>> g1=diff(g, x)

g1 =

6*x^2*y

>> g2=diff(g,y)

g2 =

2*x^3

7.3. Integración
En el caso de la integración se emplea la instrucción int y se procede como en los ejemplos
mostrados a continuación:
−x
Ejemplo: evaluar la integral 0∞ e xsenx dx
R

>> 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
7.4. ARCHIVOS M 27

7.4. Archivos M
Los archivos M son creados por el usuario y son empleados por matlab, para ejecutar
programas y funciones. Para crear uno se pulsa en la barra de menús, la opción representada
por una hoja en blanco y se teclea a continuación en ese editor:

function dy = enfriamiento (x, y)


% Temperatura de enfriamiento de un cuerpo humano
% Ultima modif: [12 de octubre de 2017]
dy = -0.063 * (y - 20);

Se guardan los cambios como en cualquier editor de textos con el mismo nombre de la
función, en esta ocasión se guardan con el nombre de enfriamiento. El archivo anterior describe
a la ecuación diferencial dada por:

dy
= −0,063(y − 20)
dt

La cual representa un modelo de enfriamiento del cuerpo humano.

7.5. Solución de ecuaciones diferenciales


La solución de ecuaciones diferenciales con condiciones iniciales, se realiza mediante la fun-
ción ode45 cuya sintaxis esta dada por:
>>ode45(’nombre archivo M’, [valor inicial de la variable independiente, valor final de la va-
riable independiente], valor inicial de la variable dependiente);
dy
Ejemplo: Resuelva la ecuación diferencial dt
= −0,063(y − 20) con la condición inicial en
t=0, y=37; para t=40, y=?.

>>[t, T]=ode45(’enfriamiento’,[0,40],37);
>>plot(t,T);
>>xlabel(’t’);
>>ylabel(’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 7.1.
28 CAPÍTULO 7. SOLUCIÓN DE ECUACIONES DIFERENCIALES

dy
Figura 7.1: Solución de la ecuación diferencial dt
= −0,063(y − 20)

7.6. Solución de sistemas de ecuaciones diferenciales


La función ode45 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 n 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 7.2, la reacción se lleva 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 y [S]o =0 M,
se desea saber las concentraciones al cabo de t=2.5 h, las constantes de velocidad con k1 =3 h−1
y k2 =1 h−1 .

Figura 7.2: Reactor batch str

Para un reactor cstr (continuous stirred tank reactor) las ecuaciones están dadas por:
7.6. SOLUCIÓN DE SISTEMAS DE ECUACIONES DIFERENCIALES 29

V d[A]
= Fo [A]o − F [A] − V k1 [A]
dt

V d[R]
= Fo [R]o − F [R] + V k1 [A] − V k2 [R]
dt

V d[S]
= Fo [S]o − F [S] + V k2 [R]
dt
Pero para un reactor batch str 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]
dt

d[R]
= k1 [A] − k2 [R]
dt

d[S]
= k2 [R]
dt
Junto con las condiciones iniciales:

a t=0, [A]o =1, [R]o =0, [S]o =0;

a t=2.5, [A]=?, [R]=?, [S]=?.

El archivo M que se debe escribir para resolver el sistema será el siguiente:

% Guardar como batch


function s = 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.
s=[-k1*A; k1*A-k2*R; k2*R]; % Sistema de 3 EDO’s

A continuación guarde el archivo M con el nombre de batch. La solución con matlab se


efectúa de la forma como se indica a continuación.

>> [t,z]=ode45(’batch’,[0,2.5],[1,0,0]);
>> plot(t,z);
30 CAPÍTULO 7. SOLUCIÓN DE ECUACIONES DIFERENCIALES

7.7. Introducción a la programación


Puede hacerse uso de los archivos M para escribir las instrucciones en el editor de textos
en lugar de escribirlos en la ventana de comandos, si se crea un archivo M con el nombre de
reactor batch, para el ejemplo anterior en el cual se solicita la escritura del nombre de los ejes
y las etiquetas para A, R y S, ası́ como el despliegue de datos de 5 en 5, se tendrı́a el listado
siguiente:

%guardar como reactor_batch


clc; %limpia los datos de la pantalla
clear;%borra las variables guardadas
[t,z]=ode45(’batch’,[0,2.5],[1,0,0]);
plot(t,z)
xlabel(’t’)
ylabel(’C’)
legend(’A’,’R’,’S’)
n=length(t); %determina la dimensión del vector t
fprintf(’\t t \t\t A \t\t R \t\t S \n’);
for i=1:n
if mod(i,5)==0 %para imprimir datos de 5 en 5
fprintf(’%8.4f %8.4f %8.4f %8.4f \n’,t(i),z(i,1),z(i,2),z(i,3));
end
end

Produciéndose la gráfica representada en la figura 7.3.

Figura 7.3: Cinética de reacción en un reactor batch


7.8. LECTURA DE DATOS DE UN ARCHIVO DE EXCEL 31

7.8. Lectura de datos de un archivo de Excel


Algunas ocasiones se desea interactuar con datos importándolos de un archivo de excel
con la extensión .xlsx, suponer que se tiene 10 componentes etiquetados con componente 1,
componente 2,· · ·, componente 10; con 3 propiedades, propiedad 1, propiedad 2 y propiedad 3.
El archivo con datos supuestos se muestra en la figura 7.4 .

Figura 7.4: Archivo de Excel

Después de construir la tabla de Excel y guardarse con el nombre de ejemplo datos, Matlab
puede leer los datos mediante la instrucción xlsread, como se muestra en el código siguiente y
no es hasta entonces que la tabla construida en Excel adquirirá la apariencia mostrada en la
figura anterior.

clc;
clear;
m=xlsread(’ejemplo_datos.xlsx’);
n=input(’Seleccione el número de datos de trabajo: ’);
display (’------------------------------------------------’)
display (’ 1 componente A 2 componente B 3 componente C’)
display (’ 4 componente D 5 componente E 6 componente F’)
display (’ 7 componente G 8 componente H 9 componente I’)
display (’ 10 componente J’)
display (’------------------------------------------------’)
for i=1:n
b=input([’Introduce la clave del componente ’,num2str(i),’ de trabajo: ’]);
prop1(i)=m(b,3);
prop2(i)=m(b,4);
prop3(i)=m(b,5);
end
fprintf(’\n \n \n’);
32 CAPÍTULO 7. SOLUCIÓN DE ECUACIONES DIFERENCIALES

for i=1:n
fprintf(’\t %8.4f %8.4f %8.4f \n ’,prop1(i), prop2(i), prop3(i));
end

En este ejemplo matlab lee los datos del archivo de excel ejemplo datos, asignándolos a
prop1, prop2 y prop3, para posteriormente desplegarlos en pantalla únicamente; aunque pue-
den manipularse para el cálculo de alguna propiedad adicional. En estos dos últimos programas,
aparecen algunos atributos, en particular \t que define la función un tabulador y \n que re-
presenta la función de un cambio de renglón. %8.4f despliega los números en formato de punto
flotante, en un espacio asignado de 8 y 4 cifras significativas en este caso. Estos atributos se
muestran en la tabla 7.1.

Tabla 7.1: Atributos para formateo de impresión

Atributo Función

\t Tabulación

\n Salto de renglón

%8.4f Formateo punto flotante


Bibliografı́a

[1] Báez–López, David and Cervantes–Villagómez, Ofelia. (2012). Matlab con Apli-
caciones a la Ingenierı́a y Finanzas. México: Alfaomega, 2a. Edición.

[2] Rodrı́guez–Ojeda, Luis. (2007). Matlab Conceptos Básicos y Programación. Ecuador.

33

Вам также может понравиться