Beruflich Dokumente
Kultur Dokumente
Los nmeros combinatorios, mejor conocidos como coeficientes binomiales, provienen de dos mbitos. La primera de ellas es la combinatoria:
responde a cuntos conjuntos de k elementos distintos podemos
hacer si
tenemos n elementos. A este nmero se le denota por nk . Por otro lado,
aparecen en el desarrollo del binomio de Newton
!
n
X
n k nk
n
(x + y) =
x y
k
k =0
2. Existe frmulas recursivas para los coeficientes binomiales que podran usarse para calcularlos. En este caso, usamos que
!
!
!
n
n1
n1
=
+
k
k
k 1
con k0 = kk = 1 para cualquier k. Usa estas frmulas para escribir una funcin recursiva que calcule los coeficientes binomiales.
Sabras reprogramar el cdigo para evitar la recursin usando esta
frmula?
3. Supongamos que k > n k. La fraccin que define a nk permite
simplificar a
!
n
n(n 1) (k + 1)
=
(1)
k
(n k) 2 1
Usa esta simplificacin para escribir otro cdigo que calcule el coeficiente binomial.
4. Se puede reescribir (1) como
! Y
k
n
n +1i
.
=
i
k
i=1
Inspirados en este producto, pensamos que es posible escribir el siguiente cdigo
def binomial(n,k):
bin_coeff=1
for i in range(1,k+1):
# Running the integer numbers from 1 to k
bin_coeff*=(n+1-i)/i
return bin_coeff
Page 2
= time.time()
"hello"
time.time()
end - start
Page 3
lista que contenga todos los primos que divida a n repetidos segn su
multiplicidad.
La funcin de Euler o funcin indicatriz de Euler se define sobre los
nmeros naturales. Dado n, (n) es el nmero de enteros menores o iguales
a n que son coprimos1 a n.
9. Escribe una funcin que, dado n entero positivo, calcule (n) a partir
de la definicin. Usa para ello el algoritmo del mximo comn divisor
que aqu presentamos:
def gcd(a, b):
"""Calculate the Greatest Common Divisor of a and b.
Unless b==0, the result will have the same sign as b (so
that when b is divided by it, the result comes out
positive).
"""
while b:
a, b = b, a %b
return a
Page 4
entonces
(n) = (p1 1)p1k1 1 (p2 1)p2k2 1 (pr 1)prkr .
(2)
11. Dado un nmero entero n, escribe una funcin que te devuelva (n)
usando la frmula del problema anterior.
12. Tambin existe otra frmula:
(n) = n
Y
p|n
1
p
x n1 /2
si x n1 es par,
xn =
3x n1 + 1 si x n1 es impar.
Page 5
Page 6
n
Dados x y n, existe una forma de
aproximar x. Por ejemplo, se sabe
que los babilonios aproximaron 2 mediante el siguiente procedimiento:
comenzaban con un nmero, pongamos por ejemplo 2, y definimos la
sucesin de manera recursiva
2x n
x n2 2
x n+1 = x n
x n2 a
2x n
con x 0 = a.
17. Escribe una funcin en Python que calcule la raz cuadrada de un
nmero x dado. El problema es dar un test de parada, es decir, dar una
condicin para que el programa termine y d un resultado. En este
caso, puedes tomar que |x n x n+1 | sea menor que un nmero pequeo
(digamos 106 ) y, al ocurrir esto, la computadora te devuelve x n+1 .
Es posible generalizar este mtodo para calcular la raz k-sima de un
nmero a R. Slo hay que modificar la sucesin a
x n+1 = x n
x nk a
kx nk1
donde
x 0 = a, aunque se puede tomar uno ms cercano al valor aproximado n a.
18. Escribe una funcin anloga al anterior donde calcule la raz k-sima
de un nmero a. El test de parada seguira siendo el mismo.
Page 7