Está en la página 1de 3

#include<iostream>

#include<math.h>
#include<conio.h>
#include<stdlib.h>
#include<stdio.h>
using namespace std;
double const e=2.71828182846;
double const v=40;
double const t=10;
double const m=68;
double const g=9.8;

class Funcion
{
private:
double c,fc;
public:
void leer(double n)
{
c=n;
}
void evaluar()
{
fc=(g*m/c)*(1-pow(e,-(c/m)*t))-v;
}

double resultado()
{
return fc;
}

};
class BI: protected Funcion
{
private:

double cl,cu,cr,fcl,fcu,fcr,ea;
public:
int valida_intervalo(double a, double b)
{
cl=a;
cu=b;
leer(cl);
evaluar();
fcl=resultado();
leer(cu);
evaluar();
fcu=resultado();
if((fcl*fcu)<0)
return 1;
else
return 0;
}
double biseccion()
{
leer(cl);
evaluar();
fcl=resultado();
leer(cu);
evaluar();
fcu=resultado();
cr=(cl+cu)/2;
leer(cr);
evaluar();
fcr=resultado();
if((fcl*fcr)<0) // Verifica que se cumpla el teorema
fundametal del álgebra
{
cu=cr;
return cr;
}
else if((fcl*fcr)>0)
{
cl=cr;
return cr;
}
else
return cr;
}
double error(double ant)
{
ea=(fabs((cr-ant)/cr))*100;
return ea;
}
void imprimir()
{
cout<<cl<<"\t\t"<<cu<<"\t\t"<<cr;
}
};

int main()
{

cout<<"\t\t\tMarcial Gómez Michel 4CM10\n"<<endl;


cout<<"\t\t\t Metodo de Biseccion\n"<<endl<<endl;
cout<<"\t\t\t\tFunción: \n"<<endl;
cout<<"\t\tf(c)=(g*m/c)*(1-pow(e,-(c/m)*t))-v \n\n"<<endl;

int flag=0,it1=1;
double xl,xu,xraiz,tol=0.0001,ant=0,error;
BI ob1;
do
{
cout<<"\t\tComprobar teorema fundamental del algebra"<<endl;
cout<<"Intervalo Inferior:"<<endl;
cin>>xl;
cout<<"Intervalo Superior:"<<endl;
cin>>xu;
flag=ob1.valida_intervalo(xl,xu);
if(flag==0)
{
cout<<"\nIntervalo NO valido, proporciona otro
invervalo"<<endl;
cout<<"Intervalo Inferior: ";
cin>>xl;
cout<<"Intervalo Superior: ";
cin>>xu;
}
}while(flag==0);

system("cls");
cout<<"\t\t\t\tMetodo de biseccion";

cout<<endl<<endl<<"Iteracion"<<"\tcl"<<"\t\tcu"<<"\t\tcr"<<"\t\tError"
<<"\n";
do
{
xraiz=ob1.biseccion();
error=ob1.error(ant);
cout<<it1<<"\t\t";
ob1.imprimir();
cout<<"\t\t"<<error<<endl;
ant=xraiz;
it1++;
}while(error>=tol);

system("pause");

return 0;
}

También podría gustarte