martes, 30 de julio de 2013

"Matlab for Genius", Busqueda de la solucion de una Ecuacion--- Método Grafico





Hace unos días atrás me enviaron una consulta de como encontrar la solución de  una ecuación en matlab.
supongamos que tenemos la siguiente ecuación.
2log (x) = 2 - (x)^(1/2)
en la que necesitaros encontrar el punto en el que se encuentra nuestra solución, para ello usaremos  en esta entrega el método gráfico.




>> %declaramos un vector x donde acotaremos nuestra solucion
>> x = 1:0.01:10;
>> % formaremos dos variables en las que  estaran nuestras ecuaciones
>> f1 = 2*log(x);
>> f2 = 2 -x.^(1/2);
>> plot(x,f1)
>> hold on
>> plot(x,f2)
>> hold off
el gráfico nos queda de la siguiente manera, donde el punto de intersección  es la solución.


Multiples estados estacionarios, estudio de un Catalizador

El problema catalizador adiabática se presenta en el campo de la ingeniería química. Si cinética de las reacciones químicas dentro de un cuerpo de catalizador sólido se ven influidas por la transferencia de masa múltiples estados estacionarios son posibles para una cierta gama de los parámetros que rigen: número de Arrhenius, número Prater y módulo de Thiele.

 

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)

miércoles, 24 de julio de 2013

Manejo de Listbox en Python 3.x. Usando Tkinter

Como ven es una pequeña aplicacion desarrollada en Python usando Tkinter en especial me enfoco en el uso de los Listbox, como veran es la aplicacion de todos los posibles casos del teorema de pitagoras, la funcion que controla el Listbox tiene por nombre hola, para que la identifiquen.




## teoremas para triangulos
#pitagoras9
from tkinter import*
from tkinter import messagebox
import math

def hola(e):
    global cas
    var = lb.curselection()
    var1 = tuple(('0',))
    var2 = tuple(('1',))
    var3 = tuple (('2'))
    if var == var1:
        ##calculando cateto opuesto
        cas = 1
        texto = Label(ventana, text = "Hipotenusa")
        texto.place(bordermode = OUTSIDE, height = 20, width = 100, x= 300, y= 100)
        texto = Label(ventana, text = "C. Adyacente")
        texto.place(bordermode = OUTSIDE, height = 20, width = 100, x= 300, y= 140)
        textores2 = Label(ventana, text = "C. Opuesto")
        textores2.place(bordermode = OUTSIDE, height = 20, width = 150, x = 50, y = 250)
    elif var == var2:
        ##calculando cateto Adyacente
        cas = 2
        texto = Label(ventana, text = "Hipotenusa")
        texto.place(bordermode = OUTSIDE, height = 20, width = 100, x= 300, y= 100)
        texto = Label(ventana, text = "C. Opuesto")
        texto.place(bordermode = OUTSIDE, height = 20, width = 100, x= 300, y= 140)
        textores2 = Label(ventana, text = "C. Adyacente")
        textores2.place(bordermode = OUTSIDE, height = 20, width = 150, x = 50, y = 250)
    elif var == var3:
        cas = 3
        ##calculando hipotenusa
        texto = Label(ventana, text = "C. Opuesto")
        texto.place(bordermode = OUTSIDE, height = 20, width = 100, x= 300, y= 100)
        texto = Label(ventana, text = "C. Adyacente")
        texto.place(bordermode = OUTSIDE, height = 20, width = 100, x= 300, y= 140)
        textores2 = Label(ventana, text = "Hipotenusa")
        textores2.place(bordermode = OUTSIDE, height = 20, width = 150, x = 50, y = 250)
    else:
        print ('Fuera de Rango')

##operacion del boton calcular
def calcular():
    global cas
    variable1 = vari1.get()
    variable2 = vari2.get()
    if cas == 1:
        h=float(variable1)
        ca = float(variable2)
        ##operacion
        resultado  = math.sqrt((h*h) - (ca*ca))
        rest.set(resultado)
    elif cas == 2:
        h=float(variable1)
        co = float(variable2)
        resultado  = math.sqrt((h*h) - (co*co))
        rest.set(resultado)
    elif cas == 3:
        co=float(variable1)
        ca = float(variable2)
        resultado  = math.sqrt((co*co) + (ca*ca))
        rest.set(resultado)
        
    else:
        messagebox.showerror('Error','Selecciona una Variable')
        
    

          
ventana = Frame (height = 300, width = 600)
ventana.pack(padx =10, pady = 10)

variable1 = DoubleVar()
variable2 = 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,"Cateto Opuesto")
lb.insert(2,"Cateto Abyacente")
lb.insert(3,"Hipotenusa")
lb.bind('<>',hola)
lb.place(bordermode = OUTSIDE, height = 70, 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)
#texto de presentacion
texto = Label(ventana, text = "Variable 1")
texto.place(bordermode = OUTSIDE, height = 20, width = 100, x= 300, y= 100)
texto = Label(ventana, text = "Variable 2")
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)
#para mostrar resustados
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

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

Un pequeño programa creado en python, para la valoración de soluciones química,  (algo de lo que este trimestre me encontré en química de soluciones). Estando algo aburridos por las vacaciones trataremos de publicar diariamente en el blog, por lo que les dejo este programa, es muy simple y si estas empezando a desarrollar tus propios programas en python 3.x de sera de mucha ayuda.  El código queda como sigue.

#### Valoraciones y Titulacion

print('Valoracion de una Solucion. (1)')
print('Titulacion de una solucion. (2)')

print('Seleccione la opcion adecuada')

opcion = int(input(':_ '))

if opcion == 1:
    print('++++++++++++++++++++++++++++++++++++++++++++++++++++++++++')
    print('Formula  M /peq = V*N')
    print('Selecionando la Variable a encontrar')
    print('M.........(1)')
    print('V.........(2)')
    print('N.........(3)')
    opcion2 = int(input('Seleciona Variable:_ '))
    if opcion2 ==1:
        print('Tu Variable a encontrar es M')
        print('******************************************************')
        v = float(input('V de la Solucion: '))
        n = float(input('N de la Solucion: '))
        peq = float(input('Peso Equivalente: '))
        ## aplicando formula
        m = (v*n)*peq
        print ('Se necesitan',m,'para llevar acabo la titulacion')
        print('******************************************************')
    elif opcion2 ==2:
        print('Tu Variable a encontrar es V')
        print('******************************************************')
        n = float(input('N de la Solucion: '))
        peq = float(input('Peso Equivalente: '))
        m = float(input('M a emplear :    '))
        a = (m/peq)
        v = (a/n)
        print ('Se necesitan',v,'para llevar acabo la titulacion')
        print('******************************************************')
    elif opcion2 ==3:
        print('Tu Variable a encontrar es N')
        print('******************************************************')
        v = float(input('V de la Solucion: '))
        peq = float(input('Peso Equivalente: '))
        m = float(input('M a emplear :    '))
        a = (m/peq)
        n = (a/v)
        print ('La normalidad es: ',n)
        print('******************************************************')   
    else:
        print('Fuera de Rango sólo se Admiten 3 casos')


elif opcion == 2:
    print('++++++++++++++++++++++++++++++++++++++++++++++++++++++++++')
    print('formula C1V1 = C2V2')
    print('Para Variables C1V1 .....(1)')
    print('Para Variables C2V2......(2)')
    opcion3 = int(input('Seleccione Opcion:_ '))
    if opcion3 == 1:
        print('conjunto de variables Seleccionadas : C1V1')
        print('******************************************************')
        print('C1.....(1)')
        print('V1.....(2)')
        opcion4 = int(input('Seleccione una Opcion:_ '))
        if opcion4 == 1:
            print('Variable a encontrar C1')
            print('******************************************************')
            v1 = float(input('V1:_ '))
            v2 = float(input('V2:_ '))
            c2 = float(input('C2:_ '))
            c1 = (v2*c2)/v1
            print('El valor de C1 es:  ',c1)
            print('******************************************************')
        elif opcion4 == 2:
            print('Variable a encontrar V1')
            print('******************************************************')
            c1 = float(input('C1:_ '))
            v2 = float(input('V2:_ '))
            c2 = float(input('C2:_ '))
            v1 = (v2*c2)/c1
            print('El valor de V1 es:  ',v1)
            
        else:
            print('Solo de Admiten 2 casos, Fuera de Rango')
    elif opcion3 == 2:
        print('Conjunto de Variables Seleccionadas:  C2V2')
        print('******************************************************')
        print('C2.....(1)')
        print('V2.....(2)')
        opcion5= int(input('Seleccione una Opcion:_ '))
        if opcion5 == 1:
            print('Variable a encontrar C2')
            print('******************************************************')
            v1 = float(input('V1:_ '))
            v2 = float(input('V2:_ '))
            c1 = float(input('C1:_ '))
            c2 = (v1*c1)/v2
            print('El valor de C2 es:  ',c2)
            print('******************************************************')
        elif opcion5 == 2:
            print('Variable a encontrar V2')
            print('******************************************************')
            c1 = float(input('C1:_ '))
            v1 = float(input('V1:_ '))
            c2 = float(input('C2:_ '))
            v2 = (v1*c1)/c2
            print('El valor de V1 es:  ',v2)
        
    else:
        print('Fuera de rango solo se admiten 2 casos')
else:
    print('**********************************************************')
    print('Fuera de Rango solo se admiten 2 casos')
Ejecutando el programa

Valoracion de una Solucion. (1)
Titulacion de una solucion. (2)
Seleccione la opcion adecuada
:_ 2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
formula C1V1 = C2V2
Para Variables C1V1 .....(1)
Para Variables C2V2......(2)
Seleccione Opcion:_ 1
conjunto de variables Seleccionadas : C1V1
******************************************************
C1.....(1)
V1.....(2)
Seleccione una Opcion:_ 1
Variable a encontrar C1
******************************************************
V1:_ 3.4
V2:_ 15
C2:_ 0.34
El valor de C1 es:   1.5000000000000002
******************************************************