SoloCodigo

Programación Específica => Diseño de Algoritmos => Mensaje iniciado por: walterjb en Viernes 17 de Septiembre de 2004, 07:45

Título: Evaluar Una Funcion En String "x+2^x"
Publicado por: walterjb en Viernes 17 de Septiembre de 2004, 07:45
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.  :)
Título: Re: Evaluar Una Funcion En String "x+2^x"
Publicado por: Ruben3d en Viernes 17 de Septiembre de 2004, 13:15
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 (http://polaris.lcc.uma.es/docencia/ETSIInf/pl/apuntes/pl1/)


Un saludo.

Ruben3d