Logo Studenta

2 MetodoBiseccion

Esta es una vista previa del archivo. Inicie sesión para ver el archivo original

#include <iostream>
#include <cmath>
using namespace std;
double f(double x) {
 return x*x - 4;
}
int main() {
 double a, b, c, tolerancia, raiz;
 int iteracion = 0, iteracionMax;
 cout << "Introduzca el valor de a: ";
 cin >> a;
 cout << "Introduzca el valor de b: ";
 cin >> b;
 cout << "Introduzca la tolerancia deseada: ";
 cin >> tolerancia;
 cout << "Introduzca el número máximo de iteraciones: ";
 cin >> iteracionMax;
 if (f(a)*f(b) >= 0) {
 cout << "La raíz no está en el intervalo dado" << endl;
 return 0;
 }
 cout << "Iteración\t a\t\t b\t\t c\t\t f(c)" << endl;
 while (iteracion < iteracionMax) {
 c = (a + b) / 2;
 printf("%4d\t%12.6f\t%12.6f\t%12.6f\t%12.6f\n", iteracion, a, b, c, f(c));
 if (fabs(f(c)) < tolerancia) {
 raiz = c;
 break;
 }
 if (f(a)*f(c) < 0) {
 b = c;
 } else {
 a = c;
 }
 iteracion++;
 }
 cout << "La raíz es: " << raiz << endl;
 cout << "Se necesitaron " << iteracion << " iteraciones" << endl;
 return 0;
}

Continuar navegando