Академический Документы
Профессиональный Документы
Культура Документы
Profesor:
José Luis Soto Alcocer
Taller de Matlab
Índice de figuras V
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
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
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
Bibliografı́a 33
Índice de figuras
V
VI ÍNDICE DE FIGURAS
Índice de tablas
VII
VIII ÍNDICE DE TABLAS
Capı́tulo 1
Introducción
Apuntador Recuadro de
y cursor directorio actual Ventana de
área de trabajo
Ventana de
Ventana de
directorio actual
comandos
Ventana de
historial de
comandos
1
2 CAPÍTULO 1. INTRODUCCIÓN
>> metodo=5
>> METODO=5
>> 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:
3. Operadores lógicos: and, &&; or, ||; not ,˜; OR, xor.
sen x sin(x)
cos x cos(x)
tan x tan(x)
√
x sqrt(x)
ln(x ) log(x)
|x | abs(x)
ex exp(x)
5
6 CAPÍTULO 2. GRÁFICOS EN DOS Y TRES DIMENSIONES
>> 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
Lo cual producirı́a
>> a=[0:pi/100:2*pi];
>> r=sin(3*a);
>> polar(a,r);
Lo cual resulta:
>> f=’(x-2)^2+(y-3)^2-5’;
>> ezplot(f,[-1,5,0,6]); % dominio y rango
>> xlabel(’x’);
>> ylabel(’y’);
>> grid on;
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;
>>ezplot(’sin(t)’,’cos(t)’,[-pi,pi]);
>>ezplot(’sin(3*t)*cos(t)’,’sin(3*t)*sin(t)’,[0,pi]);
>>grid on;
>>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’)
>>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’]);
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);
>> raices=roots([1 6 7 -6 -8]) %no escribir el; para desplegar los resultados
raices =
-4.0000
1.0000
-2.0000
-1.0000
>> 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
>> 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)
0.6073
0.0026 + 0.0253i
0.0026 - 0.0253i
16 CAPÍTULO 3. SOLUCIÓN DE ECUACIONES NO LINEALES
Capı́tulo 4
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:
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
>> z’
ans =
2 1 3
3 2 4
4 3 5
A =
1 5 -8
3 5 -2
8 9 -1
>> det(A)
ans =
4.6. INVERSA DE UNA MATRIZ 19
52.0000
>> inv(A)
ans =
>> A
A =
1 5 -8
3 5 -2
8 9 -1
>> B=inv(A)
B =
ans =
1.0000 0 0
0 1.0000 -0.0000
0 0.0000 1.0000
Ax = b
A−1 ∗ Ax = A−1 ∗ b
I ∗ x = A−1 ∗ b
Ejemplo: resolver el siguiente sistema de ecuaciones dado por:
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.
f1 = f1 (x1 , x2 , . . . , xn )
f2 = f2 (x1 , x2 , . . . , xn )
f3 = f3 (x1 , x2 , . . . , xn )
..
.
fn = fn (x1 , x2 , . . . , xn )
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
>> [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.
Ajuste de datos
>> 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
>> z=polyfit(peso,calor_esp,2)
z =
23
24 CAPÍTULO 6. AJUSTE DE DATOS
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.
>>cftool;
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
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:
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
>>[t, T]=ode45(’enfriamiento’,[0,40],37);
>>plot(t,T);
>>xlabel(’t’);
>>ylabel(’T’);
dy
Figura 7.1: Solución de la ecuación diferencial dt
= −0,063(y − 20)
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:
>> [t,z]=ode45(’batch’,[0,2.5],[1,0,0]);
>> plot(t,z);
30 CAPÍTULO 7. SOLUCIÓN DE ECUACIONES DIFERENCIALES
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.
Atributo Función
\t Tabulación
\n Salto de renglón
[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.
33