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:
Y si quiero que me aparezca con 6 o 7 decimales
ResponderBorrarY si quiero que me aparezca con 6 o 7 decimales
ResponderBorrar