Skip to content

Instantly share code, notes, and snippets.

@Haylin-chama
Last active April 5, 2020 19:18
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save Haylin-chama/6179118 to your computer and use it in GitHub Desktop.
Raíces en c++ sin la libreria math.h utilizando el metodo de newton rhapson. Para probarlo, aquí: http://ideone.com/RbtBZy
#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