Bienvenido, invitado ( Identificarse | Registrarse )

Bucle infinito?, 121 - Juguemos con Newton y Rhapson
HySTD
mensaje 31/07/2008 22:13
Publicado: #1
Lurker




Grupo: Miembro
Mensajes: 4
Registrado: 29/06/2008
Desde: España
País: España
Ranking : 172 º/ 150.24
Avance : 10.86 %
All Stars
Sistemas OperativosIngenioCienciasLenguajes de ProgramaciónMixLenguajes Diseño WebEsteganografíaCrackingSeguridadMisiones ImposiblesCriptografiaIngeniería Inversa
Comunidad: Hackhispano.com
Rank: ON



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
Go to the top of the page
 
+Quote Post
 
Start new topic
Respuestas
Sinfocol.org
mensaje 01/08/2008 04:13
Publicado: #2
Campeón de las Temporadas del 2013 al 2017
Ícono de Grupo



Grupo: Administrador
Mensajes: 112
Registrado: 25/09/2005
Desde: Colombia
País: Colombia
Comunidad: Yashira.org
Rank: OFF



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
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 usuario(s) está(n) leyendo esta discusión (1 invitado(s) y 0 usuario(s) anónimo(s))
0 miembro(s):

 

RSS Versión Lo-Fi Fecha y Hora actual: 28/03/2024 22:11