Me lo contaron y lo olvidé, lo leí y lo entendí, lo hice y lo aprendí.





sábado, 7 de abril de 2012

[Función]Convierte un String a una función matemática

Es una función que, a base de una ecuación matemática en String, devuelve una función que resuelve la ecuación en base de un valor 'x'.

Es parecido a lo que hace la función SciTools.StringFunction pero corregiendo el bug al elevar un número negativo a una potencia fraccional. Primero el código y luego unos ejemplos

from math import *
def converter(fx):
        """Devuelve una funcion que resuelve, mediante la varable 'x', la funcion expresada en la cadena de texto 'fx'
"""
      def operacion(x):
          funcion=fx
          resultado=funcion.replace('x',str(x))
          resultado = eval(resultado)
          return resultado
     return operacion
 

Por ejemplo, tengo la siguiente ecuación en String:
"2*x**2 + 1"
(Aclaro que la ecuación debe estar en formato de Python), entonces hago lo siguiente:
f=converter("2*x**2 + 1")
#f ya es una función que resuelve la ecuación con cualquier número como parámetro, por ejemplo:

print f(1)
3
print f(2)
9
print f(0)
1


Y como dije, no tiene el bug que se obtiene al elevar un número negativo al elevarlo a una potencia fraccional.

No hay comentarios:

Publicar un comentario