Método de bisección en c++

 Este es uno de los métodos más sencillos y de fácil intuición para  resolver ecuaciones en una variable, también conocido como  Método de Intervalo Medio.1 Se basa en el teorema del valor  intermedio (TVI), el cual establece que toda función continua f en  un intervalo cerrado [a,b] toma todos los valores que se hallan  entre f(a) y f(b). Esto es que todo valor entre f(a) y f(b) es la  imagen de al menos un valor en el intervalo [a,b]. En caso de que  f(a) y f(b) tengan signos opuestos, el valor cero sería un valor  intermedio entre f(j) y f(e), por lo que con certeza existe un p en [a,b] que cumple f(p)=0. De esta forma, se asegura la existencia de al menos una solución de la ecuación f(x)=0.


main.cpp #include<iostream>
#include<cmath>
//biblioteca para poder utilizar la funcion pow() 

using namespace std; 
/*para encontrar una raiz de la ecuación f(x)=0 analiticamente, proporcionar la funcion
F(X)
DATOS:
-->a Y b que forman un intervalo, en donde se halla una raiz
-->TOL criterio de convergencia//la tolerancia
-->EX criterio de exactitud
-->MAXIT número maximo de iteraciones
RESULTADOS:
-->X la raiz aproximada o mensaje de falla
*/

double F(double x){
    
    
//3*x^3-2*x-5->función tomado como referencia

    return 3*pow(x,3)-2*x-5;
}
double biseccion(double a,double b,int MAXIT,double TOL,double EX){
    
int cont=1;
    
double c;
    
double fc;
    
while(cont<MAXIT){
        
c=(a+b)/2;
        
fc=F(c);
        
if(abs(b-a)<TOL)
            
return c;
        
if(abs(fc)<EX)
            
return c;
        
if(F(a)*fc<0)
            
b=c;
        
if(fc*F(b)<0)
            
a=c;
        
cont=cont+1;
    
}
    
return c;
} 


int main (int argc, char *argv[]) {
    
cout<<biseccion(0,2,100,0.0005,0.00005);
    
return 0; 

}


SALIDA:


Compartir

2 Responses to "Método de bisección en c++"