Documentos de Académico
Documentos de Profesional
Documentos de Cultura
#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()
{
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;
}