domingo, 2 de diciembre de 2012

Bisección

Compilador: Borland C++
Código:

#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
#include<stdio.h>
#include<math.h>
class Biseccion
{
 private:
    float LimA;
      float LimB;
      float LimC;
  float Es;
      float Ea;
      float Raiz;

   public:
    void IngrVal();
      void ResBis();
      float Funcion(float Var);
      void CalcularEa();
};
void Biseccion::IngrVal()
{
 cout<<endl<<" MÉTODO DE BISECCIÓN"<<endl<<endl;
   cout<<"Busca la raiz cuadrada de un numero por el metodo de biseccion"<<endl<<endl;
   do
   {
   cout<<"Ingrese el número del que quiere calcular la raiz"<<endl;
   cin>>Raiz;
   if(Raiz<=0)
   {
   cout<<"\n\n El programa no calcula raices negativas ni 0\n";
   }
   }while(Raiz<=0);
 cout<<"Ingresa el limite Xa"<<endl;
   cin>>LimA;
   cout<<"Ingresa el limite Xb"<<endl;
   cin>>LimB;
   cout<<"Ingresa el error preestablecido Es(%)"<<endl;
   cin>>Es;
}
void Biseccion::CalcularEa()
{
 Ea=((LimA-LimB)/LimA)*(100);
   Ea=fabs(Ea);
}
float Biseccion::Funcion(float Var)
{
   float RFun;
   RFun = (pow(Var,2)-Raiz);
   return RFun;
}

void Biseccion::ResBis()
{
 int i=0;
    float Res;
   gotoxy(5,15);
 cout<<"Xa"<<endl;
   gotoxy(15,15);
   cout<<"Xb"<<endl;
   gotoxy(25, 15);
   cout<<"Xr"<<endl;
   gotoxy(35,15);
   cout<<"f(Xa)-f(Xb)"<<endl;
   gotoxy(48,15);
   cout<<" Ea"<<endl<<endl;
  do
  {
   LimC=((LimA+LimB)/2);
   Res=Funcion(LimA)*Funcion(LimC);
   CalcularEa();
   gotoxy(5,17+i);
 cout<<LimA<<endl;
   gotoxy(15,17+i);
   cout<<LimB<<endl;
   gotoxy(25, 17+i);
   cout<<LimC<<endl;
   gotoxy(35,17+i);
   cout<<Res<<endl;
   gotoxy(48,17+i);
   cout<<Ea<<endl<<endl;
   i++;
   if(Res>0)
 {
    LimA=LimC;
 }
   else
   {
    LimB=LimC;
    }

  }while(Ea>Es);
  cout<<"La raiz es: "<<LimC<<endl;
}

int main()
{
 Biseccion a;
   a.IngrVal();
 a.ResBis();
 getch();
   return 0;
}

No hay comentarios:

Publicar un comentario