Está en la página 1de 11

Prcticas de Matemticas con

Mathematica .
Fundamentos de Matemticas III . Grado en Ingeniera
Civil.
Prctica n 2. Mtodos de resolucin aproximada de
ecuaciones.

Departamento de Matemtica Aplicada.


E.P.S. de Zamora
Universidad de Salamanca
Ejemplo 1: Halle las raices de la ecuacin Cos[x]=x utilizando el mtodo de biseccin.
Definimos la funcin:

f@x_D := Cos@xD - x
La orden Plot nos permite dibujar la grfica de la funcin para tener una idea de dnde se encuentra la raiz (o
races):

Plot@f@xD, 8x, -2, 2<D


1

-2

-1

-1

-2

La raiz est localizada en el intervalo90,

=.
2

Aplicaremos el mtodo de biseccin para hallar la raiz.El

punto de medio del primer intervalo corresponde a un valor donde la funcin toma valor negativo, as que el siguiente intervalo ser el 90, 4 =

f@Pi 4D N
-0.0782914

Siendo L la longitud del intervalo inicial y el error mximo que se quiere cometer al calcular la raiz, el
nmero de veces,n, que habr que aplicar el mtodo de biseccin es:

2 FM III (24-9-2012) Biseccin y Newton.nb

Siendo L la longitud del intervalo inicial y el error mximo que se quiere cometer al calcular la raiz, el
nmero de veces,n, que habr que aplicar el mtodo de biseccin es:

Solve@L 2^Hn + 1L , nD

Solve::ifun : Inverse functions are being used by Solve, so


some solutions may not be found; use Reduce for complete solution information.

::n

-Log@2D - LogA L E
Log@2D

>>

Particularizando para los valores de LPi/2,10^(-6) obtenemos que el nmero de veces que hay que
aplicar el mtodo de biseccin es n=20.

-Log@2D - LogA L E
Log@2D

19.5831

. 8L Pi 2, 10^H-6L< N

Log@2, Pi 2 10^6D - 1 N
19.5831

Definimos la funcin biseccin que a partir de un intervalo nos da el siguiente subintervalo donde se localiza

la raiz:

biseccion@8a_, b_<D := IfBf@aD fB


biseccion@80, Pi 2<D

:0, >
4

biseccionB:0, >F
4

: , >
4 8

a+b
2

F < 0, :a,

a+b
2

>, :b,

a+b
2

>F

La obtencin de la sucesin de subintervalos se puede obtener fcilmente con la orden NestList del Mathematica, hay que proporcionar un valor inicial para la funcin, en este caso el intervalo de partida {0,Pi/2}, y el nmero
de veces que se va a iterar, en este caso n=20, para obtener una aproximacin con el error requerido de 10^(-6).

NestList@biseccion, 80, Pi 2<, 20D

::0,


3
7
15
>, : , >, : ,
>, : ,
>, : ,
>,
2
4
4 8
4 16
4 32
4
64
15 31
15 61
15 121
15 241
:
,
>, :
,
>, :
,
>, :
,
>,
64
128
64
256
64
512
64
1024
241 481
241 963
241 1927
:
,
>, :
,
>, :
,
>,
1024
2048
1024
4096
1024
8192
1927 3855
1927 7709
7709 15 417
:
,
>, :
,
>, :
,
>,
8192
16 384
8192
32 768
32 768
65 536
7709 30 835
7709 61 671
7709 123 343
:
,
>, :
,
>, :
,
>,
32 768 131 072
32 768 262 144
32 768
524 288
123 343 246 687
123 343 493 373
:
,
>, :
,
>>
524 288
1 048 576
524 288
2 097 152

>, :0,

2 FM III (24-9-2012) Biseccin y Newton.nb

Si slo se quiere el intervalo final, es suficiente con utilizar la orden Nest en lugar de NestList.

intfinal = Nest@biseccion, 80, Pi 2<, 20D


:

123 343
524 288

493 373
2 097 152

>

La aproximacin de la raiz buscada se obtiene como el punto intermedio del intervalo.

ap =

intfinal@@1DD + intfinal@@2DD
2

0.739086

El valor de la funcin en el punto que acabamos de obtener es:

f@apD N

-1.2419 10-6
Vamos a calcular la raiz con suficiente precisin mediante la orden FindRoot del Mathematica para poder
ver qu error cometemos con el mtodo de biseccin:

ra = x . FindRoot@f@xD 0, 8x, 0.739<, WorkingPrecision 50D


0.73908513321516064165531208767387340401341175890076

El error entre la raiz proporcionada por el Mathematica y la aproximacin mediante el mtodo de biseccin
es menor que la tolerancia que exigimos al principio, como era de esperar.

ra - ap
-7.4205 10-7
Ejemplo 2: Halle las raices de la ecuacin Cos[x]=x utilizando el mtodo de Newton.
Primero obtenemos la funcin de iteracin g(x) a partir de la funcin f(x)=Cos[x]-x.

g@x_D = x - f@xD f'@xD


x-

-x + Cos@xD
-1 - Sin@xD

Si proporcionamos un valor de arranque, x0, la aplicacin sucesiva de la funcin g nos va generando la


sucesin de valores que se aproximan a la raiz

x0 = 0.6
0.6
x1 = g@x0D
0.744017
x2 = g@x1D
0.73909
La obtencin de los sucesivos valores puede hacerse de forma directa mediante la orden NestList.

2 FM III (24-9-2012) Biseccin y Newton.nb

NestList@g, x0, 20D

80.6, 0.744017, 0.73909, 0.739085, 0.739085, 0.739085,


0.739085, 0.739085, 0.739085, 0.739085, 0.739085,
0.739085, 0.739085, 0.739085, 0.739085, 0.739085,
0.739085, 0.739085, 0.739085, 0.739085, 0.739085<
El valor final se obtiene con la orden Nest.

apNew = Nest@g, x0, 20D


0.739085
El error cometido en esta aproximacin es del mismo orden que la precisin con que hemos hecho los
clculos (por defecto es 10^(-16)), as que el Mathematica lo indica con un 0:

ra - apNew
0.
Podemos ver el orden de las distintas aproximaciones haciendo la diferencia entre el valor exacto proporcionado por el Mathematica y la lista de las sucesivas aproximaciones:

ra - NestList@g, x0, 20D

90.139085, -0.00493219, -5.34367 10-6, -6.30496 10-12, 0., 0.,


0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.=

Podemos agrupar todo lo anterior, e incluso pedir que trabaje con ms precisin, e incluso aadir criterios de
parada, para que mientras no se cumpla que el valor de la funciin o la diferencia entre dos valores sucesivos no sea
menor que cierta tolerancia dada, se siga aplicando el mtodo. Incluimos un contador para ver cuantas iteraciones
necesitamos.

x0 = 0.6;
cont = 0;
x1 = SetPrecision@g@x0D, 50D;
val = SetPrecision@f@x1D, 50D;
cont = 1;

While@Or@Hval > 10^H-25LL, HAbs@x1 - x0D > 10^H-25LLD,


x0 = x1; x1 = SetPrecision@g@x0D, 50D;
val = SetPrecision@f@x1D, 50D; cont++D
El valor de la aproximacin es:

x1
0.73908513321516064165531208767387340401341175890076
y para ello ha necesitado 6 iteraciones.

cont
6
Comprobemos que se han cumplido las condiciones para el criterio de parada.

f@x1D
0. 10-50

2 FM III (24-9-2012) Biseccin y Newton.nb

Abs@x1 - x0D
1.70 10-47
Ejemplo 3: Halle las raices de la ecuacin Tan[x]=0 en el intervalo [4,5] mediante el mtodo de biseccin.

f@x_D := Tan@xD
Si aplicamos la funcin biseccin definida anteriormente al intervalo {4,5} obtenemos la sucesin de
intervalos:

NestList@biseccion, 84, 5<, 15D

:84, 5<, :5,

9 19
19 37
19 75
>, : ,
>, :
,
>, :
,
>,
2
2
4
4
8
4
16
75 151
151 301
151 603
603 1207
:
,
>, :
,
>, :
,
>, :
,
>,
16
32
32
64
32
128
128
256
603 2413
2413 4825
4825 9651
9651 19 301
:
,
>, :
,
>, :
,
>, :
,
>,
128
512
512
1024
1024 2048
2048
4096
9651 38 603
9651 77 207
9651 154 415
:
,
>, :
,
>, :
,
>>
2048
8192
2048 16 384
2048
32 768
intfinal = Nest@biseccion, 84, 5<, 15D
:

>
2048
32 768
intfinal@@1DD + intfinal@@2DD
ap =
N
2
4.71239
9651

154 415

f@apD N
527 587.

El valor encontrado evidentemente no es raiz de la ecuacin. Sencillamente porque la ecuacin no tiene


ninguna raiz en el intervalo de partida. Ntese que sin embargo el mtodo de biseccin se aplica sin problemas:

Plot@f@xD, 8x, 0, 5<D


6
4
2

-2
-4
-6

Si partimos de un intervalo adecuado, digamos {3,3.5} s que obtendremos una aproximacin a la raiz:

intfinal = Nest@biseccion, 83, 3.5<, 30D


83.14159, 3.14159<

2 FM III (24-9-2012) Biseccin y Newton.nb

ap =

intfinal@@1DD + intfinal@@2DD
2

3.14159

f@apD
1.11289 10-10
El valor exacto es Pi, as que el error cometido es:

Pi - ap
-1.11289 10-10

g@x_D = x - f@xD f'@xD


x - Cos@xD Sin@xD
x0 = 3.1;

cont = 0;
x1 = SetPrecision@g@x0D, 50D;
val = SetPrecision@f@x1D, 50D;
cont = 1;
While@Or@Hval > 10^H-25LL, HAbs@x1 - x0D > 10^H-25LLD,
x0 = x1; x1 = SetPrecision@g@x0D, 50D;
val = SetPrecision@f@x1D, 50D; cont++D
El valor de la aproximacin es:

x1
3.1415926535897932384626433832795028841971693993751
y para ello ha necesitado 4 iteraciones.

cont
4
Y el error cometido es:

Pi - x1
0. 10-50
3

Ejemplo 4: Halle el valor aproximado de la

222
3

Tenemos que resolver una ecuacin de la que el nmero anterior sea raiz. Ponemos x= 222 , y elevando al
cubo resulta x3 = 222, es decir el valor buscado es una raiz de la funcin polinmica f(x)=x3 - 222 (la cual por otra
parte ser un nmero irracional). Para estimar el valor de esa raiz utilizamos el mtodo de Newton

f@x_D := x^3 - 222

2 FM III (24-9-2012) Biseccin y Newton.nb

Plot@f@xD, 8x, 0, 8<D


300

200

100

-100

-200

g@x_D = x - f@xD f'@xD Simplify


74

2x

3
x2
x0 = 8.;

cont = 0;
x1 = SetPrecision@g@x0D, 50D;
val = SetPrecision@f@x1D, 50D;
cont = 1;
While@Or@Hval > 10^H-25LL, HAbs@x1 - x0D > 10^H-25LLD,
x0 = x1; x1 = SetPrecision@g@x0D, 50D;
val = SetPrecision@f@x1D, 50D; cont++D
x1
6.0550489465111047173674805703059618382194330373328
cont
7

SetPrecision@222^H1 3L - x1, 50D


0

Ejemplo 5: Halle el intervalo donde el mtodo de Newton converge cuando se utiliza para calcular la raiz
aproximada de la ecuacin ArcTan[x]=0.
Se trata de encontrar si hay dos valores para los cuales los puntos de corte con las respectivas tangentes con
el eje OX son los mismos puntos. De esa forma se originar un bucle en el mtodo de Newton y no habr convergencia. Estos puntos determinarn un intervalo como el del dibujo dentro del cual obtendremos convergencia, y fuera
del mismo divergencia.

2 FM III (24-9-2012) Biseccin y Newton.nb

Plot@ArcTan@xD, 8x, -2, 2<,


Epilog 8Line@881.391745, ArcTan@1.391745D<, 8-1.391745, 0<<D,
Line@88-1.391745, ArcTan@-1.391745D<, 81.391745, 0<<D,
Dashing@0.01D,
Line@88-1.391745, 0<, 8-1.391745, ArcTan@-1.391745D<<D,
Line@881.391745, 0<, 81.391745, ArcTan@1.391745D<<D<D
1.0

0.5

-2

-1

-0.5

-1.0

Sea a>0 el punto inicial. La recta tangente en ese punto a la curva es y - ArcTan@aD =

1
1+a2

Hx - aL y

corta al eje OX en el punto a-(1 + a2 )ArcTan[a]. Igualando este punto con el valor -a y resolviendo la ecuacin
resultante obtendremos el valor pedido. Se trata pues de hallar la raiz de la ecuacin -a=a-(1 + a2 )ArcTan[a], o
equivalentemente un cero de la funcin f[x]=2x-(1 + x2 )ArcTan[x]. Para ello utilizamos el mtodo de Newton
tomando como valor inicial 1.3 y resulta

f@x_D := 2 x - H1 + x^2L ArcTan@xD


g@x_D = x - f@xD f'@xD
x-

2 x - I1 + x2M ArcTan@xD
1 - 2 x ArcTan@xD

Plot@f@xD, 8x, 0, 2<D


0.5

0.5

-0.5

-1.0

-1.5

x0 = 1.3;

1.0

1.5

2.0

2 FM III (24-9-2012) Biseccin y Newton.nb

cont = 0;
x1 = SetPrecision@g@x0D, 50D;
val = SetPrecision@f@x1D, 50D;
cont = 1;
While@Or@Hval > 10^H-25LL, HAbs@x1 - x0D > 10^H-25LLD,
x0 = x1; x1 = SetPrecision@g@x0D, 50D;
val = SetPrecision@f@x1D, 50D; cont++D
x1
1.3917452002707349244164412881851277450451647359387
cont
6
Comprobemos que tomando este punto a=1.3917452002707349244164412881851277450451647359387 se
produce un bucle cuando se utiliza el mtodo de Newton para hallar la raiz de la ecuacin ArcTan[x]=0.

f@x_D := ArcTan@xD

g@x_D = x - f@xD f'@xD


x - I1 + x2M ArcTan@xD

SetPrecision@NestList@g, x1, 50D, 50D

81.3917452002707349244164412881851277450451647359387,
-1.3917452002707349244164412881851277450451647359387,
1.3917452002707349244164412881851277450451647359387,
-1.3917452002707349244164412881851277450451647359387,
1.3917452002707349244164412881851277450451647359387,
-1.3917452002707349244164412881851277450451647359387,
1.3917452002707349244164412881851277450451647359387,
-1.3917452002707349244164412881851277450451647359387,
1.3917452002707349244164412881851277450451647359387,
-1.3917452002707349244164412881851277450451647359387,
1.3917452002707349244164412881851277450451647359387,
-1.3917452002707349244164412881851277450451647359387,
1.3917452002707349244164412881851277450451647359387,
-1.3917452002707349244164412881851277450451647359387,
1.3917452002707349244164412881851277450451647359387,
-1.3917452002707349244164412881851277450451647359387,
1.3917452002707349244164412881851277450451647359388,
-1.3917452002707349244164412881851277450451647359386,
1.3917452002707349244164412881851277450451647359379,
-1.3917452002707349244164412881851277450451647359366,
1.3917452002707349244164412881851277450451647359345,
-1.3917452002707349244164412881851277450451647359893,
1.3917452002707349244164412881851277450451647360467,
-1.3917452002707349244164412881851277450451647362048,
1.3917452002707349244164412881851277450451647366249,

10

2 FM III (24-9-2012) Biseccin y Newton.nb

1.3917452002707349244164412881851277450451647366249,
-1.3917452002707349244164412881851277450451647377306,
1.3917452002707349244164412881851277450451647406352,
-1.3917452002707349244164412881851277450451647483190,
1.3917452002707349244164412881851277450451647685578,
-1.3917452002707349244164412881851277450451685049334,
1.3917452002707349244164412881851277450451769588021,
-1.3917452002707349244164412881851277450452837029774,
1.3917452002707349244164412881851277450446476073774,
-1.3917452002707349244164412881851277450417088715003,
1.3917452002707349244164412881851277450387701356232,
-1.3917452002707349244164412881851277451269322119349,
1.3917452002707349244164412881851277454090508561323,
-1.3917452002707349244164412881851277461466735612733,
1.3917452002707349244164412881851277480480356737283,
-1.3917452002707349244164412881851277530938451746330,
1.3917452002707349244164412881851277662623206397196,
-1.3917452002707349244164412881851278008835680073131,
1.3917452002707349244164412881851278922547438967295,
-1.3917452002707349244164412881851281332781055893313,
1.3917452002707349244164412881851287691970394971724,
-1.3917452002707349244164412881850650447431507708334,
1.3917452002707349244164412881921234686272130614834,
-1.3917452002707349244164412882047452431107492503700,
1.3917452002707349244164412882299887920778216281431,
-1.3917452002707349244164412882930976644955025725761,
1.3917452002707349244164412884066936348473282725554<
Como el valor que tomamos es aproximado no siempre se repiten los mismos valores, debido a los errores
que se cometen al truncar el valor inicial y debido a los errores que involucran las operaciones, pero de todas formas
se ve la alternancia de los valores que se obtienen y la convergencia tan lenta que presentan (de hecho el ltimo valor
de la lista anterior es mayor que x1, con lo cual en realidad habr divergencia).Para valores ms pequeos que el
valor de a=1.3917452002707349244164412881851277450451647359387 habr convergencia, y para valores
mayores habr divergencia.

x0 = 1.3;
cont = 0;
x1 = SetPrecision@g@x0D, 50D;
val = SetPrecision@f@x1D, 50D;
cont = 1;
While@Or@Hval > 10^H-25LL, HAbs@x1 - x0D > 10^H-25LLD,
x0 = x1; x1 = SetPrecision@g@x0D, 50D;
val = SetPrecision@f@x1D, 50D; cont++D
x1
0

2 FM III (24-9-2012) Biseccin y Newton.nb

11

cont
8
Para valores de arranque que originan divergencia hemos de considerar un criterio de paro consistente en un
nmero mximo de iteraciones. En este caso hemos considerado tal nmero igual a 20, as que cuando el contador
llega a ese valor el proceso se termina.

x0 = 1.45;
cont = 0;
x1 = SetPrecision@g@x0D, 50D;
val = SetPrecision@f@x1D, 50D;
cont = 1;
While@Or@Hval > 10^H-25LL, HAbs@x1 - x0D > 10^H-25LLD &&
cont < 20, x0 = x1; x1 = SetPrecision@g@x0D, 50D;
val = SetPrecision@f@x1D, 50D; cont++D
cont
20
x1
1.2528661619609705806006104269440310733892352973287 1072 217
NestList@g, 1.45, 20D

91.45, -1.55026, 1.84593, -2.88911, 8.67845, -102.443,


16 281.4, -4.16359 108, 2.72305 1017, -1.16474 1035,
2.13099 1070, -7.13317 10140, 7.99254 10281,
-1.003436027226568 10564, 1.581609469953546 101128,
-3.92932897158335 102256, 2.42525080700910 104513,
-9.2391749867017 109026, 1.34086872792897 1018 054,
-2.8241801834891 1036 108, 1.2528661620342 1072 217=

NOTA : aunque en este problema, debido a la simetra impar de la funcin,


hemos podido reducir el clculo de los bucles a determinar la solucin de una nica ecuacin,
f @aD
f @bD
en general habr que resolver un sistema de la forma :a b, b a> .
f '@aD
f '@bD

sol = FindRootB:a -

f@aD

f'@aD

b, b -

f@bD

f'@bD

a>, 8a, 1.4<,

8b, -1.4<, MaxIterations 200, WorkingPrecision 50F

8a 1.3917452002707349244164412881851277450451647359387,
b -1.3917452002707349244164412881851277450451647359387<

También podría gustarte