/***********************************/
/* Programa de Metodos Numericos */
/* Intervalo Medio o Biseccion */
/***********************************/
#include
#include
#include
void Lee_Datos(void);
double Funcion(double X);
double a, b, Error;
int Max_Iter;
int main(void)
{
double Error_Aprox, Prod;
double Xr, Xn;
int Ciclos = 0;
Lee_Datos();
if ( Funcion(a)*Funcion(b) > 0 )
printf("\n No existe Raiz en el intervalo ????");
else
{
Xr = ( a+b )/2;
printf("\n-------------------------------------------");
Error_Aprox = 1;
printf("\n Ciclo a b Xn Error");
printf("\n-------------------------------------------");
printf("\n%3d%10.4f%10.4f%10.4f",Ciclos,a,b,Xr);
while ( Ciclos <= Max_Iter && Error < Error_Aprox)
{
Prod = Funcion(a)*Funcion(Xr);
if (Prod == 0)
printf(" La raiz es %lf",Xr);
else
if (Prod < 0)
b = Xr;
else
a = Xr;
Xn = ( a+b )/2;
Ciclos += 1;
Error_Aprox = fabs((Xn-Xr)/Xn);
printf("\n%3d%10.4f%10.4f%10.4f%10.4f",Ciclos,a,b,Xn,Error_Aprox);
Xr = Xn;
}
if ( Ciclos< Max_Iter)
{
printf("\n-------------------------------------------");
printf("\n\n La Raiz de la Ecuacion es => %lf",Xn);
printf("\n Se encontro en %d Iteraciones",Ciclos);
}
else
printf("\n No se encontro raiz en %d Iteraciones",Ciclos);
}
getch();
return 0;
}
void Lee_Datos(void)
{
clrscr();
printf("\nDar el valor de Xi ........... ");
scanf("%lf",&a);
printf("Dar el valor de Xf ........... ");
scanf("%lf",&b);
printf("Cual es el Error Permitido ... ");
scanf("%lf",&Error);
printf("Cual es el Maximo de Ciclos ..");
scanf("%d",&Max_Iter);
}
double Funcion(double X)
{
return (pow((1+X),10)-1)/(X*pow((1+X),10)) - 5;
}
               (
geocities.com/siliconvalley/pines/7894)                   (
geocities.com/siliconvalley/pines)                   (
geocities.com/siliconvalley)