\( \DeclareMathOperator{\abs}{abs} \newcommand{\ensuremath}[1]{\mbox{$#1$}} \)
(%i4) |
f(
x)
:
=
x
*
%e
^(
1
-
x
^
2)
$
wxplot2d( f( x),[ x, - 3, 3]) ; define( df2( x), diff( f( x), x, 2)) ; wxdraw2d( filled_func =false, fill_color = blue, explicit( df2( x), x, - 3, 3), filled_func =false, color = red, line_width = 3, explicit( df2( x), x, 0, 1 . 23), filled_func =false, color = red, line_width = 3, explicit( df2( x), x, - 3, - 1 . 23), xaxis =true, yaxis =true) ; |
Está claro que x=0 es un cero de df2(x); sin embargo, los otros dos ceros son más difíciles de calcular a simple vista. Veamos como precisamos más con el método de bisección.
Por el teorema de Bolzano, la función si cambia de signo en el intervalo [-1.25,1] tendrá un cero dentro de él:
(%i5) | [ df2( - 1 . 25), df2( - 1)] ; |
Veamos cómo se comporta en el punto medio:
(%i9) |
a
:
-
1
.
25
$
b
:
-
1
$
p
:(
a
+
b)
/
2
$
[ df2( a), df2( p), df2( b)] ; |
Esto significa que el cero se encuentra en el intervalo [a,p]
(%i13) |
[
a,
p]
;
b : p $ p :( a + b) / 2 $ [ df2( a), df2( p), df2( b)] ; |
En cada iteración vamos estrechando el intervalo:
(%i17) |
[
a,
p]
;
b : p $ p :( a + b) / 2 $ [ df2( a), df2( p), df2( b)] ; |
(%i21) |
[
a,
p]
;
b : p $ p :( a + b) / 2 $ [ df2( a), df2( p), df2( b)] ; |
(%i25) |
[
p,
b]
;
a : p $ p :( a + b) / 2 $ [ df2( a), df2( p), df2( b)] ; |
(%i29) |
[
p,
b]
;
a : p $ p :( a + b) / 2 $ [ df2( a), df2( p), df2( b)] ; |
Ya casi tenemos garantizado un decimal exacto.
(%i33) |
[
a,
p]
;
b : p $ p :( a + b) / 2 $ [ df2( a), df2( p), df2( b)] ; |
Como observamos hemos atinado con un p de tres cifras decimales exactas:
(%i34) | [ p, df2( p)] ; |
Este método es de convergencia lineal. En el próximo veremos como la convergencia es cuadrática, lo que nos llevará a alcanzar más cifras significativas en menos iteraciones.
Created with wxMaxima.
El pasado ejercicio, buscábamos los ceros de la segunda derivada de una función para determinar los intervalos donde la función era concava o convexa: