1. Estilo de Vida
  2. »
  3. Ciencia

Método de la biseccion en C++ (Métodos numéricos)

Método de bisección (Bolzano)

Primero que nada debemos de saber que es el metodo, solo les pondre la introduccion, si desean consultar la informacion completa consulten ----->
http://repositorio.uned.ac.cr/multimedias/metodos_numericos_ensenanza/modulo2/descripcionmetodo.html <----------------
EL POST DE LA PAGINA WEB MENCIONADA NO ES DE MI AUTORIA, SIN EMBARGO EL PROGRAMA SI ES DE MI AUDOTORIA, la pagina web la pongo como cosulta

El método de bisección es uno de los más versátiles para determinar una raíz real en un intervalo de una ecuación dada, es fácil de comprender, aunque si se desea una mayor exactitud el número de cálculos que hay que realizar aumenta considerablemente.

Una de sus ventajas es que funciona para ecuaciones algebraicas y trascendentes, pero se recomienda utilizarlo después de un análisis gráfico.

El Teorema de Bolzano establece las condiciones necesarias para la existencia de al menos un cero de una función continua.

Teorema de Bolzano
Si f(x) es continua en el intervalo [a,b], con f(a)∙f(b)<0, entonces existe al menos un c∈]a,b[ tal que f(c)=0

///////////////////INICIO DEL PROGRAMA ///////////////////////////

#include <iostream>
#include <iomanip> // setprecision
#include <cmath>

#define PRECISION 6

using namespace std;

void tabula(double a, double b);
double f(double x);

int main()
{
cout << setprecision(PRECISION);
cout << "nCalculo de las raices de una funcion aplicando el metodo de la biseccionn";
cout << "nIngrese el intervalo inicial [a,b]:" << endl;

double a, b, tolerancia;

cout << "na = ";
cin >> a;

cout << "b = ";
cin >> b;

tabula(a, b);
// -----------------------------------------

cout << "nEscoja el intervalo adecuado" << endl;
cout << "na = ";
cin >> a;

cout << "b = ";
cin >> b;

double xr;

if (f(a) * f(b) > 0) {
cout << "n No se puede aplicar el metodo de la biseccionn";
cout << "porque f(" << a << " y f(" << b << " tienen el mismo signo" << endl;

} else {
cout << "Tolerancia = ";
cin >> tolerancia;

cout << "natbtxtf(a)tf(b)ttf(x)n" << endl;
do {

xr = (a + b) / 2.0;
cout << a << "t" << b << "t" << xr << "t" << f(a) << "t" << f(b) << "t" << f(xr) << endl;

if (fabs(f(xr)) <= tolerancia) {
cout << "nnPara una tolerancia de " << tolerancia << " la raiz de f es: " << xr << endl;
break;

} else {
if (f(xr) * f(a) > 0) {
a = xr;
} else if (f(xr) * f(b) > 0) {
b = xr;
}
}

} while (1);
}

cin.get();
cin.get();
return 0;
}

#define INTERVALOS 10
void tabula(double a, double b)
{
int puntos = INTERVALOS + 1;

double ancho = (b - a) / INTERVALOS;

cout << "ntxtf(x) " << endl;
for (int i = 0; i < puntos; i++) {
cout << "t" << a << "t" << f(a) << endl;
a = a + ancho;
}
}

double f(double x)
{
return pow(x,2) - 1;
}


Ese es todo el codigo, espero y le ayude, comenten y dejen unos cuantos puntos jaa, EXITO
+8
3
0
3Comentarios