MAT281 - Laboratorio N°01¶
Objetivos del Laboratorio
- Implementar funciones en Python para resolver problemas matemáticos clásicos.
- Aplicar estructuras básicas como ciclos y condicionales en contextos numéricos.
- Comprender y programar conceptos como series, factoriales, divisores, primos y secuencias.
- Desarrollar pensamiento algorítmico y habilidades de resolución estructurada de problemas.
Problema 01 — Aproximando $\pi$ con una serie infinita¶
En los siglos XVII y XVIII, los matemáticos James Gregory y Gottfried Leibniz descubrieron una serie infinita que permite aproximar el valor de $\pi$. Esta serie, conocida como la serie de Gregory-Leibniz, se expresa como:
$$ \pi = 4 \sum_{k=1}^{\infty} \frac{(-1)^{k+1}}{2k - 1} = 4\left(1 - \frac{1}{3} + \frac{1}{5} - \frac{1}{7} + \cdots\right) $$
Esta fórmula converge lentamente, pero es útil para entender cómo se puede aproximar un número irracional como $\pi$ mediante una suma finita.
Tu tarea
Implementa una función llamada calcular_pi(n)
que reciba como argumento un número entero $n$ e importe los primeros $n$ términos de la serie para entregar una aproximación del valor de $\pi$.
Ejemplos de uso
calcular_pi(3) # Resultado esperado: 3.466666...
calcular_pi(1000) # Resultado esperado: ~3.140592...
# FIXME
Problema 02 — Aproximando $e$ con la serie de Euler¶
El número $e$ es una constante matemática fundamental, al igual que $\pi$. Se encuentra en el corazón del cálculo, el crecimiento exponencial y muchas aplicaciones científicas. Uno de sus grandes impulsores fue Leonhard Euler, quien en 1748 publicó su obra Introductio in analysin infinitorum, donde describió formalmente la siguiente serie infinita para aproximar su valor:
$$ e = \sum_{k=0}^{\infty} \frac{1}{k!} = 1 + \frac{1}{1!} + \frac{1}{2!} + \frac{1}{3!} + \cdots $$
Esta fórmula permite calcular $e$ sumando una cantidad finita de términos.
Tu tarea
Parte A: Define una función llamada
factorial(n)
que reciba un número natural $n$ y retorne el valor de su factorial $n! = 1 \cdot 2 \cdot \ldots \cdot n$.Parte B: Usando esa función, crea otra función llamada
calcular_e(n)
que reciba un número entero $n$ y devuelva una aproximación del número $e$ sumando los primeros $n$ términos de la serie.
Ejemplos de uso
factorial(3) # Resultado esperado: 6
factorial(5) # Resultado esperado: 120
calcular_e(3) # Resultado esperado: 2.666...
calcular_e(1000) # Resultado esperado: ~2.718281828...
# FIXME
Problema 03 — Números amigos y suma de divisores propios¶
Dado un número natural $n$, se define $\sigma(n)$ como la suma de sus divisores propios, es decir, aquellos números positivos menores que $n$ que lo dividen exactamente.
Dos números naturales $n_1$ y $n_2$ se consideran números amigos si cumplen la siguiente condición:
$$ \sigma(n_1) = n_2 \quad \text{y} \quad \sigma(n_2) = n_1 $$
Un ejemplo clásico de números amigos es el par $220$ y $284$:
- Los divisores propios de $220$ son: $1, 2, 4, 5, 10, 11, 20, 22, 44, 55, 110$, y su suma es $284$.
- Los divisores propios de $284$ son: $1, 2, 4, 71, 142$, y su suma es $220$.
Tu tarea
Parte A: Define una función llamada
divisores_propios(n)
que reciba un número natural $n$ y retorne una lista con todos sus divisores propios.Parte B: Usando esa función, implementa una función llamada
amigos(n1, n2)
que retorneTrue
si los números son amigos yFalse
en caso contrario.
Ejemplos de uso
divisores_propios(220) # Resultado esperado: [1, 2, 4, 5, 10, 11, 20, 22, 44, 55, 110]
divisores_propios(284) # Resultado esperado: [1, 2, 4, 71, 142]
amigos(220, 284) # Resultado esperado: True
amigos(6, 5) # Resultado esperado: False
# FIXME
Problema 04 — La conjetura de Collatz¶
La conjetura de Collatz, también conocida como conjetura $3n + 1$ o conjetura de Ulam, fue formulada por el matemático Lothar Collatz en 1937. A pesar de su sencillez, aún no ha sido demostrada ni refutada para todos los números naturales.
La conjetura propone la siguiente regla, aplicable a cualquier número entero positivo:
- Si el número es par, se divide por 2.
- Si el número es impar, se multiplica por 3 y se le suma 1.
Se repite esta operación con cada nuevo número obtenido. La conjetura afirma que, sin importar el número con el que se comience, eventualmente se alcanzará el número 1.
Tu tarea
Implementa una función llamada collatz(n)
que reciba como argumento un número natural positivo $n$ y retorne una lista con la secuencia de valores generados por la conjetura, hasta llegar a 1.
Ejemplo de uso
collatz(9)
# Resultado esperado:
# [9, 28, 14, 7, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1]
# FIXME
Problema 05 — La conjetura de Goldbach¶
La conjetura de Goldbach es uno de los problemas abiertos más antiguos y famosos de la teoría de números. Fue formulada por el matemático prusiano Christian Goldbach en una carta a Euler en 1742, y plantea lo siguiente:
Todo número par mayor que 2 puede escribirse como la suma de dos números primos.
A pesar de que esta conjetura ha sido verificada para una gran cantidad de números, aún no existe una demostración formal que la confirme para todos los casos posibles.
Tu tarea
Implementa una función llamada goldbach(n)
que reciba un número natural par mayor que 2 y retorne un par de números primos $n_1$ y $n_2$ tales que $n_1 + n_2 = n$.
Para lograrlo, se recomienda dividir el problema en tres partes:
Parte A: Define una función
es_primo(n)
que reciba un número natural $n$ y retorneTrue
si es primo, yFalse
en caso contrario.Parte B: Define una función
lista_de_primos(n)
que genere una lista con todos los números primos entre 2 y $n$ (inclusive si corresponde).Parte C: Utiliza la función anterior dentro de
goldbach(n)
para encontrar dos primos cuya suma sea igual a $n$. Puedes retornar el primer par que cumpla esta condición.
Ejemplos de uso
es_primo(3) # Resultado esperado: True
es_primo(4) # Resultado esperado: False
lista_de_primos(4) # Resultado esperado: [2, 3]
lista_de_primos(6) # Resultado esperado: [2, 3, 5]
lista_de_primos(8) # Resultado esperado: [2, 3, 5, 7]
goldbach(4) # Resultado esperado: (2, 2)
goldbach(6) # Resultado esperado: (3, 3)
goldbach(8) # Resultado esperado: (3, 5)
# FIXME