You are on page 1of 7

Mtodo de Biseccin

Mtodo de numrico para determinar las races de una ecuacin con una incgnita.
Mediante FMSLogo y la biblioteca LogoFE (para las grficas).

Contenido

1. Trabajando con funciones


2. Descripcin de Mtodo de Biseccin
3. Adaptacin Grfica
4. Mayor Precisin
5. Aplicaciones
6. Licencia
7. Enlaces

1. Trabajando con funciones

FMSLogo puede evaluar funciones primitivas, de la biblioteca, o definidas por el


programador con el funcin invoca. Por ejemplo en la lnea de comandos de
FMSLogo podemos escribir:

haz"fleepalabra paradoble:n haz"f[[x]2*sen:x]


sen devuelve2*:n escribeinvoca:f45
fin 1.41421356237309
escribe:f
sen haz"f"doble escribeinvoca[[z]2*sen:z]
escribeinvoca:f 45
escribeinvoca:f4 45 1.41421356237309
5 90
0.707106781186547

la variable f tiene la variable f tiene la variable f tiene como valor una


como valor la como valor la lista equivalente a la funcin
palabra sen leida palabra doble que matemtica:
desde el teclado, es una funcin
sen es una funcin definida desde la f(x) = 2 sen(x)
primitiva (es parte lnea de comandos
del lenguaje) que
trabaja en grados

[ arriba ]

2. Descripcin de Mtodo de Biseccin

Trabajemos con la ecuacin:

cos(x) = 0.01 x

Esta ecuacin no puede resolverse por mtodos algebricos. Es necesario utilizar


mtodos nmericos para encontrar un valor de x que satisfaga la ecuacin. Uno de
estos mtodos es el mtodo de biseccin. El mtodo busca el valor de x para el que
una funcin continua devuelve cero. Por lo que definamos la funcin, a partir de la
ecuacin anterior, de la siguiente manera:

f(x) = 0.01 x - cos(x)

Si encontramos un valor de x adecuado para el que la funcin f es cero, podremos


plantear:

0 = f(x) = 0.01 x - cos(x)


0 = 0.01 x - cos(x)
cos(x) = 0.01 x

Y consecuentemente, la ecuacin se cumplir.

El mtodo necesita un intervalo tal que, para un extremo del intervalo, el valor de la
funcin sea nagativo y para el otro extremo del intervalo, el valor de la funcin sea
positivo. Veamos si esto se cumple para el intervalo (-200,200):

escribeinvoca[[x]0.01*:xcos:x]200
1.06030737921409

escribeinvoca[[x]0.01*:xcos:x]200
2.93969262078591

Efectivamente, existe una raz de la ecuacin en el intervalo (-200,200).

Podemos producir una grfico de la funcin f utilizando los procedimientos de la


biblioteca LogoFE.

borrapantalla
graflineas[]recorrido[[x]0.01*:xcos:x]dominio[20020010
0]

El mtodo de biseccin evala la funcin en el extremo izquierdo y derecho del


intervalo. Luego calcula el valor intermedio entre los extremos y evala la funcin en
este valor intermedio. Luego redefine el intervalo utilizando el valor intermedio, de tal
manera que los valores de la funcin en los extremos del nuevo intervalo tengan
diferente signo. El procedimiento imprime.linea nos muestra los resultados
parciales:

parabiseccion:f:iz:de
repite10[
haz"f_izinvoca:f:iz
haz"f_deinvoca:f:de
haz"medio(:iz+:de)/2

haz"f_medioinvoca:f:medio
imprime.linea

si:f_medio*:f_iz<0[haz"de:medio]
si:f_medio*:f_de<0[haz"iz:medio]
]
fin

paraimprime.linea
escribe`[(,[formatonumero:iz83],[formatonumero:de83])
f(iz):,[formatonumero:f_iz63]
f(de):,[formatonumero:f_de63]
medio:,[formatonumero:medio83]
f(medio):,[formatonumero:f_medio63]]
fin

Al ejecutar el procedimiento biseccin en el intervalo (-200,200) obtenemos:

biseccion[[x]0.01*:xcos:x]200200

(200.000200.000)f(iz):1.060f(de):2.940medio:0.000
f(medio):1.000
(0.000200.000)f(iz):1.000f(de):2.940medio:100.000
f(medio):1.174
(0.000100.000)f(iz):1.000f(de):1.174medio:50.000
f(medio):0.143
(50.000100.000)f(iz):0.143f(de):1.174medio:75.000
f(medio):0.491
(50.00075.000)f(iz):0.143f(de):0.491medio:62.500
f(medio):0.163
(50.00062.500)f(iz):0.143f(de):0.163medio:56.250
f(medio):0.007
(50.00056.250)f(iz):0.143f(de):0.007medio:53.125
f(medio):0.069
(53.12556.250)f(iz):0.069f(de):0.007medio:54.688
f(medio):0.031
(54.68856.250)f(iz):0.031f(de):0.007medio:55.469
f(medio):0.012
(55.46956.250)f(iz):0.012f(de):0.007medio:55.859
f(medio):0.003

Vemos cmo, inicialmente, el intervalo va de -200 a 200, posteriormente se reduce a


la mitad: (0,200) y luego a la mitad (0,100). As mismo, la funcin f va devolviendo
valores cada vez ms cercanos a cero para deferentes valores intermedios;
inicialmente es -1.000 y luego de diez repeticiones es -0.003.

Al final de estas 10 repeticiones, el valor estimado para x es 55.859. Veamos cun


bien funciona x = 55.859 como raz de la ecuacin.

escribecos55.859
0.561231398520766

escribe0.01*55.859
0.55859
cos(x) = 0.01 x

0.56123 = 0.55859 (aproximadamente)

[ arriba ]

3. Adaptacin Grfica

Si dentro del procedimiento biseccion reemplazamos el comando imprime.linea


por el comando dibuja.intervalo cuyo procedimiento est a continuacin

parabiseccion:f:iz:de
repite10[
haz"f_izinvoca:f:iz
haz"f_deinvoca:f:de

haz"medio(:iz+:de)/2

haz"f_medioinvoca:f:medio
dibuja.intervalo

si:f_medio*:f_iz<0[haz"de:medio]
si:f_medio*:f_de<0[haz"iz:medio]
]
fin

paradibuja.intervalo
subelapizponx:iz
bajalapizavanza5ponx:deretrocede5ponx:iz
subelapizavanza7
fin

obtenemos la representacin grfica de los sucesivos intervalos encontrados, al


escribir lo siguiente en la lnea de comandos de LogoFE:

borrapantalla
graflineas[]recorrido[[x]0.01*:xcos:x]dominio[20020010
0]
subelapizpony10ponrumbo0
biseccion[[x]0.01*:xcos:x]200200
[ arriba ]

4. Mayor Precisin

Podemos mejorar la aproximacin del valor de x modificando el procedimiento


biseccion de tal manera que realize ms repeticiones. Es ms, podemos decirle que
siga refinando la solucin hasta que el intervalo sean tan estrecho como querramos:

parabiseccion:f:iz:de
mientras[(abs:iz:de)>0.000000001][
haz"f_izinvoca:f:iz
haz"f_deinvoca:f:de
haz"medio(:iz+:de)/2
haz"f_medioinvoca:f:medio

si:f_medio*:f_iz<0[haz"de:medio]
si:f_medio*:f_de<0[haz"iz:medio]
]
devuelve:medio
fin
escribebiseccion[[x]0.01*:xcos:x]200200
55.9670123468095

escribecos55.9670123468095
0.559670123476041

escribe0.01*55.9670123468095
0.559670123468095

escribeformatonumero(0.5596701234680950.559670123476041)1616
0.0000000000079460
[ arriba ]

5. Aplicaciones
El procedimiento biseccion puede utilizarse para resolver muchos tipos de
problemas. Por ejemplo, para resolver ecuaciones de una variable sin tener que
despejar, para encontrar la raz cuadrada de 2,

haz"xbiseccion[[x]:x*:x2]02

escribe:x
1.41421356145293

escribe:x*:x
1.99999999739737

para encontrar las races de un polinomio: f(x) = x5 + x4 - 3 x3 - 2

haz"f[[x]:x*:x*:x*:x*:x+:x*:x*:x*:x3*:x*:x*:x2]

borrapantalla
graflineas[]recorrido:fdominio[2.52100]

escribebiseccion:f2.52
2.25364402215928

escribebiseccion:f20
0.862353793345392

escribebiseccion:f02
1.46975488495082
escribeformatonumero(invoca:f2.25364402215928)1010
0.0000000192

escribeformatonumero(invoca:f0.862353793345392)1010
0.0000000049

escribeformatonumero(invoca:f1.46975488495082)1010
0.0000000107
[ arriba ]
6. Licencia

Este es un documento libre.

Autor: Daniel Ajoy

Esta obra est licenciada bajo una Licencia Creative Commons Atribucin-Compartir
Obras Derivadas Igual 2.5 Espaa.

[ arriba ]

7. Enlaces

Comentarios, Sugerencias

Pgina Principal

[ arriba ]

Generado con PureJoy.


Fecha: 11:38 - Oct 07, 2007

You might also like