El método de bisección es una de las soluciones numéricas básicas para hallar la raíz de una ecuación polinómica. Encierra entre paréntesis el intervalo en el que se encuentra la raíz de la ecuación y lo subdivide en mitades en cada iteración hasta encontrar la raíz. Por ello, el método de bisección también se denomina método de entre paréntesis.
Este método , que se utiliza para resolver ecuaciones de una variable, está basado en el «Teorema de los Valores Intermedios» (TVM), en el cual se 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), de tal forma que la ecuación f(x)=0 tiene una sola raíz que verifica f(a).f(b)<0.
En pocas palabras, consiste en ir dividiendo la función que hemos visto arriba (grafica 1) en subintervalos, y hallar los puntos medios de cada uno de ellos (m), resultando en (grafica 2):
TAREA
octave:1> #EJERCICIOS
octave:1> # Ejercicio 1: f(x)=x*sin(x)-1
octave:1> function [c,yc,err,P] = bisect(a,b,delta)
f = input('Ingrese f(x) entre comillas en términos de x: ');
f = inline(f, 'x');
err = 0;
P = [a b err];
ya = feval(f,a);
yb = feval(f,b);
if ya*yb > 0
disp('No hay cambio de signo. No se puede aplicar bisección.');
return
end
max1 = 1 + round((log(b - a) - log(delta)) / log(2));
for k = 1:max1
c = (a + b)/2;
yc = feval(f,c);
if ya*yc < 0
b = c;
yb = yc;
else
a = c;
ya = yc;
end
err = abs(b - a)/2;
P = [P; a b err];
if err < delta
break
end
end
disp('c (raíz aproximada):'), disp(c)
disp('f(c):'), disp(yc)
disp('Error estimado:'), disp(err)
disp(' X0 X1 ERROR')
disp(P)
end
octave:2> [c,yc,err,P] = bisect(0, 2, 1e-3)
Ingrese f(x) entre comillas en términos de x: > 'x*sin(x)-1'
warning: inline is obsolete; use anonymous functions instead
c (raíz aproximada):
1.1152
f(c):
1.4960e-03
Error estimado:
9.7656e-04
X0 X1 ERROR
0 2.0000 0
1.0000 2.0000 0.5000
1.0000 1.5000 0.2500
1.0000 1.2500 0.1250
1.0000 1.1250 0.0625
1.0625 1.1250 0.0312
1.0938 1.1250 0.0156
1.1094 1.1250 0.0078
1.1094 1.1172 0.0039
1.1133 1.1172 0.0020
1.1133 1.1152 0.0010
c = 1.1152
yc = 1.4960e-03
err = 9.7656e-04
P =
0 2.0000 0
1.0000 2.0000 0.5000
1.0000 1.5000 0.2500
1.0000 1.2500 0.1250
1.0000 1.1250 0.0625
1.0625 1.1250 0.0312
1.0938 1.1250 0.0156
1.1094 1.1250 0.0078
1.1094 1.1172 0.0039
1.1133 1.1172 0.0020
1.1133 1.1152 0.0010
octave:3> # Ejercicio 2: f(x)= x^3 + 4*x^2 - 10
octave:3> [c,yc,err,P] = bisect(1, 2, 1e-4)
Ingrese f(x) entre comillas en términos de x: > 'x^3 + 4*x^2 - 10'
c (raíz aproximada):
1.3651
f(c):
-1.9437e-03
Error estimado:
6.1035e-05
X0 X1 ERROR
1.0000 2.0000 0
1.0000 1.5000 0.2500
1.2500 1.5000 0.1250
1.2500 1.3750 0.0625
1.3125 1.3750 0.0312
1.3438 1.3750 0.0156
1.3594 1.3750 0.0078
1.3594 1.3672 0.0039
1.3633 1.3672 0.0020
1.3633 1.3652 0.0010
1.3643 1.3652 0.0005
1.3647 1.3652 0.0002
1.3650 1.3652 0.0001
1.3651 1.3652 0.0001
c = 1.3651
yc = -1.9437e-03
err = 6.1035e-05
P =
1.0000 2.0000 0
1.0000 1.5000 0.2500
1.2500 1.5000 0.1250
1.2500 1.3750 0.0625
1.3125 1.3750 0.0312
1.3438 1.3750 0.0156
1.3594 1.3750 0.0078
1.3594 1.3672 0.0039
1.3633 1.3672 0.0020
1.3633 1.3652 0.0010
1.3643 1.3652 0.0005
1.3647 1.3652 0.0002
1.3650 1.3652 0.0001
1.3651 1.3652 0.0001
CÓDIGOS_MÉTODO DE BISECCIÓN