sábado, 22 de marzo de 2014

Aproximación a las Rectas de Duhring 0.1



Como  todos los estudiantes de  ingeniería química  sufrimos por los diagramas,  Mudy, Duhring,  y otros mas que hasta duele la cabeza. 

Esta aplicacion esta provicionalmente desarrollada en lenguaje C, forma parte de un pequeño proyecto personal que iré actualizando con el tiempo sobre la materia de evaporadores, por lo que  les dejo la aplicacion en este enlace el programa es de prueba tal vez contenga algún error, así que espero de sus comentarios para  poder mejorarlo.
como verán en la muestra de ejecución,  la temperatura esta en Fahrenhit, la concentración en fracción masa. Aun que los resultados los expresa  en las  magnitudes mas comunes de  de medición de  temperaturas.


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

miércoles, 19 de febrero de 2014

Regresión Lineal-- Usando Lenguaje C


regresion  lineal programa
#include<stdio.h>
#include<stdlib.h>
int main(){
    int i,n;
    float x,y,sumx,sum_sqx,sumy,sumxy,a,b;
    printf("\n Numero de datos: ");
    scanf("%d",&n);
    sumx =0;
    sum_sqx =0;
    sumy=0;
    sumxy=0;
     for(i=0;i<n;i++){
   printf("X: ");
   scanf("%f",&x);
   printf("Y: ");
   scanf("%f",&y);
   sumx = sumx +x;
   sum_sqx = sum_sqx + (x*x);
   sumy= sumy + y;
   sumxy = sumxy + (x*y);
   }
    b = (sumxy-(sumx*sumy)/n)/(sum_sqx-(sumx*sumx)/n);
    a = (sumy/n)-(b*sumx/n);
    printf("\nEcuacion lineal: Y= %f + %fX\n",a,b);
    system("pause");
    return 0;
 }

Numero de datos: 5
X: 1
Y: 4.3
X: 3
Y: 4.64
X: 5
Y: 4.98
X: 7
Y: 5.32
X: 9
Y: 5.7

Ecuacion lineal: Y= 4.117999 + 0.174000X
sh: 1: pause: not found

sábado, 8 de febrero de 2014

For y While en lenguaje C

Seguimos con el pequeño curso introductorio a lenguaje C aplicado a  ing Química.

un Pequeño programa en el que se aplican estas dos estructuras, y en ambos casos se obtiene el mismo resultado de una reacción química  de orden cero de la forma A ---> B, con CAo = 15 gmol/L y una K = 0.0567.


#include <stdio.h>
#include<stdlib.h>
int main()
{
   double conc, inicon,k;
    int tiempo;
    inicon = 15.00;
    k = 0.0567;
    tiempo = 0;
     printf("\n tiempo(s) Conc(gmol/L) \n ");
while(tiempo  <= 60){
 conc = inicon - k*tiempo;
  printf("%d \t \t %1f\n",tiempo,conc);
    tiempo = tiempo +10;

  } 
system ("pause");
    return 0;
} 
// segunda estructura usando For
#include <stdio.h>
#include<stdlib.h>
int main()
{
   double conc, inicon,k;
    int tiempo;
    inicon = 15.00;
    k = 0.0567;
    
     printf("\n tiempo(s) Conc(gmol/L) \n ");
  for (tiempo=0;tiempo<=60; tiempo = tiempo +10) {
   conc = inicon - k*tiempo;
   printf(" %d\t\t %1f\n",tiempo,conc);
   }
system ("pause");
    return 0;
}

Ejecuntando el programa.
tiempo(s) Conc(gmol/L) 
 0     15.000000
10     14.433000
20     13.866000
30     13.299000
40     12.732000
50     12.165000
60     11.598000
sh: 1: pause: not found


------------------
(program exited with code: 0)
Press return to continue

miércoles, 5 de febrero de 2014

if- else en C

Continuamos con estos post acerca del lenguaje C aplicado a las problemas sencillos de ingeniería (especialmente a Química). Y toca el turno a la estructura IF- ELSE.


if (condicion1)
  accion1
else (condicion2)
  accion2

Una aplicacion Sencilla seria el No de Reynolds.
#include<stdio.h>
#include<stdlib.h>
#define LIMITE 2100
int main(){
	int nre;
	float D,den,m ;
	//inicia entrada de Datos
	printf("\n Numero de Reynols \n ");
	printf("\n Valor del Diametro de la tuberia \n");
	scanf(" %f",&D);
	printf("\n Valor de la Dencidad \n ");
	scanf("%f",&den);
	printf("Viscosidad cinematica del fluido ");
	scanf("%f",&m);
	//termina entrada de Datos
	/// calculos
	nre = (D*den)/m;
	// procesando informacion 
	printf("El numero de reynols es %d",nre);
	if (nre < LIMITE)
	printf("\n  El fluido es Laminar \n\n");
	else
	printf ("\n  fluido no es Laminar \n\n ");
	system ("pause");
	return 0;
	}
Numero de Reynols 
 
 Valor del Diametro de la tuberia 
0.23

 Valor de la Dencidad 
 1.255
Viscosidad cinematica del fluido 0.000356
El numero de reynols es 810
  El fluido es Laminar 

sh: 1: pause: not found


------------------
(program exited with code: 0)
Press return to continue

martes, 4 de febrero de 2014

Usando Arrays en C para convertir un conjunto de Temperaturas

#include<stdio.h>
#include<stdlib.h>
int main()
{
  int temp[4][4],i;
  for(i=0;i<4; i++){
   temp[i][0] = (i*50)+100;
   temp[i][1] = (temp[i][0]*1.8 )+ 32;
   temp[i][2] = temp[i][0]+273;
   temp[i][3] = temp[i][0] + 460;
   
   }
  printf("\n Tabla de Conversion de Temperaturas \n ");
  printf("°C     °F      K      R \n ");   
  for(i=0; i<4; i++){  
   printf("\n %d    %d    %d     %d \n", temp[i][0], temp[i][1],
   temp[i][2], temp[i][3]);
   }
 system ("pause");
 return 0;
  
}


Resultado

Con esta  post   iniciamos  un pequeño curso de lenguaje C   para  resolver problemas clásicos de la ingeniería desde cero. Especialmente  aplicado a  ingeniería química.