Introducción a MATLAB para Programación
Introducción a MATLAB para Programación
LENGUAJES DE PROGRAMACION
2
HUANCAYO – PERU
PRESENTACION
El presente texto pretende ser una pequeña guía para iniciarse dentro del fabuloso
mundo de la programación como herramienta para los diferentes trabajos de
investigación y aplicación para la búsqueda de soluciones.
Este texto proporciona información para conocer el programa MATLAB, que es una
poderosa herramienta de cálculo, simulación y modelado matemático, muy utilizada por
estudiantes, ingenieros y científicos, en universidades, institutos de investigación e
industrias, en todo el mundo, y muy fácil de usar.
El objetivo de este texto es introducir al lector en las bondades que ofrece el MATLAB,
para aprovechar la Matemática y a la vez resolver de forma práctica problemas aplicados
a la ingeniería.
MATLAB nace como una solución a la necesidad de mejorar las herramientas de cálculo
para resolver problemas de cálculos complejos en los que es necesario aprovechar las
amplias capacidades de proceso de datos de las computadoras.
Esperamos que este texto sea útil y ayude a los interesados en el uso de MATLAB.
LOS AUTORES.
3
INDICE
Introducción
Pág.
CAPITULO 1: OPERACIONES MATEMÁTICA CON MATLAB
Operaciones Algebraicas 6
Funciones Básicas 7
Formatos de visualización de números 8
Funciones Matemáticas 8
Funciones Trigonométricas 9
Numeros Complejos 10
Matrices y Arreglos 11
Referencias Bibliograficas 50
4
INTRODUCCION
El nombre de MATLAB proviene de la contracción de los términos MATRIX
LABORATORY y fue inicialmente concebido para proporcionar fácil acceso a las librerías
LINPACK y EISPACK, las cuales representan hoy en día dos de las librerías más
importantes en computación y cálculo matricial.
MATLAB es un entorno de computación y desarrollo de aplicaciones totalmente
integrado orientado para llevar a cabo proyectos en donde se encuentren implicados
elevados cálculos matemáticos y la visualización gráfica de los mismos. MATLAB integra
análisis numérico, cálculo matricial, proceso de señal y visualización gráfica en un
entorno completo donde los problemas y sus soluciones son expresados del mismo
modo en que se escribirían tradicionalmente, sin necesidad de hacer uso de la
programación tradicional.
En los medios universitarios MATLAB se ha convertido en una herramienta básica, tanto
para los profesionales e investigadores de centros docentes, como una importante
herramienta para el dictado de cursos universitarios, tales como sistemas e ingeniería de
control, álgebra lineal, proceso digital de imagen, señal, etc. En el mundo industrial
MATLAB está siendo utilizado como herramienta de investigación para la resolución de
complejos problemas planteados en la realización y aplicación de modelos matemáticos
en ingeniería. Los usos más característicos de la herramienta los encontramos en áreas
de computación y cálculo numérico tradicional, prototipaje algorítmico, teoría de control
automático, estadística, análisis de series temporales para el proceso digital de señal.
CAPITULO
1
Operaciones Algebraicas
Luego de cargado el Matlab, en la ventana de trabajo aparece el siguiente simbolo >> indica
que el programa está listo para recibir sus instrucciones. Escriba cada ejemplo y presione la
tecla de ingreso para finalizar. MATLAB muestra el resultado inmediatamente, o un mensaje
si hubo algún error.
>> 4*5+6*22+2*99
Ans= 430
El punto y coma al final de la línea, le dice a matlab que evalué la línea pero que no nos diga
la respuesta.
>>promedio=(N1+N2)/2
promedio = 13
>>3^2 – 5 - 6/(3*2)
a b Establece la disyuncion de a o b
== A == b Establece la condicion de a igual a b
Las operaciones matemáticas simples entre escalares y vectores aplican el escalar todos
los elementos del vector según la operación definida y las operaciones simples entre
vectores se realizan elemento a elemento, hay que tener presente que los vectores han
de ser de la misma longitud.
>>X=[4,2,6]; Y=[2,5,3];
>>a=X+Y
>>b=X-Y
>>c=X.*Y
>>d=2.*X
>>e=2./X
>>f=X./Y
>>g=X.^2
>>h=2.^X
>>i=X.^Y
Comandos de Ayuda
Help: Para saber el significado de un comando digite help, seguido del comando del cual
se desea obtener información.
>>help quit
>>help + % nos permite visualizar caracteres y operadores especiales del matlab.
>>what % produce una lista de archivo.
>>who % produce una lista de las variables del espacio de trabajo actual.
>>doc help % permite visualizar el documento de ayuda.
Funciones Básicas
Variables
Las variables no pueden comenzar con un número, aunque si pueden tener números en
su estructura.
Las mayúsculas y minúsculas se diferencian en los nombres de las variables.
Los nombres no pueden utilizar operadores ni punto. No es valido usar / * - + . ; : ^
Una variable puede tener hasta 31 caracteres.
>>r=5;
>>area=2*pi*r
area = 31.4159
Variables Valor
Ans Nombre por defecto de las variables usada por los resultados
Pi Razón de una circunferencia a su diámetro
Eps Número mas pequeño tal que, cuando se le suma 1, crea un
numero en coma flotante en el computador mayor que 1
Inf Infinito, p. e.,1/0
NaN Magnitud no numérica (Not-a-Number), p.e.,0/0
iyj Imaginario i = j = 1
realmin El número real positivo más pequeño que es utilizable 2-1022
Relamas El número real positivo más grande que es utilizable (2-e) 2 1023
Funciones Matemáticas
Una lista parcial de las funciones comunes que posee Matlab se muestra en la tabla que
sigue. La mayoría de estas funciones se utilizan de la misma forma en que ustedes las
escribe matemáticamente:
>>a=3;
>>b=4;
>>hipot=sqrt(a^2+b^2)
hipot = 5
8
>>x=sqrt(2)/2
x = 0.7071
>> yengrados=y*180/pi
yengrados= 45.0000
Funciones Trigonometricas
sin(x) Seno de x
asin(x) Arco seno de x
abs(x) Valor absoluto o magnitud de un numero complejo
sinh(x) Seno hiperbolico de x
asính(x) Arcoseno hiperbolico de x
cos(x) Coseno de x
acos(x) Arcocoseno de x
cosh(x) Coseno hiperbólico de x
acosh(x) Arco coseno hiperbólico de x
tan(x) Tangente de x
atan(x) Arcotangente de x
tanh(x) Tangente hiperbolico de x
atanh(x) Arcotangente hiperbolico de x
cot(x) Cotangente de x
sec(x) Secante de x
csc(x) Cosecante de x
Los corchetes se utilizan para definir una variable con múltiples valores
>> x = [0.8, 0.9, 0.1; 0.8, 0.9, 0.1; 0.4, 0.9, 0.6];
>> z=asin(x)
>> y=sech(x)
Números complejos
Para ilustrar los números complejos, considere la ecuación cuadrática ax2 +bx+c=0.
Los valores de x donde esta ecuación es cierta, i.e. las raíces de estas ecuaciones vienen
dadas por:
x1,x2 =
b b 2
4ac
2a
Si a=1, b=4, c=13 las soluciones son:
x1= -2+3 1
x2= -2-3 1
Las soluciones son complejas. Los términos -2 en x1 y x2 son la parte real de la solución.
Los términos 3 y -3 son las partes imaginarias de las soluciones.
10
x2 =
-2.0000 - 3.0000i
Matrices y Arreglos
x=
1 4 5 8
5 0 0 2
0 1 -7 3
Arreglos Bidimensionales
c= 3 5
8 6
Sustracción de Arreglos
Multiplicación de Arreglos
Producto de Matrices
>> F=[3 -2 7; 6 5 4; 0 4 9] % matriz de orden 3x3
F=
3 -2 7
6 5 4
0 4 9
>> H=F*G
H=
17 76
14 98
18 97
12
otro ejemplo
>> A=[2 3 1; 1 -1 1; 0 2 2]
>> B=[1 2 1; -1 2 -1; 2 0 2]
>> C=A*B
C=
1 10 1
4 0 4
2 4 2
Transpuesta de una Matriz .- La matriz transpuesta se obtiene intercambiando filas
por columnas.
A=
1 -3 0 -2
3 -12 -2 -6
-2 10 2 5
-1 6 1 3
>> Y=A'
Y=
1 3 -2 -1
-3 -12 10 6
0 -2 2 1
-2 -6 5 3
Inversa de Matrices
B=
22 -6 -26 17
-17 5 20 -13
-1 0 2 -1
4 -1 -5 3
>> Y=inv(B)
Y=
1.0000 2.0000 3.0000 4.0000
2.0000 3.0000 1.0000 2.0000
1.0000 1.0000 1.0000 -1.0000
1.0000 0 -2.0000 -6.0000
13
CAPITULO
2
2. GRAFICAS CON MATLAB
Gráficos en el Plano
Comandos Descripción
plot(x,y) Grafica el conjunto de puntos (x,y) en un sistema cartesiano
bar(x,y) Gráfico de barras vertical, donde y representa la frecuencia y x
define los espacios en el eje x.
Barh(x,y) Gráfico de barras horizontal.
Ítem(x,y) Gráfico de bastones verticales.
stairs(x,y) Grafica una curva escalonada.
Polar(x,y) Dibuja una curva en coordenadas polares. y=y(x)
Pie(x) Realiza el gráfico de sectores relativo al vector x.
Rose(x) Dibuja el histograma angular relativo al vector x.
Los gráficos son una poderosa forma visual de interpretar datos. Realizar la gráfica de
una función seno durante un período, por ejemplo:
>> x = linspace(0,2*pi,40);
>> y = sin(x);
>> z = cos(x);
>> plot(x,y,x,z)
14
>> plot(x,y,x,2*y.*z,'r*')
>> grid % para colocar una rejilla en los puntos marcados sobre los ejes
>> xlabel(‘Variable Independiente x’) % para colocar una etiqueta sobre el eje x
>> ylabel ( ‘ Variable dependiente’) % para colocar una etiqueta sobre el eje y
>> title (‘ 2sin(x)cos(x) = sin(2x) ‘) % para colocar un titulo sobre la grafica actual
Con MATLAB se puede especificar los colores y los estilos de línea que necesita dando
un argumento adicional a plot después de cada pareja de arrays de datos.
>> plot(x,y,'bo',x,z,'r--',x,y,'k*',x,z,'c.')
15
0.7
>> grid on 0.6
0.4
0.3
0.2
0.1
0
-4 -3 -2 -1 0 1 2 3 4
gráficos en coordenadas polares utilizando la orden polar (t, r), donde t es el vector de
ángulos en radianes, r es el radio vector
La orden subplot (m, n, p) subdivide la ventana de la figura actual en una matriz mxn de
las áreas de representación gráfica y escoge como activa el área p-ésima. Las
subgráficas se numeran de izquierda a derecha a lo largo de la lila superior, luego la
segunda fila, etc. por ejemplo:
Puede añadir líneas a una gráfica existente usando la orden hold on.
>> x=linspace(0,2*pi,30);
>> y=sin(x);
>> z=cos(x);
>> plot (x, y)
>> x= 1:0.2:10;
>> y = 11 + exp(-x.^2);
>> loglog(x,y);
t=0.1:0.1:3;
semilogy(t,exp(t.*t))
grid
xlabel('t'); ylabel('exp(t.*t)'); title(' Grafica semilogaritmica...')
t=0.1:0.1:3;
semilogx(t,exp(t.*t))
grid
xlabel('t'); ylabel('exp(t.*t)'); title(' Grafica semilogaritmica...')
Gráfica de Superficies
>> t = 0:0.2:7;
>> cylinder(2+sin(t));
>> title(' 2 + sin( t )');
>> xlabel('eje x') ; ylabel('eje y') ; zlabel('eje z')
19
CAPITULO
3
3. PROGRAMACION EN MATLAB
Algoritmo.- Un algoritmo es un conjunto finito de instrucciones o pasos que sirven para ejecutar
una tarea y/o resolver un problema. De un modo más formal, un algoritmo es una secuencia finita
de operaciones realizables, no ambiguas, cuya ejecución dá una solución de un problema en un
tiempo finito.
Estructura Básica:
1. inicio
2. datos de entrada (operaciones básicas)
3. procesamiento de los datos
4. datos de salida
5. fin
Programación en Matlab
MATLAB es una aplicación que se puede programar muy fácilmente. De todas formas,
como lenguaje de programación pronto verá que no tiene tantas posibilidades como otros
lenguajes (ni tan complicadas...). Se comenzará viendo las bifurcaciones y bucles, y la
lectura y escritura interactiva de variables, que son los elementos básicos de cualquier
programa de una cierta complejidad.
Control del Flujo.- Controlar el flujo es determinar el orden en el que se ejecutarán las
instrucciones en nuestros programas. Si no existiesen las sentencias de control entonces
los programas se ejecutarían de forma secuencial, empezarían por la primera instrucción
e irían una a una hasta llegar a la última.
if n==0;
' el numero es CERO '
end
if n==0;
' el numero es CERO '
else
' el numero puede ser POSITIVO o NEGATIVO'
end
21
if n==0;
' el numero es CERO '
else
if n>0
' el numero es POSITIVO '
else
'el numero es NEGATIVO '
end
end
Bucle For
for i = vectorValores
sentencias
end
Donde vectorValores es un vector con los distintos valores que tomará la variable i.
for i = 1 : m
for j = 1 : n
22
sentencias
end
end
Una última forma de interés del bucle for es la siguiente (A es una matriz):
for i = A
sentencias
end
Este bucle se utiliza cuando queremos repetir la ejecución de unas sentencias un número
indefinido de veces, siempre que se cumpla una condición, como veremos a
continuación, la condición que se tiene que cumplir para que se realice una iteración.
end
While Condición
sentencia 1
sentencia 2
...
sentencia n
end
Función Input
>> nombre = input('Ingrese su nombre: ','s') %s indica que la entrada que se hará por
teclado es una cadena
En este caso el texto tecleado como respuesta se lee y se devuelve sin evaluar, con lo
que se almacena en la cadena nombre. Así pues, en este caso, si se teclea una fórmula,
se almacena como texto sin evaluarse.
Función Disp
La función disp permite imprimir en pantalla un mensaje de texto o el valor de una matriz,
pero sin imprimir su nombre.
Ejecútense las sentencias anteriores en MATLAB y obsérvese la diferencia entre las dos
formas de imprimir la matriz A.
>> a=[1:10];
>> b=[-10:-1];
>> disp([a;b])
Da como salida:
1 2 3 4 5 6 7 8 9 10
-10 -9 -8 -7 -6 -5 -4 -3 -2 -1
24
CAPITULO
4
4. PROGRAMAS DE APLICACION
4.1 Objetivo: Consolidar los conocimientos de programación en matlab.
clear all
n1=input('Ingrese la nota 1: ');
n2=input('Ingrese la nota 2: ');
n3=input('Ingrese la nota 3: ');
suma= n1+n2+n3
promedio = suma/3
if promedio>=10.5
' Alumno APROBADO '
else
' Alumno DESAPROBADO '
end
Ejemplos de Programas con: FOR … END
El siguiente ejemplo creará un bucle que después realizará una suma de los 5 primeros
números.
clc 1 1
s=0; 2 3
for n=1:5 3 6
s=n+s; 4 10
disp([n s ]) 5 15
end
clc;clear all
c=input('ingrese un valor en grados celsius:'); %grados celsius
disp([' CELSIUS KELVIN' ])
for x=c-5:c+5;
kelvin=x+273;%grados kelvin
disp([x kelvin])
end
disp(fa)
else
for i=1:n; %bucle de multiplicación hasta n
fa=fa*i;
if i==n;
disp('El FACTORIAL del número ingesado es :')
disp(fa)
end
end
end
140
x = 0:9; 120
y = [0, 5, 23, 38, 42, 48, 65, 88, 105, 145];
TEMPERATURA EN oF
100
coef = polyfit(x, y, 1)
80
m=coef(1);
b=coef(2); 60
y1 = m.*x+b; 40
y = 14.6485 x + -10.0182
coef = polyfit(x, y, 3)
a=coef(1);
b=coef(2);
c=coef(3);
d=coef(4);
y3 = a*x.^3 + b*x.^2 + c * x + d;
plot(x, y3, x, y, 'o'), title('REGRESION LINEAL')
xlabel ('TIEMPO EN SEGUNDOS')
Ylabel ('TEMPERATURA EN oF')
REGRESION LINEAL
160
140
120
TEMPERATURA EN oF
100
coef = 80
60
0.2925 -2.7751 17.5664 -3.2993
40
-20
0 1 2 3 4 5 6 7 8 9
TIEMPO EN SEGUNDOS
x = 0:9;
y = [0, 5, 23, 38, 42, 48, 65, 88, 105, 145];
coef = polyfit(x, y, 4)
a=coef(1);
b=coef(2);
c=coef(3);
d=coef(4);
e=coef(5);
y4 = a*x.^4 + b*x.^3 + c*x.^2 + d*x + e;
plot(x, y4, x, y, 'o'), title('REGRESION LINEAL')
xlabel ('TIEMPO EN SEGUNDOS')
ylabel ('TEMPERATURA EN oF')
REGRESION LINEAL
160
140
120
TEMPERATURA EN oF
100
80
60
40
29
%hallando graficas:
t=1:0.1:t;
x=t.^3-6*t.^2-15*t+40;
v=3*t.^2-12*t-15;
a=6*t-12;
subplot(2,2,1),plot(t,x,'-r'),title('Grafica Tiempo/Espacio'),
xlabel('tiempo(seg)'),ylabel('distancia(m)'),grid
subplot(2,2,2),plot(t,v,'-g'),title('Grafica Tiempo/Velocidad'),
xlabel('tiempo(seg)'),ylabel('velocidad(m/s)'),grid
subplot(2,2,3),plot(t,a,'-b'),title('Grafica Tiempo/Aceleración'),
xlabel('tiempo(seg)'),ylabel('aceleracion (m/s^2)'),grid
30
EJECUTANDO EL PROGRAMA:
=======================================================
PROGRAMA PARA HALLAR LAS GRAFICAS DEL DESPLAZAMIENTO
----- VELOCIDAD Y ACELERACION EN FUNCION AL TIEMPO ------------
=======================================================
ecuación del desplazamiento x = t.^3-6*t.^2-15*t+40
ecuación de la velocidad (d(x)/d(t)) v = 3*t.^2-12*t-15
e cuación de la aceleracion (d(v)/d(t)) a = 6*t-12
ingrese un valor positivo para el tiempo : 10
T E V A
0 40 -15 -12
1 20 -24 -6
2 -6 -27 0
3 -32 -24 6
4 -52 -15 12
5 -60 0 18
6 -50 21 24
7 -16 48 30
8 48 81 36
9 148 120 42
10 290 165 48
31
%este programa sirve para integrar por integrales numéricas %por el método de
%SIMPSON una función dada
%y para graficar dicha función.
clc
disp(' INTEGRACION NUMERICA CON EL METODO DE SIMPSON')
f=input('ingrese la función a integrar f(x)= ','s');%FUNCION
a=input('ingrese limite inferior: ');
b=input('ingrese limite superior: ');
n=input('ingrese numero de trapecios: ');
n=2*n;xmin=a-1;xmax=b+1;
h=(b-a)/n;
x=a:h:b;
fx=eval(f);y=abs(fx);
suma1=y(1)+y(n+1);
suma2=4*sum(y(2:2:n));
suma3=2*sum(y(3:2:n-1));
suma=suma1+suma2+suma3;
integral=(h/3)*suma;
fprintf('el área es :%10.9f\n',integral);
%grafica
xp=xmin:0.2:xmax;
x=xp;
yp=eval(f);
plot(xp,yp,'g');
hold on
x=a:0.05:b;
y=eval(f);
bar(x,y,'r');
SALIDA:
ingrese la constante de velocidad :1.8*10^-5
33
SALIDA:
it a b aprox error
1 4.000000 8.000000 6.000000 1.000000
2 6.000000 8.000000 7.000000 0.142857
3 7.000000 8.000000 7.500000 0.066667
4 7.500000 8.000000 7.750000 0.032258
5 7.750000 8.000000 7.875000 0.015873
34
SALIDA:
it a b aprox error
1 2.000000 6.000000 4.000000 1.000000
2 4.000000 6.000000 5.000000 0.200000
3 5.000000 6.000000 5.500000 0.090909
4 5.500000 6.000000 5.750000 0.043478
5 5.750000 6.000000 5.875000 0.021277
6 5.875000 6.000000 5.937500 0.010526
35
SALIDA:
EJECUTANDO EL PROGRAMA:
=======================================================
--PROGRAMA PARA HALLAR LA MOLARIDAD DE UN COMPUESTO--
=======================================================
ingrese la masa de la muestra : 20
ingrese el peso molecular del compuesto: 78
volúmen molaridad:
1.0000 0.2564
2.0000 0.1282
3.0000 0.0855
4.0000 0.0641
5.0000 0.0513
6.0000 0.0427
7.0000 0.0366
8.0000 0.0321
37
EJECUTANDO EL PROGRAMA:
=======================================================
----PROGRAMA PARA CALCULAR EL CAMBIO DE ENTROPIA Y -------
---------------ENTALPIA ESTANDAR DE UNA REACCION-------------------
para la reacción aA + Bb → cC + dD
ingrese el coeficiente de A: 2
ingrese el coeficiente de B: 6
ingrese el coeficiente de C: 1
ingrese el coeficiente de B: 4
ingrese la entropía estandar de A: 155
ingrese la entropía estandar de B: 45
ingrese la entropía estandar de C: 444
ingrese la entropía estandar de D: 89
ingrese la entalpía estandar de A: -98
ingrese la entalpía estandar de B: 654
ingrese la entalpía estandar de C: 135
ingrese la entalpía estandar de D: 654
---------------------------------------------------------------------------------------------------------------
TEMP ENTALPIA ENTROPIA GIBBS Espontaneidad de la reacción
---------------------------------------------------------------------------------------------------------------
-526.85 -977.00 220.00 114930.00 la reacción no es espontánea
-476.85 -977.00 220.00 103930.00 la reacción no es espontánea
-426.85 -977.00 220.00 92930.00 la reacción no es espontánea
-376.85 -977.00 220.00 81930.00 la reacción no es espontánea
-326.85 -977.00 220.00 70930.00 la reacción no es espontánea
-276.85 -977.00 220.00 59930.00 la reacción no es espontánea
-226.85 -977.00 220.00 48930.00 la reacción no es espontánea
-176.85 -977.00 220.00 37930.00 la reacción no es espontánea
-126.85 -977.00 220.00 26930.00 la reacción no es espontánea
-76.85 -977.00 220.00 15930.00 la reacción no es espontánea
-26.85 -977.00 220.00 4930.00 la reacción no es espontánea
23.15 -977.00 220.00 - 6070.00 la reacción es espontánea
73.15 -977.00 220.00 -17070.00 la reacción es espontánea
123.15 -977.00 220.00 -28070.00 la reacción es espontánea
173.15 -977.00 220.00 -39070.00 la reacción es espontánea
223.15 -977.00 220.00 -50070.00 la reacción es espontánea
273.15 -977.00 220.00 -61070.00 la reacción es espontánea
323.15 -977.00 220.00 -72070.00 la reacción es espontánea
373.15 -977.00 220.00 -83070.00 la reacción es espontánea
423.15 -977.00 220.00 -94070.00 la reacción es espontánea
473.15 -977.00 220.00 -105070.00 la reacción es espontánea
39
40
%Ley de Bolye-Mariotte PV = K
%PV = nR.T n=1 y R=0.08205 t=25+273=298 K
clc
hold off
clear all; clear memory; clear command history; clc
for T=298:100:698;
K = 1.*0.08205.*T ;
P=1:0.01:10;
V = K./P ;
switch T
case 298
xox='-r';
case 398
xox='-k';
case 498
xox='-b';
case 598
xox='-m';
case 698
xox='-.R';
end
hold on; grid on; title(' Perfiles de la Ley de Boyle - Mariotte ')
ylabel(' Presión - atm '); xlabel(' Volúmen - Lts ');
plot(V,P,xox);
end
h = legend('T=298°K','T=398°K','T=498°K','T=598°K','T=698°K',1); axis([0 60 0 10])
RESULTADOS
10
5
9
4
8
3
7
2
6
Presión - atm
1
5
0
0 10 20 30 40 50 60 4
Volúmen - Lts
3
T=298°K
2 T=398°K
T=498°K
1 T=598°K
T=698°K
0
0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45
Volúmen (1/V) Lts -1
42
Perfiles de la Ley de Boyle - Mariotte
60
T=298°K
55 T=398°K
T=498°K
T=598°K
50
T=698°K
Presión*Volumen - atm*L
45
40
35
30
25
20
0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45
Volúmen (1/V) Lts -1
------------------------------------------------------------------
RESULTADOS
------------------------------------------------------------------
CAPACIDAD DE ADSORCION DE CARBON GRANULADO
------------------------------------------------------------------
----------------------------------------------------------------------------
De los resultados calculados se concluye que se requiere de aproximadamente
44
3.68291
mas de carbón B para llevar a cabo el mismo tratamiento. El precio unitario
de cada tipo de carbón puede ser usado para determinar el mejor caso de
costo-efectividad para una aplicación de purificación
----------------------------------------------------------------------------
45
%Se trabaja con Coo=20 y Cee=1 Ambos deben ingresar con input
k1=-log((Co/Ce)-1)/(b1*Co);
k2=-log((Co/Ce)-1)/(b2*Co);
k3=-log((Co/Ce)-1)/(b3*Co);
k4=-log((Co/Ce)-1)/(b4*Co);
%Cálculo de la profundidad crítica (mts)
Do1=log((Co/Ce)-1)*v1 / (k1*No1);
Do2=log((Co/Ce)-1)*v2 / (k2*No2);
Do3=log((Co/Ce)-1)*v3 / (k3*No3);
Do4=log((Co/Ce)-1)*v4 / (k4*No4);
%Gráfico de los datos encontrados
figure
Q=[qa11 qa22 qa33 qa44]; KK=[k1 k2 k3 k4]; DD=[Do1 Do2 Do3 Do4]; NN=[No1 No2 No3
No4];
subplot(2,2,1);plot(Q,KK,'*-');xlabel('Caudal-L/(min*m2)');ylabel('K - m3/(Kg*hr)');grid on
subplot(2,2,2);plot(Q,DD,'O-');xlabel('Caudal-L/(min*m2)');ylabel('Do - m)');grid on
subplot(2,2,3);plot(Q,NN,'*-');xlabel('Caudal-L/(min*m2)');ylabel('No - Kg/m3)');grid on
%----
%Ajuste de curva para encontrar la ecuación de cada una de ellas
Q1Q=[81.5:50:681.5];
k2 =polyfit(Q,KK,2); % ES IGUAL A [p,S] = polyfit(Q,KK,2)
ko2=k2(1).*Q1Q.*Q1Q + k2(2).*Q1Q + k2(3);
cof11=k2(1); cof22=k2(2); cof33=k2(3);
%k3=polyfit(Q,KK,3) %Existe mucha dispersión, por lo que se desecha
%ko3=k3(1).*Q1Q.*Q1Q.*Q1Q + k3(2).*Q1Q.*Q1Q + k3(3).*Q1Q + k3(4)
n2 =polyfit(Q,NN,2); % Es igual a [p,s]=polyfit(Q,NN,2)
no2=n2(1).*Q1Q.*Q1Q + n2(2).*Q1Q + n2(3);
cof1=n2(1); cof2=n2(2); cof3=n2(3);
%n3 =polyfit(Q,NN,3); %Existe mucha dispersión, por lo que se desecha
%no3=n3(1).*Q1Q.*Q1Q.*Q1Q + n3(2).*Q1Q.*Q1Q + n3(3).*Q1Q + n3(4)
%no33=(no2+no3)/2
%plot(Q,NN,'*-',Q1Q,no2,'o-',Q1Q,no3,'*-')
d2 =polyfit(Q,DD,2);
do2=d2(1).*Q1Q.*Q1Q + d2(2).*Q1Q + d2(3);
cof111=d2(1); cof222=d2(2); cof333=d2(3);
%---------INCREMENTADO
figure
subplot(2,2,1);plot(Q1Q,ko2,'*-');xlabel('Caudal-L/(min*m2)');ylabel('K - m3/(Kg*hr)');grid on
subplot(2,2,2);plot(Q1Q,do2,'O-');xlabel('Caudal-L/(min*m2)');ylabel('Do - m)');grid on
subplot(2,2,3);plot(Q1Q,no2,'*-');xlabel('Caudal-L/(min*m2)');ylabel('No - Kg/m3)');grid on
%-------FIN DE INCREMENTO
%DATOS DE PROBLEMA REAL
%Caudal en m3/hr y diámetro del lecho de prueba piloto en mts - profundidad - prof en mts
qaa1=4; diamlecho1=0.76; prof=1.82;
%Caudal en L/(min*m2) - el factor de conversión de m3/hr a L/(min*m2) es 21.2207
qaa11=(4*1000/(60*pi))*qaa1/(diamlecho1^2);
area=(pi/4)*diamlecho1^2;
%Cálculo de la velocidad en mts/hr
ve1=0.06*qaa11;
%Modulo para halla K ó ko22 en m3/(kg*hr) y No ó no22 en kg/m3
no22=cof1*qaa11*qaa11 + cof2*qaa11 + cof3;
ko22=cof11*qaa11*qaa11 + cof22*qaa11 + cof33;
do22=cof111*qaa11*qaa11 + cof222*qaa11 + cof333;
%Cálculo del tiempo de servicio
t=((no22*prof)/(ve1*Co)) - (log((Co/Ce)-1)/(ko22*Co)); %horas/ciclo
%Parte2:Cálculo del numero de cambios de carbon por año y volumen anual de carbón
47
NumCamCar=365*24 / t ;
VolAnualCarbon = prof*area*NumCamCar ;
%Parte3:Estimación de eliminación del soluto (Kg/año)
%Kg soluto separado por ciclo=kg soluto en afluente-Kg soluto en efluente
VolAR=qaa1*t;
%Kg de soluto en el afluente por ciclo
SolutAfluen=VolAR * Co;
%Calculo del soluto residual - Kg de soluto por ciclo
SolutEfluen=VolAR * Ce;
SolutSeparado = SolutAfluen - SolutEfluen;
SolutSepanual = SolutSeparado*NumCamCar;
%Parte4: Rendimiento de la adsorcion
CapTotAdsor=no22*VolAnualCarbon;
rendimiento = (SolutSepanual/CapTotAdsor)*100;
%Rendimiento basandose en Do para un caudal de 148 L/(min*mt2)
Rendimiento = ((prof - do22)/prof)*100;
%Los resultados
disp(' ');
disp('------------------------------------------------------------------')
disp('RESULTADOS ');
disp('------------------------------------------------------------------')
disp(' APLICACION DE LOS DATOS DE LABORATORIO ')
disp(' AL DISEÑO DE UNA PLANTA A ESCALA REAL ')
disp('------------------------------------------------------------------')
disp('PARTE1: CALCULO DEL TIEMPO DE SERVICIO')
disp('------------------------------------------------------------------')
fprintf('Capacidad de Adsorción (No) = %g (Kg/m3)\n' ,no22)
fprintf('Constante de Velocidad (K) = %g (m3/(kg*hr)\n',ko22)
fprintf('Tiempo de servicio (t) = %g (hr/ciclo)\n' ,t)
disp(' ')
disp('-------------------------------------------------------------------')
disp('PARTE2: CAMBIO DE CARBON POR AÑO Y VOLUMEN ANUAL DE CARBON')
disp('-------------------------------------------------------------------')
fprintf('# de Cambios de Carbón / año (NumCamCar) = %g (Ciclo/año)\n',NumCamCar)
fprintf('Volúmen anual de carbón (VolAnualCarbon) = %g (m3)\n',VolAnualCarbon)
disp(' ')
disp('-------------------------------------------------------------------')
disp('PARTE3: ESTIMACION DE LA ELIMINACION DE SOLUTO (kg/año)')
disp('kg de soluto separado=Kg soluto en afluente - Kg soluto en efluente')
disp('-------------------------------------------------------------------')
fprintf('Volúmen de Agua Residual (VolAR) = %g (m3/ciclo)\n',VolAR)
fprintf('Eliminación de soluto (SolutSeparado) = %g (kg/ciclo)\n',SolutSeparado)
fprintf('Soluto separado anual (SolutSepanual) = %g (kg/ciclo)\n',SolutSepanual)
disp(' ')
disp('-------------------------------------------------------------------')
disp('PARTE4: RENDIMIENTO DE LA ADSORCION')
disp('-------------------------------------------------------------------')
disp('Basado en No: Capacidad de adsorción')
fprintf('Capacidad Total de Adsorción (CapTotAdsor) = %g (m3/ciclo)\n',CapTotAdsor)
fprintf('Rendimiento (rendimiento) = %g (kg/ciclo)\n',rendimiento)
disp('Basado en Do: Profundidad Crítica')
fprintf('Rendimiento (Rendimiento) = %g (m3/ciclo)\n',Rendimiento)
disp(' ')
disp('-------------------------------------------------------------------')
disp(' ')
disp(' ')
48
------------------------------------------------------------------
RESULTADOS
------------------------------------------------------------------
APLICACION DE LOS DATOS DE LABORATORIO
AL DISEÑO DE UNA PLANTA A ESCALA REAL
------------------------------------------------------------------
PARTE1: CALCULO DEL TIEMPO DE SERVICIO
------------------------------------------------------------------
Capacidad de Adsorción (No) = 109.707 (Kg/m3)
Constante de Velocidad (K) = 0.666736 (m3/(kg*hr)
Tiempo de servicio (t) = 911.419 (hr/ciclo)
-------------------------------------------------------------------
PARTE2: CAMBIO DE CARBON POR AÑO Y VOLUMEN ANUAL DE CARBON
-------------------------------------------------------------------
# de Cambios de Carbón / año (NumCamCar) = 9.61139 (Ciclo/año)
Volúmen anual de carbón (VolAnualCarbon) = 7.9355 (m3)
-------------------------------------------------------------------
PARTE3: ESTIMACION DE LA ELIMINACION DE SOLUTO (kg/año)
kg de soluto separado=Kg soluto en afluente - Kg soluto en efluente
-------------------------------------------------------------------
Volúmen de Agua Residual (VolAR) = 3645.68 (m3/ciclo)
Eliminación de soluto (SolutSeparado) = 69.2678 (kg/ciclo)
Soluto separado anual (SolutSepanual) = 665.76 (kg/ciclo)
-------------------------------------------------------------------
PARTE4: RENDIMIENTO DE LA ADSORCION
-------------------------------------------------------------------
Basado en No: Capacidad de adsorción
Capacidad Total de Adsorción (CapTotAdsor) = 870.583 (m3/ciclo)
Rendimiento (rendimiento) = 76.4729 (kg/ciclo)
Basado en Do: Profundidad Crítica
Rendimiento (Rendimiento) = 79.504 (m3/ciclo)
-------------------------------------------------------------------
2500 Experimento 1
2000
Tiempo t (h)
1500
1000 Experimento 2
Experimento 3
500
Experimento 4
-500
0 1 2 3 4 5 6 7 8
Profundidad D (m)
49
1.5 1
K - m3/(Kg*hr)
0.8
Do - m)
1 0.6
0.4
0.5 0.2
0 200 400 600 800 0 200 400 600 800
Caudal-L/(min*m2) Caudal-L/(min*m2)
140
No - Kg/m3)
120
100
80
0 200 400 600 800
Caudal-L/(min*m2)
1.5 1
K - m3/(Kg*hr)
0.8
Do - m)
1 0.6
0.4
0.5 0.2
0 200 400 600 800 0 200 400 600 800
Caudal-L/(min*m2) Caudal-L/(min*m2)
140
120
No - Kg/m3)
100
80
60
0 200 400 600 800
Caudal-L/(min*m2)
50
Trabajo Encomendado
REFERENCIAS BIBLIOGRAFICAS
Libros
Páginas Web
1. [Link]
2. [Link]
3. [Link]
4. [Link]
5. [Link]
6. [Link]