Raíces en c++ sin la libreria math.h utilizando el metodo de newton rhapson. Para probarlo, aquí: http://ideone.com/RbtBZy
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
using namespace std; | |
double raiz_cuadrada(double numero,double aproximacion, int n); //Nuestra función de raiz cuadrada | |
double raiz_cuadrada(double numero); //Nuestra función creada únicamente para iniciar la llamada | |
int main() | |
{ | |
int numero=0; | |
cout<<"Ingrese un numero"; | |
cin>>numero; | |
double num = raiz_cuadrada(numero); | |
cout<<"La raiz cuadrada de "<<numero<<" es: "<<raiz_cuadrada(numero); | |
//Solo para que el programa no termine | |
} | |
double raiz_cuadrada(double numero) | |
{ | |
//Función creada, unicamente para inicar nuestro proceso, el numero inicial no importa, así que iniciamos en uno | |
//y colocamos el contador a cero | |
return raiz_cuadrada(numero,1,0); | |
} | |
double raiz_cuadrada(double numero,double aproximacion, int n) | |
{ | |
//Guardamos la aproximación anterior | |
double aproximacionantes = aproximacion; | |
//Utilizando la formula de Newton-Raphson | |
aproximacion = aproximacion - (((aproximacion * aproximacion) - numero ) / ( 2 * aproximacion)); | |
//Verificas que la aproximación haya cambiado, y cuidamos nuestro contador, para que la recursión no se trabe | |
if(aproximacion == aproximacionantes || n > 50) | |
return aproximacion; //Regresas la aproximación en caso de que el numero no cambie | |
//Llamada recursiva para calcular una nueva aproximación | |
return raiz_cuadrada(numero,aproximacion,++n); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment