function lotecomplejo [t,x]=ode45(@lote,[0 2],[16 0 0 0]) subplot(4,1,1); plot(t,x(:,1)) subplot(4,1,2); plot(t,x(:,2)) subplot(4,1,3); plot(t,x(:,3)) subplot(4,1,4); plot(t,x(:,4)) function dx=lote(t,x) % definicion de parametros k1=5; k2=4; k3=3; k4=3; dx=zeros(4,1); % ecuaciones de diseño (balances de masa), x1 = Ca, x2 = Cb, x3 = Cc, x4 = Cd dx(1) = - k1*x(1); dx(2) = k1*x(1) - k2*x(2) + k3*x(3) - k4*x(2); dx(3) = k2*x(2) - k3*x(3); dx(4) = k4*x(2);
videotutoriales de matlab, octave, numpy, python, POA, algoritmia, simulacion de procesos en ingenieria quimica, y algo de ingenieria quimica
Mostrando entradas con la etiqueta Codigos de Matlab. Mostrar todas las entradas
Mostrando entradas con la etiqueta Codigos de Matlab. Mostrar todas las entradas
miércoles, 1 de julio de 2015
Ejemplo de un modelo de reactor lote. En Matlab
martes, 30 de junio de 2015
lunes, 12 de enero de 2015
Método de Regula Falsi en Matlab
Función principal
function []=regu_fal(x1, x2, n); fx1=f(x1); fx2=f(x2); c = x2 - ((f(x2)*(x2-x1))/(f(x2) - f(x1))) fc=f(c) if fx1*fx2<0; for i=1:n if fc<0 x1=c; fx1=f(x1); c = x1 - (fx1*(x1-x2)/(fx1-fx2)) fc = f(c) else x2=c; fx2=f(x2); c = x2 - (fx2*(x2-x1)/(fx2-fx1)) fc = f(c) end end else disp('Error en los Valores X1, X2'); end end
Ecuación a resolver.
function fx = f(x); fx = x^3-9*x+1; %% puedes cambiar por la funcion que gustes return;
jueves, 13 de marzo de 2014
obtencion de Datos por Interpolacion Usando Matlab
En ingeniería y algunas ciencias es frecuente disponer de un cierto número de puntos obtenidos por muestreo o a partir de un experimento y pretender construir una función que los ajuste.
Por lo que recurrimos a la interpolación que consistes en la obtención de nuevos puntos partiendo del conocimiento de un conjunto discreto de puntos.
Para eso disponemos de suficiente conocimiento matemático, adquirido durante el tiempo que estamos en la universidad, un que en la práctica se recure siempre a software para resolver este tipo de problemas y más cuando los datos son demasiado extensos.
Problema Tipo
Supongamos que tenemos una serie de Datos de una mezcla de Benceno y Tolueno representado x,y respectivamente, obtener la concentración correspondiente en x=0.45.
una pequeña comparacion de los tipos de interpolacion.>> x= 0:0.1:1.0; >> y = [0.0 0.211 0.378 0.512 0.623 0.714 0.791 0.856 0.911 0.959 1.00]; >> interp1(x,y,0.45,'lineal') ans = 0.6685 >> interp1(x,y,0.45,'cubic') ans = 0.6706 >> interp1(x,y,0.45,'spline')%spline cubicos ans = 0.6706 >> interp1(x,y,0.45,'nearest')%usando no finito de vecinos proximos(nearest neighbort) ans = 0.7140
%Comparadon métodos de interpolacion x= 0:0.1:.8; y = [0 10 5 20 10 30 15 40 20]; x_val = 0:0.01:.8; y_val1 = interp1(x,y,x_val,'linear'); y_val2 = interp1(x,y,x_val,'spline'); y_val3 = interp1(x,y,x_val,'cubic'); plot(x_val,y_val1,'--',x_val,y_val2,'.',x_val,y_val3,x,y,'o'); title('Comparacion de diferentes tipos de interpolacion'); grid
martes, 3 de diciembre de 2013
TeXed es una interfaz gráfica para la edición y vista previa de las ecuaciones de LaTeX para su uso en MATLAB
TEXED es una interfaz gráfica para la edición y vista previa de las ecuaciones de LaTeX para su uso en MATLAB. La principal diferencia entre las dos entradas es la capacidad de éste para devolver la cadena de TeX que el usuario hubiera hecho a mano a través de la interfaz gráfica de usuario, y el contenido de zip.
D.E.S.C.A.R.G.A.R
D.E.S.C.A.R.G.A.R
jueves, 21 de noviembre de 2013
Integrales definidas e Indefinidas en Matlab
>> %Integrales en Matlab >> %Integral indefinida >> syms >> syms x >> f= 2*x^4; >> F = int(f) F = (2*x^5)/5 >> %integral definida >> F = int(f,3,2) F = -422/5 >> %integrales impropias (al infinito) >> D = (exp(-x)*sin(x))/x D = (exp(-x)*sin(x))/x >> pretty (D) exp(-x) sin(x) -------------- x >> DD =int(D,0,inf) DD = pi/4 >> DD =int(D) DD = (ei(x*(- 1 - i))*i)/2 - (ei(x*(- 1 + i))*i)/2 >> pretty(DD) ei(x (- 1 - i)) i ei(x (- 1 + i)) i ----------------- - ----------------- 2 2 >>
sábado, 16 de noviembre de 2013
jueves, 24 de octubre de 2013
lunes, 21 de octubre de 2013
Modelo de reacciones en serie, usando Matlab
Tenemos la función en la que planteamos nuestras ecuaciones de balance.
Ahora este es nuestro programa principal, en el cual usamos en este caso la función serie donde tenemos nuestra ecuación plantead como dEct.%Modelo basico de reacciones en serie %esta funcion debe llamarse serie %x---k1-->y---k2--->z function dEct = serie(t,C) global k1 k2 dEct = [-k1*C(1);k1*C(1)-k2*C(2);k2*C(2)];
Corriendo la aplicacion.%programa principal clc clear global k1 k2 disp('Introduce los siguientes Datos') Cxo = input('Concentracion inicial de X (mol):_ '); Cyo = input('Concentracion inicial de Y (mol):_ '); Czo = input('Concentracion inicial de Z (mol):_ '); cuadal = input('Cuadal (l /min):_ '); k1 = input('K1:_ '); k2 = input('K2:_ '); tiempolimite = input('Tiempo maximo de reaccion:_ '); vectiempo = [0:0.0005:tiempolimite]; vecC = [Cxo Cyo Czo]; [t,C]= ode45('serie',vectiempo,vecC); plot(t,C(:,1),'-',t,C(:,2),':',t,C(:,3),'--'); xlabel('tiempo (min)'); ylabel('Concentracion (mol/litro)'); title('Modelo de Reaccion en Serie'); legend ('Cx','Cy','Cz'); Cmax = max(C(:,2)); tmax = t(find(C(:,2)==(max(C(:,2))))); Vol = cuadal*tmax
Introduce los siguientes Datos Concentracion inicial de X (mol):_ 3.5 Concentracion inicial de Y (mol):_ 1.23 Concentracion inicial de Z (mol):_ 0 Cuadal (l /min):_ 28.598 K1:_ 0.562 K2:_ 0.123 Tiempo maximo de reaccion:_ 25 Vol = 83.2488
jueves, 17 de octubre de 2013
Derivadas en Matlab.
Seguimos con las publicaciones de Matlab para calculo, ahora toca el tema de derivadas.
>> syms x >> f = 2*x^2; >> %procedemos a derivarla mendiante el comando diff() >> diff(f) ans = 4*x >> %% DERIVADA PARCIAL >> syms y >> F= 2*x^3*y; >> diff(F,x)% con respecto a X ans = 6*x^2*y >> diff(F,y)% con respecto a Y ans = 2*x^3 >> % las letras que son consideras literales son: x,w,y,z >> %todas las demas letras son consideradas constantes >> syms a >> f2 = 3*a*x^2 f2 = 3*a*x^2 >> diff(f2) ans = 6*a*x >> syms x n >> f3 = x^n; >> diff (f3) ans = n*x^(n - 1) >> f3 = sqrt(x^n); >> F2 = diff(f3) F2 = (n*x^(n - 1))/(2*(x^n)^(1/2)) >> % si nos damos cuenta tenemos en estos 2 utimos casos las formulas de derivacion >> pretty(F2) n - 1 n x --------- n 1/2 2 (x ) >> ans ans = n*x^(n - 1) >> pretty (ans) n - 1 n x
jueves, 10 de octubre de 2013
Calculo de Limites en Matlab
Hace un tiempo atrás cursando introducción al calculo en la universidad los temas de limites, limites laterales, limites en el infinito, continuidad. fueron un dolor de cabeza, aun que debo confesar que ese dolor de cabeza aumento demasiado cuanto curse ecuaciones Diferenciales. Buscando un poco aligerar la carga de algún chico que curse estas materias prepare una serie de post referentes a calculo utilizando Matlab.
>> %ejemplo de un limite en Matlab >> syms x >> limit (x^2,x,3) ans = 9 >> %ahora calcularemos un limite en el infinito >> limit(sqrt(x^2+1),x,inf) ans = Inf >> %otro ejemplo muy poco conocido es el calculo de los limites laterales en matlab >> limit(tan(x),x,pi/2,'left') %limite por la izquierda ans = Inf >> limit(tan(x),x,pi/2,'right') %limite por la drecha ans = -Inf >> % en este caso los limites tando de la derecha e izquierda no son iguales entonces >> %% la funcion no es continua >>
martes, 24 de septiembre de 2013
martes, 17 de septiembre de 2013
Método de Gauss-Jordan en Matlab (en forma de función)
function respuesta=gauss(a,b) %%---obtener la solcuion de un sistema de ecuaciones por el metod de gauss %%------------------------------------------------------------------------ % a= matriz cuadrada con los coefcientes del sistema % b= los coeficientes de las igualdades de las ecuaciones del sistema %*************************************************************************** variables=length(a); for i=1:variables aux=1/a(i,i); %*******Convirtiendo en 1 el elemnto de la matriz identidad****** b(i)=b(i)*aux; for j=1:variables a(i,j)=a(i,j)*aux; end %//*******eliminando las filas precedentes****************** for j=1:i-1 aux=-1*a(j,i); b(j)=b(j)+b(i)*aux; for k=1:variables a(j,k)=a(j,k)+aux*a(i,k); end end %//*******eliminando las filas posteriores****************** for j=i+1:variables aux=-1*a(j,i); b(j)=b(j)+b(i)*aux; for k=1:variables a(j,k)=a(j,k)+aux*a(i,k); end end end disp(a); respuesta=b;
viernes, 13 de septiembre de 2013
Factor LU de matriz-- en Matlab
ejecutando la funcionfunction [L,U]= factorlu (A) n=length(A); U=A; L=eye(n); for p=1:n for q = p+1:n L(q,p)=U(q,p)/U(p,p); U(q,p:n)=U(q,p:n)-U(p,p:n)*L(q,p); end end
>> A = [1 2 2; 4 4 2; 2 6 4]; >> [L,U]=factorlu(A) L = 1.0000 0 0 4.0000 1.0000 0 2.0000 -0.5000 1.0000 U = 1 2 2 0 -4 -6 0 0 -3
miércoles, 4 de septiembre de 2013
jueves, 29 de agosto de 2013
jueves, 22 de agosto de 2013
miércoles, 14 de agosto de 2013
orderseek--Encontrar el orden de una reacción Química en Matlab
Este pequeño programa hecho en Matlab nos sirve para hallar el orden de una reacción química, cabe señalar que este programa no es creación mía, pero lo estoy usando como punto de partida para crear un propio programa ya que en el caso de reacciones químicas tenemos muchos casos como son, volumen constante, volumen Variable, Reversibles, etc.
lunes, 5 de agosto de 2013
Diagrama Liquido- Vapor en un proceso Isobarico-- usando Matlab
El modelo de Wilson permite que el programa para tener en cuenta la desviación del comportamiento ideal en la fase líquida. El usuario debe introducir bajo presiones moderadas ya que el término de corrección a alta presión no está incluido.
Suscribirse a:
Entradas (Atom)