- 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.
#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