P_31_E17+-+Raiz+cuadrada+por+método+de+Newton

=__**Calcular la raíz cuadrada de un número, por el método de Newton**__=

Cálculo de la raíz cuadrada de un número por el método de Newton.

math R [i+1] = ( (N / R [i]) + R [i] ) / 2 math

math Precisión: epsilon <= |R [i+1] - R [i]| math

code format="pascal" PROGRAM P_29_E_17 ; VAR rNumero, rAproxPenult, rAproxUlt, rPrecision, rEpsilon : Real ; BEGIN Writeln ; REPEAT Writeln ; { Leer el número } Write ('Escribe el número (positivo) del que se calcular la raíz cuadrada: ') ; Readln (rNumero) ; UNTIL rNumero > 0 ;

Write (' Escribe la precisión deseada: ') ; Readln (rPrecision) ;

rPrecision := Abs (rPrecision) ;

{ Leer la aproximación incial } Write (' Escribe la primera aproximación: ') ; Readln (rAproxPenult) ;

rAproxPenult := Abs (rAproxPenult) ; { Leer la precisión } IF rAproxPenult = 0 THEN rAproxPenult := 1.0E-15 ;

REPEAT { Calcular la siguiente aproximaci¢n } rAproxUlt := ((rNumero / rAproxPenult) + rAproxPenult) / 2 ;

{ Calcular la precisión de esta aproximación } rEpsilon := Abs (rAproxUlt - rAproxPenult) ;

rAproxPenult := rAproxUlt ; UNTIL rEpsilon <= rPrecision ;

Writeln ; { Mostrar el resultado obtenido } Writeln ('El valor por el m‚todo de Newton: ', rAproxUlt:2:7) ;

{ Mostrar el valor de la función SQRT para comprobar } Writeln (' El valor por la funci¢n sqrt: ', Sqrt (rNumero):2:7);

Writeln ; Writeln ; Write ('Pulsa ENTER para finalizar') ; ReadLN ; END. code