Mostrando entradas con la etiqueta Heramientas de Ingenieria. Mostrar todas las entradas
Mostrando entradas con la etiqueta Heramientas de Ingenieria. Mostrar todas las entradas

martes, 30 de septiembre de 2014

Interpolacion por el Método de Newton

#include<stdio.h>
#include<conio.h>
#include<math.h>
#include<process.h>
#include<string.h>

void main(){
 int n;
 int i,j;
 float ax[10];
 float ay[10];
 float y=0;
 float x;
 float h;
 float p;
 float diff[20][20];
 float y1,y2,y3,y4;

 printf("\n Numero de Terminos: ");
 scanf("%d",&n);
 printf("\n\n Valor de X: ");
 for(i=0;i<n;i++){
  printf("\n\n Valor de x%d: ",i+1);
  scanf("%f",ax[i]);
  
 }
 
  printf("\n\n Valor de Y: ");
 for(j=0;j<n;j++){
  printf("\n\n Valor de y%d: ",i+1);
  scanf("%f",ay[i]);
  
 }
printf("\n Valor para x: ");
printf("\n Valor para y: ");
scanf("%f",&x);
 h = ax[1]-ax[0];
  for(i=0;i<n-1;i++){
   diff[i][1]=ay[i+1]-ay[i];
  }
   for(j=2;j<=4;j++){
    for(i=0;i<n-j;i++){
     diff[i][j]=diff[i+1][j-1]-diff[i][j-1];
    }
   }
   i=0;
    do{
     i++;
    }while(ax[i]<x);
    i--;
    p=(x-ax[i])/h;
    y1= p*diff[i-1][1];
    y2=p*(p+1)*diff[i-1][2]/2;
    y3=(p+1)*p*(p-1)*diff[i-2][3]/6;
    y4 = (p+2)*(p+1)*p*(p-1)*diff[i-3][4]/24;
    y =ay[i]+y1+y2+y3+y4;
      
      printf(" x= %6.4f, y= 6.4%f ",x,y);
      printf("\n\n\n Enter para Salir");
      getch();
}

martes, 1 de julio de 2014

Método de Falsa Posicion en C

# include <stdio.h>
# include <math.h>
# include<conio.h>
# include<string.h>
# include<process.h>
#define TOL 0.000005
#define f(x) 3*x+sin(x)-exp(x)

void falsaposicion();

void main() {
	printf("\n Solucion por el metodo de Falsa posicion \n");
	printf("\n La Ecuacion a resolver es: ");
	printf("\n\t\t\t 3*x+sin(x)-exp(x)= 0 \n\n");
falsaposicion();	
}

void falsaposicion(){
	float f0,f1,f2;
	float x0,x1,x2;
	int itr;
	int i;
	printf("Numero Maximo de Iteracciones: ");
	scanf("%d",&itr);
	for(x1=0.0;;){
		f1=f(x1);
		if (f1>0){
			break;
		}
		 else {
		 	x1 = x1+0.1;
		 }
	}
			
	x0= x1-0.1;
	f0 = f(x0);
	printf("\n\t\t----------------------------------------");
	printf("\n\t\t Iteraccion\t x\t\t F(X) \n");
	printf("\n\t\t----------------------------------------");
	  for(i=0;i<itr;i++){
	  	x2 = x0-((x1-x0)/(f1-f0))*f0;
	  	f2=f(x2);
	  	 if(f0*f2>0){
	  	 	x1=x2;
	  	 	f1=f2;
	  	 }
	  	   else {
	  	    	x0=x2;
	  	    	f0=f2;
	  	   }
	  	     if (fabs(f(2))>TOL){
	  	     	printf("\n\t\t%d\t%f\t%f\n",i+1,x2,f2);
	  	     }
	  }
	  printf("\t\t--------------------------------");
	  printf("\n\t\t\t Raiz= %f\n",x2);
	  printf("\t\t------------------------------");
	  getch();
			}

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.


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.

lunes, 29 de julio de 2013

valtitu.py 2.0 (Programa de valoración y titulacion de Soluciones )

Hace unos días atrás publicamos la  primera versión de programa de valoración de soluciones continuación les dejo la segunda versión, en esta hacemos uso de la librería tkinter.
 el código fuente es el siguiente:

##Programa de valoracion de Soluciones vercion 2
#### usando la ecuancion C1V1 = C2V2 
##### es necesario tener python 3.3 y la libreria tkinter
###### hecho por israel Nuñez 
####### Universidad Autonoma Metropolitana 
### isrant.blogspot.com
##### mexico D.F   


from tkinter import*
from tkinter import messagebox
import math

def variables(e):
    global cas
    var = lb.curselection()
    var1 = tuple(('0',))
    var2 = tuple(('1',))
    var3 = tuple (('2'))
    var4 = tuple (('3'))
    if var == var1:
        ##calculando C1
        cas = 1
        texto=Label(ventana,text='V2')
        texto.place(bordermode = OUTSIDE, height=20, width =100, x = 300, y = 60)
        texto = Label(ventana, text = "V1")
        texto.place(bordermode = OUTSIDE, height = 20, width = 100, x= 300, y= 100)
        texto = Label(ventana, text = "C2")
        texto.place(bordermode = OUTSIDE, height = 20, width = 100, x= 300, y= 140)
        textores2 = Label(ventana, text = "C1")
        textores2.place(bordermode = OUTSIDE, height = 20, width = 150, x = 50, y = 250)
    elif var == var2:
        ##calculando C2
        cas = 2
        texto=Label(ventana,text='V2')
        texto.place(bordermode = OUTSIDE, height=20, width =100, x = 300, y = 60)
        texto = Label(ventana, text = "V1")
        texto.place(bordermode = OUTSIDE, height = 20, width = 100, x= 300, y= 100)
        texto = Label(ventana, text = "C1")
        texto.place(bordermode = OUTSIDE, height = 20, width = 100, x= 300, y= 140)
        textores2 = Label(ventana, text = "C2")
        textores2.place(bordermode = OUTSIDE, height = 20, width = 150, x = 50, y = 250)
    elif var == var3:
        cas = 3
        ##calculando V1
        texto=Label(ventana,text='V2')
        texto.place(bordermode = OUTSIDE, height=20, width =100, x = 300, y = 60)
        texto = Label(ventana, text = "C1")
        texto.place(bordermode = OUTSIDE, height = 20, width = 100, x= 300, y= 100)
        texto = Label(ventana, text = "C2")
        texto.place(bordermode = OUTSIDE, height = 20, width = 100, x= 300, y= 140)
        textores2 = Label(ventana, text = "V1")
        textores2.place(bordermode = OUTSIDE, height = 20, width = 150, x = 50, y = 250)
    elif var ==var4:
        cas = 4
        ##calculando V2
        texto=Label(ventana,text='V1')
        texto.place(bordermode = OUTSIDE, height=20, width =100, x = 300, y = 60)
        texto = Label(ventana, text = "C1")
        texto.place(bordermode = OUTSIDE, height = 20, width = 100, x= 300, y= 100)
        texto=Label(ventana,text='C2')
        texto.place(bordermode = OUTSIDE, height = 20, width = 100, x= 300, y= 140)
        textores2 = Label(ventana, text = "v2")
        textores2.place(bordermode = OUTSIDE, height = 20, width = 150, x = 50, y = 250)
    else:
        messagebox.showerror('Error','Fuera de Rango')

##operacion del boton calcular
def calcular():
    global cas
    variable1 = vari1.get()
    variable2 = vari2.get()
    variable3 = vari3.get()
    if cas == 1:
        v2=float(variable1)
        v1= float(variable2)
        c2= float(variable3)
        ##operacion
        resultado  = (c2*v2)/v1
        rest.set(resultado)
    elif cas == 2:
        v2=float(variable1)
        v1 = float(variable2)
        c1 = float(variable3)
        resultado  = (c1*v1)/v2
        rest.set(resultado)
    elif cas == 3:
        v2=float(variable1)
        c1 = float(variable2)
        c2 = float(variable3)
        resultado  =(c2*v2)/c1
        rest.set(resultado)

    elif cas == 4:
        v1 = float(variable1)
        c1 = float(variable2)
        c2 = float(variable3)
        resultado = (c1 *v1)/c2
        rest.set(resultado)
        
        
    else:
        messagebox.showerror('Error','Selecciona una Variable')

def acerca():
    messagebox.showinfo('acerca de','Desarrollado por Israel Nuñez')
    
        
ventana = Frame (height = 300, width = 600)
ventana.pack(padx =10, pady = 10)

variable1 = DoubleVar()
variable2 = DoubleVar()
variable3 = DoubleVar()

cas = 0
rest = StringVar()
#probando listbox
textolb = Label(ventana, text = "Seleccione Variable")
textolb.place(bordermode = OUTSIDE, height = 20, width = 150, x= 100, y= 20)
lb = Listbox(ventana)
lb.insert(1,"C1")
lb.insert(2,"C2")
lb.insert(3,"V1")
lb.insert(3,"V2")
lb.bind('<>',variables)
lb.place(bordermode = OUTSIDE, height = 100, width = 150, x = 100, y= 40)
#boton calcular
boton = Button(ventana, text = "calcular",command= calcular )
boton.place(bordermode = OUTSIDE, height = 30, width =80, x=350, y = 200)
#boton acercade
boton2 = Button(ventana, text ="acerca de...", command = acerca)
boton2.place (bordermode = OUTSIDE , height = 30, width = 80, x= 450, y= 200)
#texto de presentacion
texto=Label(ventana,text='Variable 1')
texto.place(bordermode = OUTSIDE, height=20, width =100, x = 300, y = 60)
texto = Label(ventana, text = "Variable 2")
texto.place(bordermode = OUTSIDE, height = 20, width = 100, x= 300, y= 100)
texto = Label(ventana, text = "Variable 3")
texto.place(bordermode = OUTSIDE, height = 20, width = 100, x= 300, y= 140)
#Entrada de Datos
vari1 = Entry(ventana, textvariable =variable1)
vari1.place(bordermode= OUTSIDE, height= 30, width = 100, x= 400, y= 100)
vari2 = Entry(ventana,textvariable=variable2)
vari2.place(bordermode= OUTSIDE, height= 30, width = 100, x= 400, y= 140)
vari3 = Entry(ventana, textvariable = variable3)
vari3.place(bordermode = OUTSIDE, height = 30, width = 100, x= 400, y= 60)
#para mostrar resultados
textores = Label(ventana, text = "Resultado")
textores.place(bordermode = OUTSIDE, height = 20, width = 150, x= 100, y= 200)
textores2 = Label(ventana, text = "Variable")
textores2.place(bordermode = OUTSIDE, height = 20, width = 150, x = 50, y = 250)
res = Label(ventana,textvariable = rest, fg = "blue",bg = "yellow")
res.place(bordermode = OUTSIDE, height = 20, width = 200, x = 200, y = 250)

lunes, 22 de julio de 2013

Bioreactor para la produccion de Etanol

Este es un sistema no lineal de ecuaciones diferenciales y algebraicas, que describen la dinámica de un biorreactor continuo. El biorreactor simula la producción de etanol a través de la fermentación de levadura. El modelo se describe en:
ZK Nagy, modelo de control basado en un biorreactor de fermentación utilizando diseñan óptimo Redes Neuronales Artificiales, Chemical Engineering Journal, 127, 95-109, 2007.
DESCARGAR

jueves, 25 de abril de 2013

Aplicacion de Matlab a la Economia


En este ejemplo se pondrá de relieve cómo MATLAB se puede utilizar para llevar a cabo:

Análisis de distribución de valor actual neto de una mina

Modelización y simulación de los precios futuros de tasas de interés y rutas

Las evaluaciones de riesgo basadas en la distribución de los resultados económicos




jueves, 18 de abril de 2013

Ecuacion de Segundo Grado en Python 3 usando Tkinter

En el post anterior (16/abril) publicamos el código para la resolucion de ecuaciones  de segundo grado en python 3.x. Partiendo de este código anterior desarrollamos una aplicacion con interfaz de usuario, usando la librería tkinter, en nuestro intento por aprender programacion en python 3.3. El código queda como sigue.

## graficador de  la funciones
from tkinter import*
from tkinter import messagebox
import matplotlib.pyplot as plt
import numpy as np
ventana = Frame(height = 400, width = 400)
ventana.pack(padx = 10, pady = 10)
### Declarando Variables
a = DoubleVar()
b = DoubleVar()
c= DoubleVar()
restx1 = StringVar()
restx2 = StringVar()

#Declarando funciones 
### funcion graficar
def graficar():
     a = aA.get()
     b = bB.get()
     c = cC.get()
     ax = float(a)
     bx = float(b)
     cx  = float (c)
     x = np.arange(-10,10,0.5)
     y = ax*x**2 + bx*x + cx
     plt.plot(x,y)
     plt.title('a*x^2 + b*x + c = 0')
     plt.xlabel('X')
     plt.ylabel('Y')
     plt.show()

##termina funcion graficar
### inica funcion calcular
def calcular():

        
        a = aA.get()
        b = bB.get()
        c = cC.get()
        ax = float(a)
        bx = float(b)
        cx  = float (c)
        ## calculando Delta
        delta = float(bx**2-4*ax*cx)
           
        if delta<0:
                
                messagebox.showerror('Eror', 'No hay solucion')

        elif delta ==0:
            s == float(-bx/2*ax)
            messagebox.showinfo('resultado','Solucion unica ', s)
        else:
             
             
                  resultado = Label(ventana, text =
                                   "Resultado")
                  resultado.place(bordermode = OUTSIDE, height = 30, width= 100, x = 150, y= 250)
                  resultado1 = Label(ventana, text =
                                   "X1")
                  resultado1.place(bordermode = OUTSIDE, height = 30, width= 50, x = 180, y= 280)
                  resultado2 = Label(ventana, text =
                                   "X2")
                  resultado2.place(bordermode = OUTSIDE, height = 30, width= 50, x = 180, y= 310)
                  x1 = float((-bx+((bx**2 - 4*ax*cx))**0.5)/(2*ax))
                  x2 = float((-bx-((bx**2 - 4*ax*cx))**0.5)/(2*ax))
                  r1 = Label(ventana,textvariable = restx1)
                  r1.place(bordermode = OUTSIDE, height = 30, width= 50, x = 230, y= 280)
                  restx1.set(x1)
                  r2 = Label(ventana,textvariable = restx2) 
                  r2.place(bordermode = OUTSIDE, height = 30, width= 50, x = 230, y= 310)
                  restx2.set(x2)
                  
##iniciando maquetado de  interfaz
aA = Entry(ventana, textvariable = a)
aA.place(bordermode = OUTSIDE, height = 30, width = 50, x = 10, y = 40)
bB = Entry (ventana, textvariable = b)
bB.place(bordermode = OUTSIDE, height = 30, width = 50, x = 130, y = 40)
cC = Entry(ventana, textvariable = c)
cC.place(bordermode = OUTSIDE, height = 30, width = 50, x = 230, y = 40)
## entrada de TExto

xa = Label(ventana, text = "X^2 + ")
xa.place(bordermode = OUTSIDE, height = 30, width = 50, x =70,y=40 )
xb = Label(ventana, text = "X + ")
xb.place(bordermode = OUTSIDE, height = 30, width = 50, x = 180, y = 40)
xc = Label(ventana, text = "= 0 ")
xc.place(bordermode = OUTSIDE, height = 30, width = 50, x=280, y = 40)

### boton de graficar

graficar = Button ( ventana, text = "Graficar", command = graficar)
graficar.place(bordermode= OUTSIDE, height= 40, width = 100, x = 40, y = 200)

## boton calcular
calcular = Button (ventana, text = "Calcular", command = calcular)
calcular.place(bordermode = OUTSIDE, height = 40, width = 100, x = 160, y = 200)
## terminado el  maquetetado de la  GUI

ventana.mainloop()
Nuestro codigo ha crecido en gran manera, en el post anterios solo eran aproximadamente 30 lineas  y en este momento tenemos un total de 100 lineas de codigo  ptyhon 3.3. La apliacion queda de la siguiente manera.



















Compara la cantidad de codigo Python  vs la cantida de  Codigo Matlab, ¿Cual crees que es mas conveniente?, ¿Cual se te hace mas facil?, ¿Cual te enseñan en la facultad de ingenieria? Tu tienes la unica respuesta si deseas aprender python.