#include
#include
float a; /* valor a (extremo izquierdo del intervalo) */
float b; /* valor b (extremo derecho del intervalo) */
float c; /* valor c (punto medio del intevalo) */
float fa; /* f(a) */
float fb; /* f(b) */
float fc; /* f(c) */
float ea; /* error aproximado */
float tol; /* valor de rolerancia */
float f(float x){
return (pow(x,3)-1.5) ;
}
void biseccion();
int main(){
char opc=' ';
while(opc!='n'){
clrscr();
biseccion();
printf("\n\n\t\t Correr nuevamente [s/n]= ");
fflush(stdin);
scanf("%c",&opc);
}
return 0;
}
void biseccion(){
int i=0,n;
clrscr();
printf("\n\t METODO DE BISECCION\n");
printf("\n\t Este metodo busca una raiz en un intervalo dado.");
printf("\n\t escribir el intervalo (a,b) a buscar\n\n");
printf("\t\t a= ");
scanf("%f",&a);
printf("\t\t b= ");
scanf("%f",&b);
printf("\n\t Con una tolerancia de :\n");
printf("\t\t Tolerancia = ");
scanf("%f",&tol);
fa=f(a);
fb=f(b);
if(fa*fb<0){
n=0;
clrscr();
printf("\n\n\t METODO DE BISECCION\n");
printf("\n\ti\ta\tb\tc\tf(c)\tError");
printf("\n\t------------------------------------------------");
ea = fabs((b-a)/b);
while(ea>tol)
{
c = (a+b)/2;
fc = f(c);
ea = fabs((b-a)/b);
printf("\n\t%d \t%6.4f\t%6.4f\t%6.4f\t%6.4f\t%6.4f",i+1,a,b,c,fc,ea);
if(fa*fc<0) {
b=c;
} else {
a=c;
}
i++;
} //fin del for de biseccion
printf("\n\n\t Tolerancia = %f",tol);
printf("\n\n\t Error aproximado = %f",ea);
printf("\n\n\t La raiz aproximada es x= %f",c);
}//fin del if para biseccion
else{
printf("\n\t En este intervalo no hay una raiz para la funcion");
}//fin del if principal
}
No hay comentarios:
Publicar un comentario