F´ısica Computacional - Departamento de Física Teórica I

Transcripción

F´ısica Computacional - Departamento de Física Teórica I
UNIVERSIDAD COMPLUTENSE DE MADRID
DEPARTAMENTO DE FISICA TEORICA I
MJRPlaza
Fı́sica Computacional
Los libros de donde se toman los ejercicios están indicados entre corchetes, ası́ [Knuth] es Knuth,
[PTVF] es Press, Teukolsky, Vetterling and Flannery, [FB] es Faires&Burden, [KC] Kincaid&Cheney,
etc. La referencia completa está en el programa de la asignatura. Los problemas en rojo se proponen
como ejercicios al alumno. Los que no tienen punto unos los hago yo en clase, otros los haremos en el
laboratorio de Fı́sica Computacional. Los que sean para entregar al profesor (evaluación continua)
se señalarán a su debido tiempo.
Nota muy importante: El profesor, o sea yo, MJRP, no valora los ejercicios que se hacen en grupo
o en parejas. Lo que falta de frase, lo diré en clase que se tarda menos.
DE RELLENO PERO ÚTILES
1. (A mano) Convert 729 to binary. Sol: 10110110012 . Convert 100111.1012 to decimal. Sol:
39.62510 . • Convert −214358 to binary.
2. (A mano) Escribir como fracción los siguientes números racionales: a) 0.6666666 . . ., • b)
5.137137137 . . ., • c) 0.999999 . . . (el más sorprendente, sin duda alguna).
3. • Buscar en Maple los comandos que resuelven los ejercicios anteriores. Pierda en ello un
tiempo prudencial, no más. Pregúnteme si no los encuentra. Compruebe que los resultados
son los obtenidos a mano.
4. • En la secuencia 1012 − 1, 1012 − 2, 1012 − 3, . . ., ¿cuál es el primer primo? (ver el ejercicio
34) ¿Ha necesitado usted ordenador para averiguarlo?
[Yo sı́ necesité el ordenador. Habı́a dos números antes del pedido que no sabı́a entre qué dividirlos. Y lo mismo aplica para el que pide el ejercicio: que no sabı́a si era primo o no. ¿Qué
habrı́an hecho un Euler o un Gauss en este caso? Pregunta retórica, no conteste.]
5. • [Experimental Mathematics] Is it true that 2 arctan
one or another with: i) Maple, ii) analitically.
4π
2
= arctan 2
, or is it false? Prove
π
π −4
CÁLCULO DE LOS CEROS DE UNA FUNCIÓN
6. • Para familiarizarse con el método de Newton y el de la Secante coged el Faires&Burden
de la biblioteca, y de las secciones 2.3, 2.4 y algo de la 2.5 haced los ejercicios que queráis.
Mejor aquellos de los que venga la solución en el libro o tengan algo interesante (no todos
son interesantes). Cuando os salgan, pasáis a otra cosa. Los enunciados de los problemas del
Kincaid&Cheney están muy bien también.
√
√
7. [Newton’s method] To approximate numbers such as 3 or 3 25 one calculates the zeros of
x2 − 3, or x3 − 25, for instance. Resolve both cases with Newton’s method with your own
tolerance. Choose the initial point carefully.
If we wanted to have a numerical approximation of log 2, would it be possible to write a polynomial with integer coefficients such that one of its roots were exactly equal to log 2? Answer:
Table 1:
n
xn
2
3
4
5
6
7
1.263157895
1.338827839
1.366616395
1.365211902
1.365230001
1.365230013
f (xn )
-1.602274379
-0.430364747
-0.02290944
-0.000299080
-0.000000204
-0.000000008
no. The number log 2 is a trascendent number, not an algebraic number. An algebraic number
is a zero of a polynomial of arbitrary degree with integer coefficients.
8. [KC, pg 74] ¿Qué calculan los siguientes esquemas numéricos? Identifı́quelos, si es posible,
como la iteración de Newton de una cierta función.
1 a) xn+1 = 23 xn + 2 , b) xn+1 = xn (2 − R xn ).
xn
9. [KC, pg 13] [Curioso] What happens if the Newton iteration is applied to f (x) = arctan x with
x0 = 2? For what starting point value will Newton’s method converge?
10. Con Maple. La solución real de x3 + 4x2 − 10 = 0 es exactamente:
s
s
√
√
3 71
105
105 4
3 71
+
+
−
− .
27
9
27
9
3
Encuéntrela resolviendo el polinomio (los de grado 3 se resuelven por radicales). Y ya puestos,
las complejas conjugadas también. El valor exacto de la solución real con ocho cifras decimales,
como usted puede comprobar con Maple (comando fsolve) o utilizando métodos numéricos es
1.36523001. Usando el metodo de la secante con x0 = 1 y x1 = 2 y tolerancia 10−6 se obtiene
la Tabla 1. Se trabaja con 10 dı́gitos.
11. • [F-B, pag 47] Utilice Maple para determinar cuántas iteraciones del método de la secante son
necesarias para calcular una raı́z de f (x) = cos x − x con una precisión de 10−100 tomando
como puntos iniciales x0 = 1/2 y x1 = π/4.
Sol: Maple trabaja por defecto con 10 dı́gitos y no puede ver de ninguna manera si la diferencia
de dos números es 10−100 como dice el enunciado (porque ve 0). Cambie entonces el número
de dı́gitos a 120, por ejemplo. Necesita 10 iteraciones (el primer x2 lo cuento como primera
iteración, el libro lo hace como segunda, por el dos del subı́ndice) para alcanzar una tolerancia
de 10−100 . El resultado escrito con 100 cifras es
p = 0.73908513321516064165531208767387340401341175890075746496568063
57732846548835475945993761069317665319.
(lo he escrito con 102 cifras y luego tirado dos para redondear con la ley del 5). O sea, que el
19 final viene de redondear 1850.
12. • [Iteration method] In the year 1225 Leonardo of Pisa, also known as Fibonacci, studied the
equation
f (x) = x3 + 2x2 + 10x − 20 = 0
and produced p = 1.368 808 107. Nobody knows by what method Leonardo found this value
but it is a remarkable result for his time. Write the equation in the form x = F (x) with
F (x) = 20/(x2 + 2x + 10). i) Starting with x0 = 1, how many iterations are necessary to
produce Leonardo’s result? ii) Why is the convergence of the algorithm so slow? iii) Find that
the real root of Leonardo is exactly
q
q
13 √
2
13 √
6 3930 + 352 −
6 3930 − 352 − .
3
3
3
Sol: i) 26. ii) Because en+1 ∼ F ′ (p) en (demuestre esto, por favor), i.e. en+1 ∼ 0.44 en and
0.44 indicates that are necessary two or three iterations to obtain a new correct decimal place.
(Observe that if F ′ (p) is near 1 this is slow convergence. And F ′ (p) ≥ 1 is no convergence at all)
q
p
√ p
√
√
13. [Bender&Orszag, pg 245] Show that the sequence 7, 7 − 7, 7 − 7 − 7, . . . converges
and evaluate the limit [Putnam, 1953].
Sol: Primero se ve a qué converge y luego se justifica. Es de aplicaciones contractivas.
14. [Puede utilizar un teorema debido a Cauchy] Find an annulus (corona circular) centered at the
origin with all the zeros of the polynomial x4 − 4x3 + 7x2 − 5x − 2.
NONLINEAR ALGEBRAIC EQUATIONS IN SEVERAL VARIABLES
15. Solve the equations x = sin(x + y), y = cos(x − y).
Sol: Unique solution (plot with Maple). It is the point (0.93508206, 0.99802005) and takes for
Newton-Raphson 5 iterations with the choice (x0 , y0 ) = (0.9, 0.7), ten digits accuracy, tolerance 10−9 .
16. Solve the equations x = sin x cosh y, y = cos x sinh y near x = 7., y = 3.. Sol: In this case there
are many solutions, as a Maple plot indicates.
PARA ENTREGAR CUANDO YO LOS PIDA (pedidos el 5 de Diciembre de 2012)
17. • [Kepler’s equation] A very famous equation in Astronomy is Kepler’s equation, s−e sin s = m.
It derives from the Second Law of Planetary Motion ‘the line connecting the Sun to a planet
sweeps equal areas in equal times’ and involves the ellipse eccentricity, 0 < e < 1, the angle s
(see the picture) known as eccentric anomaly and the mean anomaly m, that by definition is
equal to m = 2πt/T . The problem is to find s when e and m are known.
y
P
s
a
b
θ
x
ae focus
i) Mathematically speaking for each m in [0, π] there is only one s that satisfies the equation.
This is because Kepler equation is a fixed point problem with F (s) ≡ m + e sin s = s. But it
is not just another fixed point problem: it is a very rich and surprising one. Although no one
has solved it analitically (numerically, yes, of course, and as a power series in e, and related
to Bessel functions also) try to obtain with Maple a few results. For example, a) set e = 1/2,
and construct the sequence F (0), F (F (0)), F (F (F (0))), . . .. Stop when you have applied F
one hundred times (a do will do the job and will do it perfecfly if you write e = 0.5 instead
of 1/2). Expand the result in power series around m = 0 (with the Maple command series
and with truncate order equal to 16, for instance). What is your result? Is it an even function
of m or is it odd? b) Repeat with F (1), F (F (1)), F (F (F (1))), . . .. Expand in a series. Do
you obtain the same series than in a)? You shall obtain the same series! c) Repeat with
F (3), F (F (3)), F (F (F (3))), . . .. Expand again. Do you obtain the same series than in a)?
Again, you shall obtain the same series since the fixed point is unique. d) Check that in all
the three previous cases the result is
44
2696 7 81068 9
4
m +
m + ··· .
2m − m3 + m5 −
3
15
315
2835
ii) Often Kepler equation is used in the following manner. In its motion around the Sun, that
it is in the focus of an ellipse, the Earth makes one complete orbit in approximately T = 365
days. The eccentricity of the ellipse is about 0.0167. Approximately is on January 4 when the
Earth approaches closest to the Sun (perihelion occurs approximately on January 4). Now we
we want to know the Earth’s position on February 15, or 41 days since perihelion. Finding the
Earth’s position at this time requires solving Kepler’s equation for s. In this case, the Earth is
at P and m = 2π · 41/365 ∼ 0.70578. Use Newton’s method to obtain a good approximation
for s solving s − 0.0167 sin s = 0.70578.
Just in case you want to know, once s is known the
r
s
1+e
θ
tan .
angle θ is calculated with tan =
2
1−e
2
18. • [Pozo finito de potencial-Pozo infinito] Consider an electron in a finite potential well L =
0.5 × 10−9 m wide and V0 = 25 eV deep. Obtain the energy levels for this finite well solving
one of the equations (Newton’s method does the job very well)
p
p
α tan α = α2o − α2 , α cot α = − α2o − α2 ,
where α2 = me EL2 /2~2 and α20 = me c2 V0 L2 /2~2 c2 , and compare the results to an equal width
infinite well. The first equation is for even eigenfunctions, the second for odd. Remember from
Quantum Mechanics that the ground state is even, the next state is odd, then follows an even
state, odd the next one and so on. Notice that the energy levels for the finite well are less
than the corresponding energies for the infinite well and that the difference becomes greater as
the energy nears the well depth. Besides, a finite well only supports a fixed number of bound
states. In our example this number is 5. And now the last question or how to turn a 5 into a
6. Keeping L unchanged modify the value of V0 so that the well has 6 states. What should be
the minimum value of the depth V0 for this to happen?
Here are some useful numbers for your calculations: me = 0.511 × 106 eV/c2 , ~ = 6.58 ×
10−16 eV s, c = 3 × 108 m s−1 , 1 Å = 10−10 m. Use a good book of Quantum Mechanics if
you need particular formulae. Otherwise you might want to deduce them, what is very good
too! If your numbers are correct they shall be similar to those in Table 2.
Nota: La anchura del pozo es del orden del Å y las energı́as del orden del eV (da igual si
uno o cincuenta o cien) lo quiere decir que nuestro electrón se mueve en un átomo porque
empleamos unidades caracterı́sticas de átomos y no de núcleos o partı́culas elementales. Digo
esto porque cantidades como me c2 V0 L2 /2~2 c2 que necesitamos para resolver nuestro problema
son cosas razonables, 4, 25, 43, 60 . . . no 10−10 . Si saliera esto último tendrı́amos que abrir unos
ojos como platos de sorpresa. Si usted no sabe esto es porque está poco familiarizado con los
números de Fı́sica y sus unidades. Hacerlo adecuadamente lleva tiempo aunque parezca que
sólo es substituir.
Energy levels
Table 2:
Infinite well energy (eV)
Finite well energy (eV)
1
2
3
4
5
6
1.50523
6.02092
13.54708
24.08370
37.63077
54.18831
1.12365
4.46467
9.91361
17.17568
24.79090
none
19. • [From a book to be uncovered later] Write a computer program to calculate the first ten
P
1
roots of tan x = x. Note: If λ1 , λ2 , . . . are all positive roots of this equation, then ∞
n=1 2 =
λn
tralará − tralará. Check this with Maple.
[Primero calcule lo que es tralará-tralará como hice yo en clase (a mano, como Euler, con su
serie). Cuando lo haya calculado y haya encontrado las 10 raı́ces pedidas podrá comprobar si
sus números cumplen la relación anterior.]
20. • Solve the system x4 + y 4 − 67 = 0, x3 − 3xy 2 + 35 = 0 near x = 2., y = 3.. Note: Be careful
and give several input points. The plot here (the magnified plot) is important.
21. • Choose two of the three following algorithms, iterative method, Newton-Raphson, steepest
descent (no tiene usted por qué saber los tres si no se han explicado en clase, pero dos sı́ que
sabe usted utilizar) to find a solution of
x = 0.7 sin x + 0.2 cos y,
y = 0.7 cos x − 0.2 sin y
near (0.5, 0.5)
NUMERICAL INTEGRATION OR QUADRATURE
22. [Experimental Mathematics] Simpon formula is exact (not an approximation) if one integrates
any
polynomial. Check it with the following two examples: i) By hand. Calculate
R 4 cubic
3
1 dx x with the primitive and with Simpson formula, x1 = 1, x2 = 5/2, x3 = 4. Both results
3
agree, 63 . ii) With Maple. Calculate
4
Z 7
dx 5 + ζ(5)x2 + 15x3 ,
log 2
with the same two methods, now x1 = log 2, x3 = 7 and x2 the middle point of the previous
two.
1
343
ζ(5) − ζ(5)(log 2)3 . La constante ζ(5) es la Zeta de Riemann en el
Result: 35 − 5 log 2 +
3
3
5.
23. • With the express straightforward method explained in the lectures (invented term, if you can
say ‘método de Newton-Raspón’ I can say this too) derive the five-point Newton-Cotes formula
(known as Bode’s rule but this is a typo as some authors point and should be called Boole’s
rule instead), that again benefits from a cancellation.
Calculate the explicit numerical coefficient of the error with the same method. Check
your answer (not copy from!) with, for example, http://mathworld.wolfram.com/NewtonCotesFormulas.html
24. [Ex Feb2012] a) Determinar las constantes a, b, c tal que la regla de cuadratura
Z
1
−1
f (x) dx ≈ af (−1) + af (1) + bf (−c) + bf (c)
sea exacta para polinomios del mayor grado posible. Diga claramente cuál es el grado máximo.
b) Usar la regla para aproximar la siguiente integral (con a, b, c los valores calculados en a),
por supuesto)
Z 4 √
e x dx.
0
¿Sabrı́a usted calcular a mano el valor exacto? (esto ya no se pedı́a en el examen, pero sale
fácilmente. Si lo sabe, bien).
Solución a a): The precision of the rule is 5 (se llama ası́, precisión, vale hasta orden 5, para
6 ya no. De haber escrito un error con derivadas en la regla –que para cuadraturas de Gauss
no he explicado ni pido– el error irı́a con una derivada sexta evaluada en algún punto del
intervalo considerado porque la derivada sexta de un polinomio de orden 5 es cero.)
25. • Sabiendo que la fórmula de cuadratura gaussiana a 3-puntos dada por
r !
r !
Z 1
5
3
3
5
8
f (x) dx ≈ f −
+ f (0) + f
9
5
9
9
5
−1
es exacta para polinomios de hasta quinto orden, cinco incluido, calcule, como hice yo en
clase, el error. Si su cálculo es correcto habrá obtenido lo que predice la fórmula del libro
Numerical Methods and Software by Kahaner, D et al,
(b − a)2n+1 (n!)4 (2n)
f
(ξ),
(2n + 1)[(2n)!]3
NÚMEROS PSEUDO-ALEATORIOS
26. Usando unas tablas de números aleatorios sortear 10 variables (claramente en problemas de
verdad se preparan muchas más, 10 es sólo para el ejemplo) con la distribución:
3
4
.
0.58
0.42
27. Here are 4-digit numbers generated with the middle square method proposed by J. von Neumann in the 1940’s. The starting point has been 3567. Observe that the sequence enters in a
cycle very soon.
3567,
3059,
8064,
8100,
7234, 3307, 9362, 6470, 8609, 1148, 3179, 1060, 1236, 5276, 8361, 9063, 1379, 9016, 2882,
3574, 7734, 8147, 3736, 9576, 6997, 9580, 7764, 2796, 8176, 8469, 7239, 4031, 2489, 1951,
280, 784, 6146, 7733, 7992, 8720, 384, 1474, 1726, 9790, 8441, 2504, 2700, 2900, 4100,
6100, 2100, 4100
28. • [Knuth, pag 7] A mano. What number follows 1010101010 in the middle square method?
Sol: 3040504030.
29. Determine all primitive roots for p = 11. Sol: 2, 6, 7, 8
30. • [Examen Feb2012] (Con calculadora o a mano, de ambas maneras sale) Sea el generador de
congruencias lineales
xi+1 = 29 xi mod 32.
a) Utilizando un teorema visto en clase determinar si tiene perı́odo máximo. b) Tomando
como semilla 7, ¿cuál es el perı́odo? ¿Y tomando como semilla 15? ¿Y tomando un 4? ¿Y
si la semilla es 6? A la vista de lo obtenido en estas preguntas, ¿depende el perı́odo de este
generador de que la semilla elegida sea par o impar? c) Con el resultado de los apartados a) y b),
¿podrı́a enunciar una regla general acerca del perı́odo máximo de generadores multiplicativos
con módulo m = 2k ?
Sol: a) No. 32 is not prime. Besides 29 is not a primitive root of 32 b) 8. 8. 2. 4. Sı́, depende.
c) The conclusion is that the maximum period is m/4
31. • i) Determine 24n mod 31 for n = 1, . . . 30. Find the smallest n for which the mod operation’s
result is 1. Is 24 a primitive root of 31?
ii) Compute the period of the following generator: xn = 13 xn−1 mod 2311
32. Consider the lcg with (a, c, m) = (21, 3, 100). By Theorem 1 it has full period 100. Plotting all
points of the form (xi , xi+1 ) in a 2D picture check for serial correlations. (We will discover that
all points line on 9 parallel lines with slope 1, and also will identify other lines of slope −4).
6, 29, 12, 55, 58, 21, 44, 27, 70, 73, 36, 59, 42, 85, 88, 51, 74, 57, 0, 3, 66, 89, 72, 15, 18, 81, 4,
87, 30, 33, 96, 19, 2, 45, 48, 11, 34, 17, 60, 63, 26, 49, 32, 75, 78, 41, 64, 47, 90, 93, 56, 79, 62,
5, 8, 71, 94, 77, 20, 23, 86, 9, 92, 35, 38, 1, 24, 7, 50, 53, 16, 39, 22, 65, 68, 31, 54, 37, 80, 83,
46, 69, 52, 95, 98, 61, 84, 67, 10, 13, 76, 99, 82, 25, 28, 91, 14, 97, 40, 43, 6, 29, 12
33. The RANDU generator was widely used on IBM 360/370 machines. Defined by the choice
(a, c, m) = (216 + 3, 0, 231 ), it had very bad random properties. While the results from RANDU
plotted in a 1D distribution looked okay, and still looked okay in a 2D distribution, in a 3D
had serious problem when observed at the right angle!
34. Generators of pseudo-random numbers that you can use safely:
a) The Minimal Standard lcg defined by the choice (a, c, m) = (75 , 0, 231 − 1). The number
231 − 1 = 2147483647 is a Mersenne prime
b) The lcg method used in Maple<Maple 10 mathematical software (a, c, m) = (427419669081, 0, 1012 −
11). Observe that 1012 − 11 = 999999999989 is the largest prime number of twelve digits.
Both a) and b) give quite satisfactory results as generatos of random numbers, though their
periods are short.
Ambos los puede usar para los cálculos que vamos a hacer en clase. De ninguna manera puede utilizar usted
un generador inferior al Minimal Standard. Si elige usted otro generador, dı́game, por favor, la referencia de
donde lo ha tomado y los test que ha pasado. Inventados no valen. Si no me va a dar esa información, use uno
de estos dos. O los nuevos de ahora de Maple (Mersenne Twister) que según dice ‘help’ son magnı́ficos
35. • Con Maple. Sea la siguiente secuencia de Fibonacci,
xn+1 = (xn + xn−1 ) mod m.
Calcular: (i) el perı́odo de la secuencia cuando m = 10. El perı́odo no depende (aquı́i) de la
semilla elegida, ya lo sabéis, pero para que vuestros x1 , x2 , . . . coincidan con los mı́os tomad
como semilla x−1 = 1 y x0 = 4. Ası́ pues aseguraos de que x22 = 9 y x27 = 2. (ii) Con la
elección de la semilla indicada en (i), ¿Cuánto son x100 , x276 y x340 ? (iii) Si se disponen los
puntos generados en un espacio tridimensional, se observan dos planos (sólo dos). Encontrar
las ecuaciónes de dichos planos. Nota: Este generador, con otros m’s por supuesto, fue considerado al principio de los años 1950s y habitualmente tiene un perı́odo superior a m.
36. • [Para hacer en el lab conmigo]. Con Maple. He generado varios números aleatorios con un
generador de congruencias lineales mixto, o sea, de la forma
xn = (axn−1 + c) mod m,
pero en un descuido he borrado el programa y ahora no sé cuáles eran los parámetros a, c, m del
generador. Afortunadamente recuerdo que los primeros números obtenidos eran: 1486584891,
2502414592, 3645611265, 2122211086, 245917623, 4173278796 y 1402184157. Con estos datos
(creo que incluso sobran) calcular a, c y m.
Nota: Esta es la razón por la que el método de congruencias lineales no se emplea en encriptación: porque se
adivina la clave a, c y m fácilmente.
MÉTODO DE MONTE CARLO
RR
37. Usando técnicas de Monte Carlo evaluar el número π mediante la integral
σ dxdy, donde σ
es el cı́rculo de radio unidad, o sea x2 + y 2 ≤ 1. Para calcular esta integral encerrar el cı́rculo
en un cuadrado de lado 2 y generar una secuencia uniforme de números pseudo-aleatorios
(xi , yi ), i = 1, . . . N en [−1, 1]. El valor de π vendrá dado por 4n/N , siendo n el número de
puntos que han caido dentro del cı́rculo. Incrementar N hasta conseguir π con tres cifras
significativas (lo cual no es mucho pedir!). Escribir los errores.
Las técnicas de Monte Carlo no se usan para calcular aproximaciones de π porque desde los tiempos de Newton
se conocen métodos analı́ticos que hacen el trabajo mucho mejor. Por favor, no tome este ejercicio más que
como un ejemplo ilustrativo que viene en todos los libros de iniciación a MC. Distinto es el caso de cos x2 que
aparece en muchos problemas de la √
Óptica. No se conoce la integral de esta función en terminos de funciones
R π/2
dx cos x2 hay que tirar de aproximaciones.
elementales, ası́ que para calcular 0
38. [Experimento con ordenador] Para entender el Teorema Central del Lı́mite de la Teorı́a de
Probabilidades o que la suma de un número grande de variables aleatorias independientes
preparadas de la misma forma se aproxima muy exactamente a una distribución gaussiana, haga
el siguiente experimento con Maple: 1) Genere N = 1000 variables distribuidas uniformemente
ente 0 y 1 con un buen método de congruencias lineales. 2) Sume las 10 primeras variables y
guarde el resultado, sume las siguientes 10 y guarde, ası́ hasta el final. 3) Pinte estas nuevas
variables (llamémoslas y) en un histograma como hicimos en clase. La forma del histograma
ya no es la que corresponde a una distribución uniforme (recuerde que ésta es casi horizontal,
con todas las barras de altura parecida), ahora tiene otro perfil, ¿lo ve? 4) Como Maple puede
superponer dibujos con display ponga juntos en el mismo frame el anterior
p histograma y el
dibujo de una distribución normal de media 5 y de desviación standard 5/6. Son exactos!
(bueno, casi). 5) Comentario: recuerde que no hace falta que las variables originales sean
uniformes. Usted podrı́a haberlo hecho el experimento con variables entre 0 y 1, por ejemplo,
preparadas con una densidad de probabilidad p(x) = p+2qx+3rx2 (p, q, r constantes positivas
tal que p + q + r = 1) y también habrı́a salido una Gaussiana pero de media a y de desviación
standard σ. • Calcule a y σ con Maple o a mano.
Por el mismo precio uno puede preguntarse ¿será también una distribución gaussiana el producto de dos variables
uniformes entre 0 y 1? Pruebe a ver qué sale dibujando el histograma. Desde luego no es una gaussiana. En
este caso creo que el histograma se aproxima muy bien por la densidad de probabilidad − log x.
Para terminar, de la referencia de Glen, Leemis, y Drew, Computing the Distribution of the Product of Two
Continuous Random Variables, en Computational Statistics and Data Analysis, 44 (2004) 451-464, he copiado
lo siguiente: el producto de dos distribuciones uniformes, una entre 1 y 2 y la otra ente 3 y 4 tiene como
densidad de probabilidad log x − log 3 si x (x denota el producto) está entre 3 y 4, log 4 − log 3 si está entre 4 y
6 y 3 log 2 − log x si está entre 6 y 8. Ver que esto es ası́ dibujando el histograma en el mismo frame que esta
distribución (no hay que calcular nada, sólo dibujar y superponer dibujos con Maple). Exactos!
39. Con Maple. Seleccione dos puntos aleatorios sobre la circunferencia unidad. ¿Dónde es de
esperar que caiga el centro de gravedad de esos dos puntos? Haga lo mismo con tres y cuatro
puntos tirados al azar.
Ayuda: Si considera dos puntos las coordenadas del c.d.g. serán
x = (cos θ1 + cos θ2 )/2, y = (sin θ1 + sin θ2 )/2,
p
siendo la coordenada radial r = x2 + y 2 . No hace falta decir que la coordenada angular estará
uniformemente distribuida pues cualquier posición angular será tan probable como cualquier
otra. Vamos con la coordenada radial que es más interesante. Para ver cómo se distribuye
ésta tire los dos puntos sobre la circunferencia unidad (lo puede hacer con numeros aleatorios
distribuidos uniformemente ente 0 y 2π y luego les calcula el seno y el coseno). Calcule r. Pinte
un histograma con la distribución de r. La forma del histograma será p(r): la densidad de
probabilidad de que al medir el cdg se obtenga un valor entre r y r + dr. Se atreve a aproximar
p(r) analı́ticamente (aunque sea a ojo)? (yo sé calcular p(r) exactactamente en este caso, es
fácil, pero si se trata de tres, cuatro puntos ya la cosa cambia... saco histograma, algún valor
medio (exacto) y poco más).
40. [Generating numbers that fit a given probability density] Use a uniformly distributed random
variable in [0, 1) to obtain N = 1000 real numbers u from −∞ to ∞ with the probability
density
1
,
p(u) =
2 cosh π2u
and answer the following questions:
i) The numbers are mainly concentrated in a finite interval [−a, a] around u = 0. Find a
numerical estimate of a.
1
ii) Calculate the mean value of 2
. Could be this value an estimate of log 2?
u +1
This is part of a result obtained by Hulthén in 1938 corcerning the ground state of an antiferromagnetic s = 1/2
XXX-Heisenberg spin chain. Yo sólo lo he reformulado en términos de variables aleatorias para convertirlo en
un ejercicio académico.
PARA ENTREGAR CUANDO YO LOS PIDA (pedidos el 1 de Febrero de 2012)
41. • Con Maple. Sea Ω la región sólida limitada superiormente por el cilindro parabólico z = 4−y 2
e inferiormente por el paraboloide elı́ptico z = x2 + 3y 2 . ¿Puede pintar Ω con Maple? Calcule
el volumen de Ω. Hágalo de dos maneras: analı́ticamente -si sabe- o en su defecto pidiéndoselo
a Maple, y por el método de Monte Carlo (utilice un generador de números aleatorios bueno,
el que usted quiera pero bueno). En este último caso tire N = 100, 1000 y 10000 puntos. ¿Con
N = 10000 se obtienen tres cifras significativas del volumen pedido? Haga cálculo de errores.
42. • Con Maple. Calcular por Monte Carlo una aproximación–con la estimación del error–al
valor de la integral
Z 1Z 1Z 1Z 1Z 1Z 1
dx dy dz du dv dw
1
+
x
+y+z+u+v+w
0
0
0
0
0
0
Calcular también con Maple su valor exacto.
NOTAS QUE LEO O RECUERDO Y SON INTERESANTES
– The linear congruent method is also known as power residue method. It was proposed by
D.H. Lehmer in 1948.
– For multiplicative lcg with modulus m = 2k the maximum possible period is 2k−2 (i.e., m/4).
The seed should be odd.
Esto se ve con el ejemplo xi+1 = (29 xi ) mod 256. El perı́odo es 64, y es lo mejor que
podemos obtener porque cambiando 29 por, digamos, 31 la cosa va aún peor: el perı́odo se
queda en 8 solamente. Y esto si la semilla es impar. De empezar con una semilla par en
xi+1 = (29 xi ) mod 256, por ejemplo un 4, el perı́odo es sólo 16.
– Let p be a prime number. Definition: When 2p − 1 is prime it is said to be a Mersenne prime.
It is possible to omit that p is prime. Why? Because 2p − 1 is prime only if p is prime. It is a
theorem and it is easy to prove. A non prime number is called a composite number
– What are primitive roots? Let p be a prime. Then b is a primitive root for p if the powers of b,
1, b, b2 , b3 , . . . include all of the residue classes mod p (except 0). Since there are p − 1 residue
classes mod p (not counting 0), that means the the first p − 1 powers of b have to be different
mod p. We have noticed that the powers of b form a repeating cycle, and that cycle cannot be
longer than p − 1 (because of Fermat’s Little Theorem). So, b is a primitive root if the cycle is
as long as it can possibly be.
Example: If p = 7, then 3 is a primitive root for p because the powers of 3 are 1, 3, 2, 6, 4, 5–that
is, every number mod 7 occurs except 0. But 2 is not a primitive root because the powers of
2 are 1, 2, 4, 1, 2, 4, 1, 2, 4 . . . missing several values.
Another example: If p = 13, then 2 is a primitive root because the powers of 2 are
1, 2, 4, 8, 3, 6, 12, 11, 9, 5, 10, 7–which is all of the classes mod 13 except 0. There are other
primitive roots for 13.
Theorem: If p is a prime, then there is a primitive root for p. (In fact, if p is a prime and
p > 2, there are always at least two primitive roots, and sometimes many more.)
How to find a primitive root for p? Just try possibilities, starting with 2, 3, . . ., until you find
one that works.
– Maple también calcula raı́ces primitivas. Package: with(numtheory), comands ‘order’ or ‘primroot’ –lo que no exime, en este curso, de hacerlas a mano cuando se pueda, ni de emplear un
programa Maple sencillo hecho por cada uno de nosotros cuando no se pueda a mano.
– La probabilidad de que dos enteros m y n tomados al azar sean relativamente primos (también
se dice coprimos y se escribe (m, n) = 1) es
P ((m, n) = 1) =
6
1
= 2 = 0.607927 . . . ,
ζ(2)
π
donde ζ es la función Zeta de Riemann.
– George Marsaglia wrote the paper ”Random numbers fall mainly in the planes”, Natl. Acad.
Sci. Prec. 61 (1968), 25-28. The paper shows a defect inherent in all linear congruential
methods used to generate random numbers. It assumes a strong familiarity with Abstract
Algebra and Linear Algebra.
An excellent test of random sequences is DIEHARD, maintained by George Marsaglia in
http://stat.fsu.edu/∼ geo The page has both executables and source code.
– Chi-square distribution, Chi-square test... (it reads ”kai-square”). Los matemáticos españoles
puede que digan ji-escuer, pero no lo sé porque sólo se lo he oı́do a uno.
– Normal deviates: Random numbers with the normal distribution.
– El Teorema Fundamental del Algebra lo demostró Gauss en 1799.
– ‘One must always invert’, Carl G. J. Jacobi, 1804-1851.
– “Toda labor de investigación para ser fecunda, exige una jornada mı́nima de ocho horas”, Julio
Rey Pastor, 1888-1962.
– Richardson interpolation is described in the book of Press et al. as a process to turn lead into
gold. Tela marinera!
– Mecánica Cuántica: En los cálculos analı́ticos de los coeficientes de reflexión y transmisión de
una barrera, siempre se calcula el de trasmisión. Simplemente porque es más facil de calcular.
Por eso es el que tabulan los libros.
#####################################################
####### April 2012
######################################################
Metodo de Newton para resolver f(x)=0
Input (o lo que usted debe dar al programa): f(x), fp(x), x0, numero de iteraciones
N (aqui no lo
he llamdo N, he puesto 10 directamente), tolerance (aqui 10^(-6), puede
usted cambiarlo).
Comentarios:
1-Hay casi un cero de f(x) en [-3,-2], pero si uno se acerca se ve que es mentira,
no lo hay.
Se ve con plot.
2-Yo he calculado fp(x), la derivada de f(x), con diff(f(x),x); y luego definido esta
copiando con el raton.
3- El punto inicial x0=-100. es una mala eleccion, pero converge lo mismo... al
cabo de muchas
iteraciones (26), convergencia no cuadratica, pero convergencia al fin y al cabo. Y
si se empieza por
x0=5+I*1.5 (quien dice que no se pueden usar complejos?? Se usan igual, faltaria
mas) tarda 7 iteraciones.
restart: with(plots):
f:=x->x^3+4*x^2-10: fp:=x->3*x^2+8*x:
plot(f(x),x=-4..2);
x0:=evalf(5+I*1.5): #good choice: 4 iterations
#x0:=evalf(-1.5): #bad choice: 61 iterations. Worse than -100
diff(f(x),x);
n:='n':
for n from 1 to 10 do
x1:=x0-f(x0)/fp(x0):
if abs(x1-x0)<10^(-6) then break else x0:=x1
end if;
end do;
n;
10
5
0
x
1
2
7
################################################################
##############
Newton compared with secant to solve f(x)=0
Same exercise with Newton and Secant methods
######## Newton
restart:
f:=x->x^3+4*x^2-10:
diff(f(x),x);
fp:=x->3*x^2+8*x:
x0:=evalf(1): #good choice of the starting point
n:='n':
for n from 1 to 15 do
x1:=x0-f(x0)/fp(x0):
if abs(x1-x0)<10^(-6) then break else x0:=x1
end if;
end do;
n;
##### Secant
x0:=1: x1:=2:
n:='n':
for n from 1 to 10 do
x2:=evalf(x1-f(x1)*(x1-x0)/(f(x1)-f(x0))): #f(x2);
if (abs(x2-x1))<10^(-6) then break else x0:=x1: x1:=x2:
end if:
end do;
n;
(1)
5
6
Digits:=20: fsolve(f(x),x); ### Lo que dice Maple
1.3652300134140968458
(2)
(3)
################################################################
###############
Un metodo iterativo. Este no converge. Input: F(x), (no hace falta derivada), x0,
numero de iteraciones (7),
y tolerancia (10^(-6))
restart:
F:=x->x^3+4*x^2+x-10; x0:=1.5:
n:='n':
for n from 1 to 7 do
x1:=F(x0):
if abs(x1-x0)<10^(-6) then break else x0:=x1
end if:
end do;
n;
8
(4)
################################################################
###############
Tres+dos dibujos en el mismo frame. Cinco en total. Las rectas negras quedan a
45 grados con la horizontal. Se cortan en la solucion F1(x)=F3(x)=F5(x)=0.
Si se estudia desde el punto de vista de tres esquemas iterativos F1(x)=x, F3(x)=x,
F5(x)=x, se tiene que: rojo diverge, azul converge... lentamente pero converge y
verde converge rapido (claro, es Newton, la estrella)
restart:
F1:=x->x^3+4*x^2+x-10;
F3:=x->sqrt(10-x^3)/2:
F5:=x->x-(x^3+4*x^2-10)/(3*x^2+8*x);
plot([F1(x),F3(x),F5(x),x,1.365230013-(x-1.365230013)],
x=-4.5..3.1,y=-3..4,discont=true,color=[red,blue,green,black,
black]);
4
3
y
2
1
0
1
2
3
x
################################################################
#
Newton en dos (o mas) dimensiones. Esto ya es otra cosa... aqui ya llegan pocos
packages.
Los hay, pero siempre resuelven otro problema distinto al que uno tiene.
La ultima sentencia es un teorema (es broma).
Input: f1,f2; matriz Jacobiana, su inversa, x0, y0, numero de iteraciones (15)
tolerancia (10^(-9)):
Eso quiere decir que del resultado final solo podemos decir que POR LO MENOS 9
cifras decimales
son exactas. Ojo que es un Newton y va que vuela. Si tarda 15, 20 iteraciones... es
que algo pasa.
Es tarea nuestra saber el que.
Si el input es complejo x0:=0.9+11*I: y0:=0.7: le cuesta 26 iteraciones. Se cambiua
15 por 50 y encima sobran.
restart: with(plots): with(LinearAlgebra): with(VectorCalculus)
:
f1:=(x,y)->sin(x+y)-x:
f2:=(x,y)->cos(x-y)-y:
##### Maple sabe resolverlo el solito
fsolve({f1,f2});
### o tb
fsolve({f1(x,y),f2(x,y)});
(5)
##### Este lo sabe resolver maple (hay solo una solucion y te
la da).
### Como hubiera mas de una solucion ibamos listos para darnos
Maple
#### la que nosotros buscamos... tendriamos que ir diciendo,
avoid tal solution
#### avoid also that solution....
implicitplot([x=sin(x+y),y=cos(x-y)],x=-2..2,y=-1.5..1.5,color=
[red,blue]);
1
y
0
1
x
2
##################################### Para ver que funciona
### El jacobiano (una matriz)
Jacobian([f1(x,y),f2(x,y)],[x,y]);
#### En el punto (2,5) y la llamo J. Su inversa en ese punto
J:=Jacobian([f1(x,y),f2(x,y)],[x,y]=[2.,5.]);
Jinverse:=MatrixInverse(J);
(6)
x0:=0.9+0*I: y0:=0.7:
n:='n':
for n from 1 to 15 do
J:=Jacobian([f1(x,y),f2(x,y)],[x,y]=[x0,y0]);
Jinverse:=MatrixInverse(J);
v:=Vector(1..2,[x0, y0])-Jinverse.Vector(1..2, [f1(x0,y0),f2
(x0,y0)]);
if (abs(v[1]-x0)<10^(-9)) and (abs(v[2]-y0)<10^(-9)) then break
else
x0:=v[1]: y0:=v[2]:
end if:
end do; n;
5
(7)
################################################################
###############
Generando numeros aleatorios con el antiguo lcg method que tenia Maple en las
tripas
Input: N, x[1]. a, m fijados por los libros. Si se necesitanm entre [o,1) hay que
dividir cada x[n] por m
restart: with(Statistics): #### antigua (Maple9 o inferior).
###
with(plots):
N:=100: a:=427419669081: m:=10^12-11:
x[1]:=9574396327:
for i from 2 to N do
x[i]:=irem(a*x[i-1],m): #### generador de numeros aleatorios:
lo tiene Maple somewhere
end do:
seq(x[i],i=1..10);
(8)
i:='i': sum(x[i],i=1..60);
i:='i': sum((x[i])^2,i=1..N)/N; evalf(%);
28171801079590
6879970836033511958788189
25
(9)
################################################################
###############
Generando numeros aleatorios con el nuevo generador de Maple en with
(RandomTools[MersenneTwister]):
Input: N. los numeros estan entre [0,1) uniformemente distribuidos.
restart: with(RandomTools[MersenneTwister]):
N:=1000:
for i from 1 to N do
x[i]:=GenerateFloat();
end do:
seq(x[i],i=1..15);
(10)
Esto dice Help de el. Me parece muy bien. Sin inconveniente en usarlo
The RandomTools[MersenneTwister] subpackage contains functions for
creating pseudo-random number generators using the Mersenne Twister
algorithm. This algorithm has the following properties:
-- the command outputs a pseudo-random float uniformly distributed in [0,1),
-- period length of 2^19937-1
-- 623-dimensional equidistribution property
-- passed various tests, including the diehard test by G. Marsaglia
and the load test by O.Hellekalek and S. Wegenkittl
-- very fast
################################################################
###############
Input: N. Los numeros son enteros entre [0,
) uniformemente
distribuidos.
restart:
N:=1000:
with(RandomTools[MersenneTwister]):
for i from 1 to N do
x[i]:=GenerateInteger();
end do:
seq(x[i],i=1..15);
(11)
################################################################
#############33
################################################################
#############
### Number 5. RANDU
### Oct 13th 2011
restart:
with(Statistics): with(plots):
2^31: N:=5000: m:=2^31: N/30.;
x:=array(1..N):
x[1]:=314156:
n:='n':
for n from 1 to N-1 do
x[n+1]:=irem((2^16+3)*x[n],2^31):
end do:
l:=[seq(evalf(x[i]/m),i=1..N)]:
166.6666666
Histogram(l,color=cyan,frequencyscale=absolute);
#### si no se pone frequencyscale=absolute te lo acopla a un
area 1
180
160
140
120
100
80
60
40
20
0
0
i:='i':
points:={seq([x[i],x[i+1]],i=1..N-10)}:
pointplot(points,color=black);
(12)
0
0
i:='i': points:={seq([x[i],x[i+1],x[i+2]],i=1..N-10)}:
pointplot3d(points,color=blue);
393225*1+65539*(-6)+C=0: isolve(%);
################################################################
#########################
#### Oct 2011
#### Number 8 Calculate Pi with Monte Carlo method
restart:
a:=427419669081: m:=10^12-11: N:=100:
u[1]:=2718281828: v[1]:=314159261:
i:='i':
for i from 1 to N-1 do
u[i+1]:=irem(a*u[i],m):
v[i+1]:=irem(a*v[i],m):
end do:
i:='i': lu:=seq(u[i],i=1..N): lv:=seq(v[i],i=1..N):
i:='i':
for i from 1 to N do
x[i]:=-1.+2.*evalf(u[i]/m):
y[i]:=-1.+2.*evalf(v[i]/m):
end do:
seq(x[i],i=1..N):
i:='i':
for i from 1 to N do
if (x[i]^2+y[i]^2<=1.0) then f[i]:=1 else f[i]:=0
end if: end do:
seq(f[i],i=1..N):
i:='i':
n:=sum(f[i],i=1..N);
Vbox:=4: #### Abox en realidad, no importa
Pi_approx:=evalf(Vbox*n/N);
(13)
#### Alternativa (MEJOR QUE LO ANTERIOR AQUI: no se le fuerza a
Maple a recordar tanto numero)
n:=0:
for j from 1 to N do
if (x[j]^2+y[j]^2<=1.0) then n:=n+1
end if: end do:
n;
Pi_approx:=evalf(Vbox*n/N);
69
(14)
#### error as in Numerical Recipes (Press-Teukolsky book)
error_estimate:=evalf(Vbox*sqrt(n*(N-n)/N^3));
(15)
[Pi_approx-error_estimate,Pi_approx+error_estimate]; #con prob
del 68%
[Pi_approx-2*error_estimate,Pi_approx+2*error_estimate]; #95%
[Pi_approx-3*error_estimate,Pi_approx+3*error_estimate];
#99.730020% Lease: es casi imposible...
(16)
##### De donde salen esas probabilidades...
p:=x->exp(-(x-mu)^2/(2*sigma^2))/sigma/sqrt(2*Pi):
int(p(x),x=mu-3*sigma..mu+3*sigma); evalf(%);
0.9973002039
(17)
###### Observe that
valor_medio_de_las_f:=sum(f[i],i=1..N)/N; #### o sea n/N
valor_medio_de_las_fsquare:=sum((f[i])^2,i=1..N)/N; #### o sea
n/N
(18)
(valor_medio_de_las_fsquare-(valor_medio_de_las_f)^2)/N:
Vbox*sqrt(%): err:=evalf(%);
##### Coincide con error_estimate: claro, es lo mismo.
(19)
################################################################
##################3
#####################################################################
###################
##### Computer test: the sum of indep random variables prepared with no matter
##### what distribution
##### is normal (if the number of terms in the sum is large).
##### Here the number of terms
##### is 10 and the starting variables are uniformly distributed in [0,1)
##### Students; have to know how to get the Histogram (pink) (or they have to
##### construct one). The blue curve is maths, not random variables....
###############################
restart: with(Statistics): with(plots):
N:=100: #### modifiquese a voluntad: el dibujo saldra mejor
a:=427419669081: m:=10^(12)-11:
x[1]:=9574396327:
for i from 2 to N do
x[i]:=irem(a*x[i-1],m): #### generador de numeros alotorios: lo
tenia Maple somewhere
end do:
seq(x[i],i=1..20);
(20)
i:='i': sum(x[i],i=1..10);
i:='i': sum(x[i],i=11..20);
i:='i': sum(x[i],i=21..30);
3693138066594
5045283411549
4088851178890
(21)
##### Del input anterior...
i:='i': j:='j':
for j from 1 to N/10 do
y[j]:=sum(x[i]/m,i=10*j-9..10*j);
end do:
i:='i':
l:=[seq(evalf(y[i]),i=1..N/10)]:
#### Gaussian distribution
o:=subs(mu=5,sigma=sqrt(5/6),exp(-(x-mu)^2/(2*sigma^2))/(sigma*
sqrt(2*Pi)));
##### sin frequencyabsolute (asi la mete en un area igual a 1)
p:=Histogram(l,color=pink,title="que cosa mas bien"):
q:=plot(o,x=0..10,color=blue):
display({p, q});
que cosa mas bien
1
0
0
2
4
6
x
8
10

Documentos relacionados