Matlab - Como crear una condicion para saber si lo que se ingreso es una funcion?

 
Vista:
sin imagen de perfil

Como crear una condicion para saber si lo que se ingreso es una funcion?

Publicado por Juan (1 intervención) el 14/11/2015 06:27:18
Hola que tal a todos, antes que todo gracias por su atencion a esta pregunta o cuestion que tengo.
Sucede que quiero crear una condicion con un "if" que me permita evaluar en un programa de raices que es el de biseccion, que me permita verificar si la funcion que se ingresó esta bien escrita o no.

Es decir, si alguin ingresa en el "edit text" una funcion asi: x^3+2x, me debera mandar una cuadro de dialogo que diga "La funcion ingresada no es correcta o esta mal escrita" pues le faltaria el * que indique multiplicacion en "2*x", por ejemplo para corroborar que los intervalos eran correctos puse:

1
2
3
4
5
if a>b
msgbox("El intervalo es incorrecto, a debe ser menor que b")
else
%continua la ejecucion de mi programa.
end

Ahora quiero que evalue si la funcion que ingresan está bien escrita o no y quise poner esto

1
2
3
4
5
if  f==inline(f)
%continua la ejecucion de mi programa
else
msgbox("La funcion ingresada es incorrecta o mal escrita")
end

pero no resulta y eh buscado por todos lados y no eh podido encontrar algo que me ayude.
Espero alguien me pueda orientar, de antemano gracias por su atención.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Jorge De Los Santos
Val: 30
Ha disminuido su posición en 12 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Como crear una condicion para saber si lo que se ingreso es una funcion?

Publicado por Jorge De Los Santos (213 intervenciones) el 14/11/2015 07:00:57
Hola Juan.

En principio se me ocurren dos ideas de cómo hacerlo.

La primera consiste en utilizar expresiones regulares para procesar el string o cadena de texto e identificar patrones que pudiesen representar un error dada la sintaxis de MATLAB, por ejemplo para ver si existen productos de constantes por literales que no tengan el operador * enmedio, se haría algo como lo siguiente:

1
k = regexp(f,'(\d*\w)','match')

Y luego verificar si "k" produce algún resultado, entonces habría un error de ese tipo. Luego, para cada posible error en la sintaxis de una función tendrías que ir programando los casos, lo cual resultaría un poco tardado quizá.

Para la segunda forma, yo te recomendaría utilizar algo así como un "prueba-error" para verificar que tu función está bien escrita. Suponiendo que tú función será siempre una función dependiente de x, es decir f(x), entonces puedes asignar un valor temporal a x, y evaluar la función con ese valor, si no te devuelve un error al tratar de evaluarla entonces procedes, de lo contrario envías un mensaje de error/advertencia, por ejemplo:

1
2
3
4
5
6
try
    x = 10;
    eval(f);
catch err
    msgbox("La función ingresada es incorrecta");
end




Saludos.

Jorge De Los Santos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar