Ir al contenido


Foto

evaluador de funciones


  • Por favor identifícate para responder
8 respuestas en este tema

#1 kevo

kevo

    Newbie

  • Miembros
  • Pip
  • 4 mensajes

Escrito 04 noviembre 2013 - 08:24

hola a todos....  perdon soy nuevo en el foro y  nesecito ayuda...
necesito codificar un evaluador de funciones en delphi7 y no se cm hacerlo no se si me pudieran dar una mano o alguna pagina de recomendacion
les quedaria muy agradecido
:cheesy:
  • 0

#2 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 05 noviembre 2013 - 01:09

¿podrías detallar un poco más lo que necesitas amigo?
  • 0

#3 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.301 mensajes
  • LocationArgentina

Escrito 05 noviembre 2013 - 06:40

Bienvenido a DelphiAccess, espero que esta comunidad se convierta en tu segundo hogar.

¿Evaluador de funciones? No comprendo que es lo que buscas hacer.
Necesitas explicar bien que es lo que quieres, porque no se te entiende. Por favor danos detalles, no te limites en las palabras ¡que no te vamos a cobrar por ellas!

Saludos,
  • 0

#4 kevo

kevo

    Newbie

  • Miembros
  • Pip
  • 4 mensajes

Escrito 05 noviembre 2013 - 01:25

gracias x la vienvenida y espero lograr pertenecer y ser uno mas de la comunidad...... y  bueno miren yo hice un programa para evaluar la funcion pero tengo q ingresar por pantalla sus limites y su cota........ lo q yo necesito es simplemente ingresar una funcion cualquiera y q me salga el resultado su error sus limites,etc aqui les mando lo q hice tal ves de aaquii se pueda arreglar



delphi
  1. function bisa(z:real):real;
  2. begin
  3. bisa:=power(z,3)-2*sin(z);
  4. end;
  5.  
  6. procedure TForm1.Button1Click(Sender: TObject);
  7. var
  8. a,b,c,ai,bs,fa,fb,fc,tol,error:extended;
  9. k,n:integer;
  10. begin
  11. a:=StrToFloat(edit2.text);
  12. b:=StrToFloat(Edit3.text);
  13. ai:=a;bs:=b;
  14. tol:=StrToFloat(edit4.text);
  15. n:=ceil(log10((b-a)/tol)/log10(2));
  16. StringGrid1.RowCount:=n;
  17. StringGrid1.ColCount:=6;
  18. StringGrid1.cells[0,0]:='Iter';
  19. StringGrid1.cells[1,0]:='x';
  20. StringGrid1.cells[2,0]:='f(x)';
  21. StringGrid1.cells[3,0]:='Error';
  22. StringGrid1.cells[4,0]:='f(a)';
  23. StringGrid1.cells[5,0]:='f(b)';
  24. fa:=bisa(a); fb:=bisa(b);
  25. if sign(fa)=sign(fb) then
  26. label7.caption:='no existe solucion'
  27. else
  28. begin
  29.   error:=b-a;
  30.   for k:=1 to n do
  31.     begin
  32.     error:=error/2;
  33.     c:=a+error;
  34.     fa:=bisa(a);
  35.     fc:=bisa(c);
  36.     if sign(fa)<> sign(fc) then
  37.     begin
  38.     b:=c;
  39.     fb:=fc;
  40.     end
  41.     else
  42.     begin
  43.     a:=c;
  44.     fa:=fc;
  45.     end;
  46.       StringGrid1.cells[0,k]:=IntToStr(k);
  47.       StringGrid1.cells[1,k]:=FloatToStrF(c,ffFixed,15,8);
  48.       StringGrid1.cells[2,k]:=FloatToStrF(fc,ffFixed,15,8);
  49.       StringGrid1.cells[3,k]:=FloatToStrF(error,ffFixed,15,8);
  50.       StringGrid1.cells[4,k]:=FloatToStrF(fa,ffFixed,15,8);
  51.       StringGrid1.cells[5,k]:=FloatToStrF(fb,ffFixed,15,8);
  52.       end;
  53.     end;
  54.                       { label7.Caption:='los valores evaluadas en el intervalo['+FloatToStrF(ai,ffFixed,10,3)+'';
  55.                       'en '+IntToStr(n)+ ' Iteracciones'; }
  56.                       label5.caption:='La solucion es';
  57.                       edit5.Text:=FloatToStr((a+b)/2);
  58.                       label6.Caption:='La funcion evaluada es';
  59.                       edit6.text:=FloatToStr(bisa(a+b)/2);
  60.                       end;



a si tampoco pude hacer funcionar mi label7.....
xfa si me podrian dar una mano busque en todo lado y no consegui nada ahora no se q voy hacer
  • 0

#5 Sergio

Sergio

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.092 mensajes
  • LocationMurcia, España

Escrito 05 noviembre 2013 - 04:20

Busca por "delphi web script" (dws), te permite enviarle código delphi en un tstrings y te lo compila y evalúa. Es mucho mas potente de lo que necesitas, pero es sencillo adaptarlo a tu caso creo, bastaría con

a: double;
begin
  a:= +TuFormulaAqui+;
end;

Compilas poniendo tu formula en su sitio, ejecutas, y le pides el valor final de la variable a, y listo.

Tendrás que leerte la documentación y esas cosas pero bueno, te servirá, yo lo uso para algo similar.
  • 0

#6 kevo

kevo

    Newbie

  • Miembros
  • Pip
  • 4 mensajes

Escrito 05 noviembre 2013 - 08:57

gracias  (y)  pero ya intente y no me sale.... me sale error o cm lo puedo ingresar o podrias ser un poco mas especifico xfavor
  • 0

#7 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.301 mensajes
  • LocationArgentina

Escrito 05 noviembre 2013 - 09:52

A ver si entiendo... ¿entonces se trata de examinar una función matemática y determinar resultado, si es contínua, si tiene límite, y otras yerbas? Ahora... acotemos o pongamos unos límites y contextualizemos más las cosas: ¿Que tipo de funciones? ¿Se aceptan funciones diferenciales? funciones algebraicas?

En pocas... ¿Pretendes que tu sistema haga lo que ya hace Mathematica?
Puedo preguntar ¿Para que es esto? ¿Un trabajo práctico para alguna cátedra? ¿Por un trabajo profesional? ¿O por pura curiosidad, relajo, diversión?
Si es lo 1ro, invita a tu profe a que nos explique semejante despropósito de trabajo porque no creo que sea fácil de aceptar un trabajo titánico ni hasta para un doctorado o master.... Hay que tener muy pulida la formación en Análisis o Cálculo Matemático.
Yo no tengo demasiada pulida mi cabeza en lo que es Cálculo.... hace tiempo que pasé por esas cátedras, pero que yo recuerde no existe una "receta" genérica que permita estudiar una función y te reporte un análisis del error, cotas, límites, continuidades, etc.
Cada función es única... y debe evaluarse punto por punto, función a función poniendo mucho ojo.
Si que hay ciertos tips que pueden ayudar a decidir u obtener cierta propiedad de una función pero de allí en más, hay que hacer un estudio a lo bruto y ver como se comporta con ciertos valores.

Si en verdad es para una cátedra tengo que suponer las siguientes cosas:
1) que el profesor ha delimitado el trabajo a un grupo determinado de funciones (y de cantidad de parámetro convengamos) y no que el sistema espere cualquier cosa como función.
2) que se te ha dado la formación y los conocimientos adecuados para poder efectuar el trabajo y en como proceder a examinar cada función posible de esperar
3) que existe un tiempo para hacer un trabajo y como tal no puede ser demasiado complejo, aún cuando sea una cátedra dictada en el último año de la carrera en donde se espera que el estudiante sea un papa dios en el tema

Si no se han dado ninguno de esos puntos tal trabajo carece de lógica, totalmente desproporcionado a lo que se da en cátedra, se espera del estudiante, como del tiempo al que se le puede dedicar.

Si es un trabajo profesional, toma contacto con alguien de ciencias matemáticas y que te asista. Por empezar no es que trate a los colegas del foro como tontos (que no lo son) pero en principio este foro es más dirigido al desarrollo programación y aparentemente tu duda está más llegada hacia algo matemático. Aquí en DA si bien tenemos a grandes mentes capaces de responder sobre diversos temas relacionados con contenidos de las ciencias matemáticas (a mi por ej. se me presta el gusto hacia el álgebra matricial) reconocemos cuando algo toca filosamente temas que ya lo más sensato es que asesore alguien más.
Por ejemplo: para un sistema contable, está el contador; para un simulador de reaciones químicas estará un químico, y asi con cada área de esperar.

Y si es por ocio, de nuevo: ¡Define el contexto! Ponle límites y alcance al proyecto y de allí vemos.

De una u otra forma lo que te digo es que te sigue faltando en explicarte y dimensionar adecuadamente el trabajo al que te enfrentas. Porque el que se pueda ingresar cualquier funcion... es un escenario tan grande que hasta el gran poderoso Mathematica falla.  ;)
No es por ser malo, simplemente te pido que por favor bajes más a tierra y nos ilustres tus objetivos, los límites y alcance del trabajo, nos comentes hasta donde llegan tus conocimientos (algo fundamental para saber si hay una barrera aquí).

La opción que comenta Sergio no la conozco pero estimo que hasta ello debe tener sus límites y no creo que acepte cualquier cosa como una función. Aunque se me hace que Sergio tampoco ha visto hasta donde se puede entender ese "etc" que pides que devuelva.  ;)

No lo tomes a mal mi mensaje. Sólo trato de llevar al hilo hacia un mejor contexto en el que podamos asesorar... cuanto más "etc" nos digas, más compañeros te pediran que definas ese "etc".

Saludos,
  • 0

#8 kevo

kevo

    Newbie

  • Miembros
  • Pip
  • 4 mensajes

Escrito 06 noviembre 2013 - 05:39

no tranquilo no me lo tome a mal tu comentario..... mas al contrario me hiciste pensar y volvi a preguntar y si estaba muy equivocado, el catedratico no se dejo entender cn nadie hasta q me volvio a explicar si no ubiese sido tu comentario no me ubiera dado cuenta gracias......
bueno lo q realmente tengo q hacer es q en la parte de

function bisa(z:real):real;
begin
bisa:=power(z,3)-2*sin(z);
end;

en ves de ingresar esa funcion en la codificacion tengo q ingresar x pantalla en un "edit" la misma funcio y  una ves ingresando todo el programa sera el mismo.....
el programa sirve para cualquier funcion y obligado hay q poner sus limites superior inferio y cota x pantalla jeje
bueno espero averme dejado entender.....  y aver si me pueden hechar una mano.....
GRACIAS Y SALUDOS
  • 0

#9 Sergio

Sergio

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.092 mensajes
  • LocationMurcia, España

Escrito 08 noviembre 2013 - 08:22

Tienes varias opciones aquí: http://stackoverflow...-formula-string
  • 0




IP.Board spam blocked by CleanTalk.