• Domingo 17 de Noviembre de 2024, 23:42

Autor Tema:  Evaluar Una Funcion En String "x+2^x"  (Leído 1671 veces)

walterjb

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Evaluar Una Funcion En String "x+2^x"
« en: Viernes 17 de Septiembre de 2004, 07:45 »
0
Hola quisiera que me ayuden a elaborar un algoritmo para la evvaluación de una funcion simbolica, por ejemplo:
     
Si tengo f(x)=x^2+x*2 ingresado en una variable tipo string cad="x^2+x*2" entonces deberia hacer una función en la que al pasarle esta cadena y el valor de x (real por su puesto) me de el resultado ya en formato de numero real.

Yo habia pensado en una función recursiva la cual desarrollaba primero los parentesis que si es que habia se volvia a llamar (recursividad), luego las funciones (sin, cos,.. las cuales aceptaban sus argumentos entre corchetes) luego seguia con las potencias, divisiones, productos, restas y sumas, pero al ir resolviendo las exigencias que se hiban presentando me salio el error stack over flow, al programarlo en java que es donde actualmente me estoy desenvolviendo.

Por favor si alguien puede apoyeme.  :)

Ruben3d

  • Miembro HIPER activo
  • ****
  • Mensajes: 710
  • Nacionalidad: es
    • Ver Perfil
    • Web personal
Re: Evaluar Una Funcion En String "x+2^x"
« Respuesta #1 en: Viernes 17 de Septiembre de 2004, 13:15 »
0
Hola.

Yo lo que haría sería una función que me retornara los tokens de la cadena en una estructura. Por ejemplo, para "x+2^x" crearía una lista de elementos de este estilo: operando(x), operador(+), operando(2), operador(^), operando(x).

Una vez hecho esto, voy construyendo un árbol leyendo de izquierda a derecha los elementos de la lista, usando la gramática del lenguaje que deberás tener definida. Una vez creado el árbol, cada nodo intermedio ha de ser un operador y cada hoja un operando.

Ésto que te he explicado es una versión reducida (muy reducida) de lo que se explica aqui:
Procesadores de Lenguajes


Un saludo.

Ruben3d