Ayuda - Búsqueda - Miembros - Calendario
Versión Completa: Bucle infinito?
Foro > Wargame > Lenguajes de Programación
HySTD
Buenas! estoy con el reto de Newton y Raphson. Resumiendo diré que me he implementado un programa que lo resuelve de forma automática, para el x0 inicial.

La cuestión es que tras enviar la solución, vuelve a aparecer un nuevo polinomio y una nueva x0. Del mismo modo lo resuelvo y lo envio, todo en menos de 1 segundo. Pero la cosa se vuelve a repetir indefinidamente.

He tenido en cuenta las restricciones (error > 0.01 y numeroiteraciones<1000), además redondeo a 5 decimales...

No sé en donde está el fallo ya que personalmente creo haber conseguido solucionar el reto, puesto que lo resuelvo y envío en menos de 1 segundo...

Quisiera saber si el fallo está en el redondeo, o en la velocidad de mi conexion xD, o verdaderamente mi programa está fallando (no lo creo puesto que efectivamente las soluciones que genera son las correctas)... por ello ruego que, por ir descartando, me confirmen, a modo de ejemplo si son correctas las siguientes soluciones que deben enviarse:

CÓDIGO
--------------------------
f(x)=-81*x^8-44*x^7+55*x^6-50*x^5+6*x^4-78*x^3-18*x^2+17*x^1+42
x0 = 9
solucion = 0,74085
--------------------------

f(x)=+71*x^11+75*x^10+20*x^9-80*x^8+28*x^7+3*x^6-50*x^5+80*x^4+25*x^3-36*x^2-22*x^1-42
x0 = 2
solucion = 0,92343  (solución completa: 0,923425331404713)
--------------------------

f(x)=+38*x^10-68*x^9-37*x^8+88*x^7+89*x^6-41*x^5+69*x^4-98*x^3+57*x^2-82*x^1+14
x0 = 9
solucion = 0,91511 (solución completa: 0,915108734181846)
--------------------------

f(x)=-9*x^13-65*x^12+58*x^11-90*x^10-44*x^9-35*x^8+16*x^7-97*x^6-28*x^5+74*x^4+69*x^3+35*x^2-87*x^1-58
x0 = 5
solucion = -0,85309 (solución completa: -0,853087212135105)
--------------------------


Ruego me confirmen si efectivamente esas son las soluciones que se están pidiendo (por el tema del redondeo o si es truncamiento, etc...)

Personalmente me doy por satisfecho :p por haberlo conseguido ;), la verdad es que conociendo el método (lo recuerdo en mi primer año en la facultad :)), no es tan dificil...

Un saludo
Sinfocol.org
Si de algo te ayuda te puedo dejar el proceso completo de mi script.
Acá está:
CÓDIGO
f(x)=-15*x^8+55*x^7+38*x^6-73*x^5-91*x^4+69*x^3+80*x^2-10*x^1-22
f(x)=-15*pow($x,8)+55*pow($x,7)+38*pow($x,6)-73*pow($x,5)-91*pow($x,4)+69*pow($x,3)+80*pow($x,2)-10*pow($x,1)-22
f'(x)=-15*8*pow($x,7)+55*7*pow($x,6)+38*6*pow($x,5)-73*5*pow($x,4)-91*4*pow($x,3)+69*3*pow($x,2)+80*2*pow($x,1)-10*1*pow($x,0)
x0=7

i: 0 - 6.2478654279394030268690585217
error12.0382645998932318320839840453
i: 1 - 5.6059087576773674044261497329
error11.4514291618262120664439862594
i: 2 - 5.06645997908032974521574942628
error10.6474497148788103118022263516
i: 3 - 4.62621038419321717327648002538
error9.51641966805816608143686607946
i: 4 - 4.28769526010962920281599508598
error7.89503692654996847011261706939
i: 5 - 4.05976492080025597175563234487
error5.61437284561895033618839079281
i: 6 - 3.9479341125593636618873460975
error2.83264120049852419214175824891
i: 7 - 3.92178434843861278835674966103
error0.666782306150054626669998469879
3.92178000000000004376943252282


Y este es la petición:
POST /ReTos/All/raices.php HTTP/1.1
Host: www.yashira.org
Referer: http://www.yashira.org/ReTos/All/raices.php
Connection: Close
Content-Type: application/x-www-form-urlencoded
Content-Length: 35

res=3.92178000000000004376943252282

Al parecer no hice el redondeo y funcionó xD.
Si queres ver cuánto tiempo te demoraste en hacer la petición y estas trabajando con PHP, al instante de hacer la petición a la página para que te de la función pones:
"$time=explode(' ',microtime());
$b=$time[1]+$time[0];"
Y al final cuando termines de hacer la petición pones:
"$time=explode(' ',microtime());
$e=$time[1]+$time[0];
echo $e-$b;"
Y el tiempo que te sale está dado en milisegundos.

Saludos
HySTD
Buenas! he comprobado el polinomio que presentas, y estos son los resultados obtenidos con mi aplicación:

x0 = 7
x1 = 6,2478654279394 - error = 12,0382645998932
x2 = 5,60590875767736 - error = 11,4514291618263
x3 = 5,06645997908033 - error = 10,6474497148788
x4 = 4,62621038419322 - error = 9,51641966805811
x5 = 4,28769526010963 - error = 7,89503692654999
x6 = 4,05976492080026 - error = 5,61437284561879
x7 = 3,94793411255938 - error = 2,83264120049822
x8 = 3,92178434843862 - error = 0,666782306150268

La verdad es que desconozco la causa de la diferencia con tus resultados. ¿Estaré en un caso de un procesador defectuoso como el mítico error del Pentium? xD

Todo lo demás no hay problema. Por cierto sólo un pequeño detalle más... supuestamente cuando la solución es válida ¿se supera el reto? o ¿vuelven a repetirse sucesivas veces problemas distintos hasta que el servidor decida cuando parar y validar la prueba?

Un saludo.
Sinfocol.org
Si queres comprobar el tiempo que se demora el script en ejecutar el código, segui las instrucciones que te dí en el anterior post. Y de recomendación modifica la directiva "precision" que se encuentra en el archivo de configuración del php "php.ini", y ponle que mas o menos treinta (30) digitos significativos en números flotantes.
Compara también mis resultados con los tuyos:
3,92178434843862
3.92178000000000004376943252282
-----------------------
0,666782306150268
0.666782306150054626669998469879
Y nota que es mucha la diferencia en las raíces que estas mandando.
Y la respuesta a tu última pregunta: el servidor inmediatamente te devuelve la validación del reto al primer intento bueno que tengas.
Saludos
danielhb8705
A ver con este reto == que con Suma traicionera lo envio en tiempo y nada si alguien pudiera revisar mis resultados a ver si algo esta mal.
F(x)=+86*x^8-83*x^7+72*x^6-11*x^5+19*x^4-61*x^3-44*x^2-93*x^1+57
x0=6
tiempo: 0.84471416473388671875
Respuesta: 1.12788
Inlcuso puedo poner mas del proceso
i: valor error
0: 5.26240710936726951985065170447 14.0162643311991050865117358626
1: 4.61658110065275018030206410913 13.9892702983860583998421134311
2: 4.05098719457333888982475400553 13.9618783993460926495799867553
3: 3.55553545457355202330518295639 13.9346589657115629279360291548
4: 3.12141632063233087635012452665 13.9077613925360026314592687413
5: 2.74097493780015177833320194623 13.8797833422553384963293865439
6: 2.40763697521930231104647646134 13.8450258910186008165510429535
7: 2.11591248070532511604824321694 13.7871720675674076517225330463
8: 1.86152741039867430927756686287 13.6653948196320342844956030603
9: 1.64176453993240545337073399423 13.3857727537054085331647002022
10: 1.45611371969355896105469128088 12.7497473396457614569499128265
11: 1.3072155276874468654568772763 11.3904852606458195651839560014
12: 1.2013306574699478268541952275 8.81396554388256170398108224617
13: 1.14464375368481952044419358572 4.95236213036961991917905834271
14: 1.1289596925400966487273990424 1.38924899164775350612899273983
15: 1.12788012437329587811518649687 0.0957165698261267239299598941216

Please alguien que se compadezca.
g30rg3_x
Buenas,

CITA(danielhb8705 @ 06/08/2013 16:23) *
A ver con este reto == que con Suma traicionera lo envio en tiempo y nada si alguien pudiera revisar mis resultados a ver si algo esta mal.
F(x)=+86*x^8-83*x^7+72*x^6-11*x^5+19*x^4-61*x^3-44*x^2-93*x^1+57
x0=6
tiempo: 0.84471416473388671875
Respuesta: 1.12788
Inlcuso puedo poner mas del proceso
i: valor error
0: 5.26240710936726951985065170447 14.0162643311991050865117358626
1: 4.61658110065275018030206410913 13.9892702983860583998421134311
2: 4.05098719457333888982475400553 13.9618783993460926495799867553
3: 3.55553545457355202330518295639 13.9346589657115629279360291548
4: 3.12141632063233087635012452665 13.9077613925360026314592687413
5: 2.74097493780015177833320194623 13.8797833422553384963293865439
6: 2.40763697521930231104647646134 13.8450258910186008165510429535
7: 2.11591248070532511604824321694 13.7871720675674076517225330463
8: 1.86152741039867430927756686287 13.6653948196320342844956030603
9: 1.64176453993240545337073399423 13.3857727537054085331647002022
10: 1.45611371969355896105469128088 12.7497473396457614569499128265
11: 1.3072155276874468654568772763 11.3904852606458195651839560014
12: 1.2013306574699478268541952275 8.81396554388256170398108224617
13: 1.14464375368481952044419358572 4.95236213036961991917905834271
14: 1.1289596925400966487273990424 1.38924899164775350612899273983
15: 1.12788012437329587811518649687 0.0957165698261267239299598941216

Please alguien que se compadezca.


Pues tu funcion es correcta, nada mas es el fallo de siempre... el referer no se te/les olvide añadir la cabecera de referencia al enviar el POST con la respuesta.

Saludos
Esta es una versión -reducida (lo-fi)- de nuestro contenido. Para ver la versión completa con mas información, formato e imágenes, por favor haz click aquí.