(%i2) f( x) : = x ^ 3 + x ^ 2 - x - 2 $
makelist( f( i), i, - 3, 3) ;
(%o2) [ 17 , 4 , 1 , 2 , 1 , 8 , 31 ]

Los valores que nos ofrece f(x) nos dicen que existe un c en [1,2] tal que f(c)=0. Para descubrirlo calcularemos el punto medio y veremos que subintervalo cambia de signo:

(%i6) a : 1 $ b : 2 $ p :( a + b) / 2 $
[ f( a), f( p), f( b)] ;
(%o6) [ 1 , 17 8 , 8 ]

Esto nos dice que el cero estará en el intervalo [a,p]. Mantengamos a y redifinamos b como p, y volvamos a calcular el punto medio:

(%i9) b : p $ p :( a + b) / 2 $
[ f( a), f( p), f( b)] ;
(%o9) [ 1 , 17 64 , 17 8 ]

De nuevo el cero se encuentra en [a,p], por tanto, sigamos manteniendo a y cambiemos b:

(%i12) b : p $ p :( a + b) / 2 $
[ f( a), f( p), f( b)] ;
(%o12) [ 1 , 223 512 , 17 64 ]

Ahora nos indica que el cero se encuentra en el intervalo [p,b]: mantengamos b y cambiemos a:

(%i15) a : p $ p :( a + b) / 2 $
[ f( a), f( p), f( b)] ;
(%o15) [ 223 512 , 421 4096 , 17 64 ]

En cada iteración vamos estrechando el intervalo. Continuemos:

(%i18) a : p $ p :( a + b) / 2 $
[ f( a), f( p), f( b)] ;
(%o18) [ 421 4096 , 2519 32768 , 17 64 ]

En esta última itereación hemos conseguido el intervalo [19/16,39/32], esto significa que cualquier punto elegido de este intervalo se acerca a nuestra solución:

(%i20) err : abs( a - p), numer $
print( "Error:", err) $
Error: 0.03125

Disminuiremos este error conforme realicemos más iteraciones.


Created with wxMaxima.