__________________________________________________________
#include <stdio.h>
#include <stdlib.h>
double newton(double, double); /*Declaramos un prototipo de
funcion que recibe dos argumentos de tipo double*/
int main(void){
double x, e; //esta x no es necesariamente igual que la x
//de la funcion, ya que no es de alcance global
printf("Ingrese x: ");scanf("%lf", &x);//los datos deben ser de tipo flotante
printf("Ingrese e: ");scanf("%lf", &e);//y de doble presición
printf("La raiz de x es %lf, con una tolerancia de %.10lf\n", newton(x,e), e);
//en la linea superior llamamos a la funcion dentro del printf.
system("pause");
return 0;
}
double newton(double x,double epsilon){
double a=1; //La aproximación inicial es 1
int i=0, max_iter=100000000;//iteraciones maximas, si sobrepasa dichas iteraciones
//El programa se cierra, es opcional
if (x<0) //si calculamos la raiz de un número negativo
return -1; //el programa retorna un -1
while (((a*a-x)>=epsilon)||((a*a-x)<=(-1*epsilon))) //mientras el error sea
{a=(x/a+a)/2;i++; //Mayor que la tolerancia
//Siga realizando el ciclo
if (i>max_iter){
printf("Warning: Maximo numero de iteraciones excedidas\n");
return a;}}
return a;
} //luego retorne el valor
________________________________________________________
La comente bastante, pero si hay dudas posteenlas en los comentarios o a mi correo
La comente bastante, pero si hay dudas posteenlas en los comentarios o a mi correo
No hay comentarios:
Publicar un comentario