1
C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más / Ayuda con Programa de Método de Bisección ecuación en C (lenguajeC)
« en: 03 de Junio 2016, 15:50 »
Hola, necesito ayuda con un código que me han pasado, cuando meto los valores para A:3 y B:3.5 me funciona bien, pero quiero que al meter otros números me diga que "(a,b) debe ser un intervalo de la raíz de la ecuación". quiero que me mande este mensaje. como puedo meter esa parte!. se los agradecería mucho!
Código: [Seleccionar]
#include<conio.h> //entrada y salida de datos
#include<stdio.h> //manipula los datos
#include<stdlib.h> //para funciones macros, utilidades de uso general
#include<math.h>
float fa(float);
float fb(float);
float fra(float);
main()
{
float x1=0.0,x2=0.0,ra=0.0,Er=0.05;
int iteracion=0;
printf(" METODO DE BISECCION\n");
printf("localizar intervalo que contenga una raiz\n en la ecuacion: x - ln x - 2\n\n");
printf("\n\nIngrese valor de a: ");
scanf("%f",&x1);
printf("\n\nIngrese valor de b: ");
scanf("%f",&x2);
//paso1:
if( fa(x1) * fb(x2) < 0)
{
do
{
//paso2:
ra = ( x1 + x2 ) / 2; //formula
//paso3:
if( fa(x1)*fra(ra) < 0 )
{
x2 = ra;
//goto paso4; //el paso 3 se pasa al 4
}
else
if( fa(x1)*fra(ra) > 0 )
{
x1 = ra;
//goto paso4;
}
//paso4:
if( iteracion > 0 )
{
//Er= abs( x2 - ra ); // abs( x2 ) *100;
Er = abs( Er );
++iteracion;
//goto paso5;
}
else
{
++iteracion;
//goto paso2;
}
/*PASO 5*/
//paso5:
//if( Er >0)
// {
// ++iteracion;
//goto paso3;
//}
//if( Er <= 0)
//{
if (iteracion == 20)
printf("\n\nLa Raiz aproximada es: %f",ra);
//}
}
while(iteracion <= 20);
}
getche();
return(0);
}
float fa( float x )
{
float res = 0.0;
res= ((x)-(log (x))-2);
return(res);
}
float fb( float x )
{
float res = 0.0;
res= ((x)-(log (x))-2);
return(res);
}
float fra( float x)
{
float res = 0.0;
res= ((x)-(log (x))-2);
return(res);
}