Anda di halaman 1dari 14

Introduccin al programa

Mathematica .
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

f@Pi 8D N
0.53118

Pi 4 + Pi 8
2

16
Pi 4 + Pi 8
fB
F N
2
0.242421
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:

Departamento de Matem

Practica 4

Introduccion al programa Mathematica

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 K-Log@2D - LogB FO Log@2D>>


L

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.

K-Log@2D - LogB FO Log@2D . 8L Pi 2, 10^H-6L< N


L
19.5831
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 :=
a+b
a+b
a+b
IfBf@aD fB
F < 0, :a,
>, :
, b>F
2
2
2
biseccion@80, Pi 2<D

:0, >
4

biseccionB:0, >F
4

: , >
8 4

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

>, :0,

Departamento de Matem

Introduccion al programa Mathematica

Practica 4

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.

Hintfinal@@1DD + intfinal@@2DDL N
2
0.739086
ap =

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.

Departamento de Matem

Practica 4

Introduccion al programa Mathematica

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.

x00 = 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 se han necesitado 6 iteraciones.

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

f@x1D
0. 10-50

Departamento de Matem

Introduccion al programa Mathematica

Practica 4

Abs@x1 - x0D
1.70 10-47
datos = NestList@g, x00, 6D;
puntos = Partition@Flatten@Table@8datos@@iDD, datos@@iDD<,
8i, 1, Length@datosD<DD, 2, 1D;
puntos@@1, 2DD = 0;

l1 = Graphics@Line@puntosDD;

Plot@8x, g@xD<, 8x, 0.5, .8<, PlotRange 80.5, .8<,


AspectRatio Automatic, Epilog Line@puntosDD
0.80

0.75

0.70

0.65

0.60

0.55

0.50

0.55

0.60

0.65

0.70

0.75

0.80

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
75 151
>, : ,
>, :
,
>, :
,
>, :
,
>,
2
2
4
4
8
4
16
16
32
151 301
151 603
603 1207
603 2413
:
,
>, :
,
>, :
,
>, :
,
>,
32
64
32
128
128
256
128
512
2413 4825
4825 9651
9651 19 301
:
,
>, :
,
>, :
,
>,
512
1024
1024 2048
2048
4096
9651 38 603
9651 77 207
9651 154 415
:
,
>, :
,
>, :
,
>>
2048
8192
2048 16 384
2048
32 768

Departamento de Matem

Practica 4

Introduccion al programa Mathematica

intfinal = Nest@biseccion, 84, 5<, 15D


:

>
2048
32 768
1
ap = Hintfinal@@1DD + intfinal@@2DDL 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<

Hintfinal@@1DD + intfinal@@2DDL N
2
3.14159
ap =

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

Pi - ap
-1.11289 10-10
Veamos ahora cmo aproximar la raiz mediante el mtodo de Newton :

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


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

Departamento de Matem

Introduccion al programa Mathematica

Practica 4

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 se han necesitado 4 iteraciones.

cont
4
Y el error cometido es:

Pi - x1
0. 10-50
PREGUNTA : Si cogiramos como extremo inferior del intervalo
el punto de arranque del mtodo de Newton, a = x0 = 3.1,
y quisiramos obtener la raiz con cuatro iteraciones y con un error menor
que 10-50 utilizando el mtodo de biseccin en el intervalo @a, bD,
cual debera ser el valor de b ?

SetPrecisionBSolveB

b - 3.1
25

== 10-50F, 60F

88b
3.10000000000000008881784197001252323389053344726562
500000000<<
Se obtiene como conclusin que no es posible obtener la raiz con las condiciones que nos indican.
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

Departamento de Matem

Practica 4

Introduccion al programa Mathematica

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
x00 = 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

Grfica para ilustrar la dinmica del mtodo de Newton (la raiz es el punto de corte de la diagonal
con la grfica de la funcin de iteracin g(x)) :

Departamento de Matem

Introduccion al programa Mathematica

Practica 4

Plot@8x, g@xD<, 8x, 5, 7<,


PlotRange 85, 7<, AspectRatio Automatic,
Epilog 8Dashed, Line@88x1, 5<, 8x1, x1<<D<D
7.0

6.5

6.0

5.5

5.0

5.5

6.0

6.5

7.0

datos = NestList@g, x00, 6D;


puntos = Partition@Flatten@Table@8datos@@iDD, datos@@iDD<,
8i, 1, Length@datosD<DD, 2, 1D;
puntos@@1, 2DD = 0;

l1 = Graphics@Line@puntosDD;

Departamento de Matem

Practica 4

Introduccion al programa Mathematica

Plot@8x, g@xD<, 8x, 4, 8<, PlotRange 84, 8<,


AspectRatio Automatic, Epilog Line@puntosDD
8

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.

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]=2xDepartamento de Matem
10
(1 + x2 )ArcTan[x]. Para ello utilizamos el mtodo de Newton tomando como valor inicial 1.3 y resulta

Introduccion al programa Mathematica

Practica 4

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 - I2 x - I1 + x2M ArcTan@xDM H1 - 2 x ArcTan@xDL


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

0.5

1.0

1.5

2.0

-0.5

-1.0

-1.5

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
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,
,

Departamento de Matem

11

Practica 4

Introduccion al programa Mathematica

-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,
-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,
,
12

Departamento de Matem

Introduccion al programa Mathematica

Practica 4

-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.39;
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
cont
12
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

Departamento de Matem

13

Practica 4

Introduccion al programa Mathematica

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<

14

Departamento de Matem

Anda mungkin juga menyukai