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

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

Método de McCabe Thiele para destilación fraccionada.

**** DESCARGAS ****

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.

 
>> 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
una pequeña comparacion de los tipos de interpolacion.

%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

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

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.
%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)];
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.
%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
Corriendo la aplicacion.
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, 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

function [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
ejecutando la funcion
>> 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, 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.