Entradas populares

domingo, 6 de marzo de 2011

Programa Sobre El Metodo De Bisección.


  • Hola que Tal, les dejo lo que es el programa que resuelve el algoritmo del método de bisección, el cual sirve para encontrar las raíces de un polinomio.
  • Chequenlo y si si son abusados se darán cuenta que para que resuelva una ecuación diferente a x^3-x-1  tendrán que ir a la parte de hasta abajo donde se encuentra definida dicha función.
Un saludo a todos.


#include<conio.h>
#include<stdio.h>
#include<stdlib.h>


float fx1(float);
float fx2(float);
float fxm(float);
main()
{
      float x1=0.0,x2=0.0,xm=0.0,Er=0.0, Et=5.0;
      int iteracion=0;


      /*PASO 1 ESCOGER LOS VALORES DE X1 Y X2 TAL QUE FX1*FX2<0*/
      printf("\n\n\n      Digita el valor de x inicial.");
      scanf("%f",&x1);


      printf("\n\n\n      Digita el valor de x superior.");
      scanf("%f",&x2);


      if( fx1(x1) * fx2(x2) < 0)
      {
          do
          {
                  /*PASO 2*/
                  paso2:
                  xm = ( x1 + x2 ) / 2;


                  /*PASO 3*/
                  paso3:
                  if( fx1(x1)*fxm(xm) < 0 )
                  {
                      x2 = xm;
                      goto paso4;
                  }
                  else
                      if( fx1(x1)*fxm(xm) > 0 )
                      {
                          x1 = xm;
                          goto paso4;
                      }
                      else
                          if( fx1(x1)*fxm(xm) == 0 )
                              {
                                            if( iteracion == 20)
                                            printf("\n\n   La Raiz es: %f",xm);


                              }


                  /*PASO 4*/
                  paso4:
                  if( iteracion > 0 )
                  {
                      Er= abs( x2 - xm ) / abs( x2 ) *100;
                      Er = abs( Er );
                      ++iteracion;
                      goto paso5;
                  }
                  else
                  {
                      ++iteracion;
                      goto paso2;
                  }


                  /*PASO 5*/
                  paso5:
                  if( Er > Et)
                  {
                      ++iteracion;
                      goto paso3;
                  }
                  if( Er <= Et)
                  {
                      if (iteracion == 20)
                      printf("\n\n      La Raiz Es: %f",xm);
                  }


          }
          while(iteracion <= 20);
      }


      getche();
      return(0);


}


float fx1( float x )
{
      float res = 0.0;


      res= (x*x*x)-(x)-1;


      return(res);
}


float fx2( float x )
{
      float res = 0.0;


      res= (x*x*x)-(x)-1;


      return(res);
}


float fxm( float x)
{
      float res = 0.0;


      res= (x*x*x)-(x)-1;


      return(res);
}



No hay comentarios:

Publicar un comentario