Está en la página 1de 2

#include<iostream.

h>
#include<conio.h>
#include<math.h>
int n,i;
float A[10], xl, xu, fl, fu, fun, xr, xr2;
float flu, Ea=100;
void datos(){
cout<<"\tMETODO DE LA BISECCION"<<endl<<endl;
cout<<"Introduce el grado de tu ecuacion: ";
cin>>n;
for (i=n; i>0;i--){
cout<<"Introduce el coeficiente de x"<<i<<": ";
cin>>A[i];
if (i==1){
cout<<"Introduce el valor del termino independiente: ";
cin>>A[i-1];
}
}
clrscr();
cout<<"Tu ecuacion es: ";
cout<<"f(x)= ";
for (i=n; i>0; i--){
cout<<"+("<<A[i]<<"x"<<i<<")";
if (i==1){
cout<<"+("<<A[i-1]<<")";
}
}
cout<<endl<<endl<<"Introduce los limites para encontrar la raiz: "<<endl;
cout<<"xl= ";
cin>>xl;
cout<<"xu= ";
cin>>xu;
}

float funcion(int m, float C[10], float x){


fun=0;
for (i=m; i>=0; i--){
fun=(C[i]*pow(x,i))+fun;
}
return fun;
}

void multiplica(float flower, float fupper) {


xr=(xl+xu)/2;
/*cout<<"El valor de xr es: "<<xr<<endl;
cout<<"La funcion evaluada en "<<xl<<" es: "<<flower<<endl;
cout<<"La funcion evaluada en "<<xu<<" es: "<<fupper<<endl;*/
flu=flower*fupper;
//cout<<"f("<<xl<<")*f("<<xu<<")= "<<flu<<endl;
}
void error(float xn, float xa){
Ea=((xn-xa)/xn)*100;
if (Ea<0)
Ea=-Ea;
//cout<<"El error es de: "<<Ea<<"%"<<endl<<endl;
}

int main(){
clrscr();
datos();
clrscr();
while (Ea>1){ //Aqui cambias el grado de error admisible en este caso es al 1%
fl=funcion(n, A, xl);
fu=funcion(n, A, xu);
multiplica(fl, fu);
if (flu<0)
xu=xr;
if (flu>0)
xl=xr;
xr2=(xl+xu)/2;
error(xr, xr2);
xr=xr2;
//getch();
//clrscr();
}
cout<<"Por lo tanto: xr= "<<xr2;
getch();
clrscr();
return 0;
}