Professional Documents
Culture Documents
Biseccion
Biseccion
#define PRECISION 6
int main()
{
cout << setprecision(PRECISION); // Establecemos la precisión
double a, b, tolerancia;
cout << "\nCalculo de las raices de una funcion aplicando el metodo de la
biseccion" << endl;
cout << "\nIngrese el intervalo inicial [a, b]" << endl;
cout << "\na = ";
cin >> a;
cout << "b = ";
cin >> b;
imprimePuntos(a, b);
cout << "\nEscoja el intervalo adecuado" << endl;
cout << "\na = ";
cin >> a;
cout << "b = ";
cin >> b;
// [a, b]
float xr; // raiz de la función
/*
cout << "\nf(" << a << ") = " << f(a) << endl;
cout << "f(" << b << ") = " << f(b) << endl;
*/
if (f(a) * f(b) > 0) {
cout << "\nNo se puede aplicar el metodo de la biseccion\n";
cout << "porque f(" << a << ") y f(" << b << ") tienes el mismo signo" <<
endl;
} else {
cout << "Tolerancia = ";
cin >> tolerancia;
cout << "\na\tb\tx\tf(a)\t\tf(b)\t\tf(x)\n" << endl;
do {
xr = (a + b) / 2.0;
cout << a << "\t" << b << "\t" << xr << "\t";
cout << f(a) << "\t" << f(b) << "\t" << f(xr) << endl;
double f(double x)
{
return exp(-1 * x) - cos(3 * x) - 0.5;
}
#define INTERVALOS 10
void imprimePuntos(double a, double b)
{
int puntos = INTERVALOS + 1;
double ancho = (b - a) / INTERVALOS;
cout << "\n";
cout << "\tx\tf(x)\n" << endl;
for (int i = 0; i < puntos; i++) {
cout << "\t" << a << "\t" << f(a) << endl;
a = a + ancho;
}
}