\documentclass[11pt]{article}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{a4wide}
\usepackage[utf8x]{inputenc}
\usepackage{url}
\usepackage{times}
\usepackage{euler}
\def\set#1{{\def\tq{\;:\;}\left\{{#1}\right\}}}
\def\ZZ{\mathbb{Z}}
\thispagestyle{empty}
\pagestyle{empty}
\begin{document}
\sf
\centerline{Computación científica usando software libre}
\centerline{Lista de ejercicios 1. Entrega 30 de marzo}
\vspace{5ex}
\begin{enumerate}
\item \begin{enumerate}
      \item Hacer una lista de 5 programas de software libre que hayas
      usado.
      \item Para cada uno, nombrar un programa comercial
      correspondiente, si existe
      \item Listar algunas de las ventajas y desventajas del programa
      libre con respecto al programa comercial.
      \end{enumerate}
\item Usar Sage para calcular la cantidad de enteros positivos hasta
un millon que dejan resto 3 al dividir por 7 (sugerencia, dado $n$, el
resto de dividir entre 7 se obtiene usando \verb+n % 7+ en Python.)
\item Escribir una línea en Sage que tome por lo menos dos segundos en
evaluarse.
\item \begin{enumerate}
    \item Crear un ejemplo de una \emph{lista} de python.
    \item Crear un ejemplo de una \emph{tupla} de python.
    \item Crear un ejemplo de un \emph{diccionario} de python.
    \item Crear un ejemplo de una \emph{cadena} de python.
    \item Crear un ejemplo de un \emph{conjunto} de python.
    \end{enumerate}
\item Deteriminar cuáles de los siguientes objetos de Python
$a, b, c, d, e, f, g, h, i, j$ son \emph{inmutables}
(i.e. no pueden ser cambiados desde Python):
\begin{verbatim}
a = 'Hola, mundo!'
b = int(123456789)
c = 2/3
d = [1,2,3,4,5]
e = (1,2,3,4,5)
f = (1,2,3,4,[5])
g = {1:'a', 2:'b'}
h = set([1,2,3])
class i: pass
j = i()
\end{verbatim}
\item Considerar la implementación recursiva de la función factorial:
\begin{verbatim}
def factorial(n):
    if n <= 2: return n
    return n * factorial(n-1)
\end{verbatim}
\begin{enumerate}
\item
Probar que funciona para los primeros valores de $n$, y estudiar el
tiempo que demora en la práctica (sugerencia: utilizar la función
\verb+timeit+).
\item
¿Cuál es el mayor valor de $n$ para el que esta implementación
funciona? ¿Qué es lo que falla?
\end{enumerate}

\end{enumerate}

\newpage

\centerline{Computación científica usando software libre}
\centerline{Lista de ejercicios 2. Entrega 13 de abril}
\vspace{5ex}
\begin{enumerate}
\item
Encontrar un \emph{bug} en Sage. Intentar averiguar si el bug es
conocido.
\item Leer el ensayo \emph{Mathematica viene al CIMAT}:\\
    \url{http://sums.math.mcgill.ca/~jordi/rants/mathematica.html}
\item El código que sigue tiene un \emph{bug}. Intentar
\begin{verbatim}
def f(a, L=[]):
    L.append(a)
    return L

print f(1)
print f(2)
print f(3)
\end{verbatim}
Esto imprime
\begin{verbatim}
[1]
[1, 2]
[1, 2, 3]
\end{verbatim}
pero lo que queremos que imprima es
\begin{verbatim}
[1]
[2]
[3]
\end{verbatim}
Solucionar este problema. (Sugerencia: buscar la respuesta en el
tutorial de Python).
\item
Escribir una función rápida en Cython que determine si un entero
positivo (a lo sumo $2^{31}$) es una potencia perfecta de $3$.
Comparar la velocidad con la de una función de Python que haga lo
mismo.
\item
\begin{enumerate}
\item Crear una clase de python \verb+hlist+ que deriva de la clase
\verb+list+, pero agrega un nuevo método \verb+__hash__+:
\begin{verbatim}
    def __hash__(self):
        ???
\end{verbatim}
\item ¿Pueden crearse diccionarios con objetos de tipo \verb+hlist+ como
índices? Dar un ejemplo.
\item Si la respuesta en (b) es afirmativa, mostrar algo que
no está bien como resultado. Es decir, mostrar \emph{por qué} es una
mala idea definir un método hash para objetos mutables.
\end{enumerate}
\item Dar \emph{tres} ideas para proyectos que podrían interesarte
como posible proyecto para este curso.
\end{enumerate}

\newpage

\centerline{Computación científica usando software libre}
\centerline{Lista de ejercicios 3. Entrega 15 de mayo}
\vspace{5ex}
\begin{enumerate}

\item Dar un ejemplo que muestre que el ``cuerpo'' \verb+CC+ de
números complejos de $53$ bits de precisión \emph{no} es un cuerpo en
el sentido matemático estricto. Para esto, mostrar que por lo menos
uno de los axiomas de cuerpo fallan.

\item
    \begin{enumerate}
     \item Encontrar un número probablemente primo con exactamente 2009
     cifras decimales, utilizando el comando \verb+next_probable_prime+ de
     Sage. 
     \item Estimar (justificando) el tiempo que demoraría en Sage
     \emph{probar} que el primo probable de la parte anterior es
     efectivamente primo, utilizando el comando \verb+is_prime+.
    \end{enumerate}

\item Considerar la secuencia $p_1, p_2, \dotsc$, donde $p_1=2$,
$p_2=3$, $p_3=5$, etc. de todos los números primos $\leq 10^6$.
\begin{enumerate}
\item ¿Para cuantos $n$ se cumple $p_{n+1} = p_n + 2$?
\item ¿Para cuantos $n$ se cumple $p_{n+1} = p_n + 4$?
\item ¿Para cuantos $n$ se cumple $p_{n+1} = p_n + 6$?
\item Enunciar algunas conjeturas basadas en estos cálculos.
\end{enumerate}

\item
Crear la matriz $10\times 10$ cuyas entradas son los primeros 100 números
primos, i.e.
\[
A = 
\left(\begin{array}{rrrrrrrrrr}
2 & 3 & 5 & 7 & 11 & 13 & 17 & 19 & 23 & 29 \\
31 & 37 & 41 & 43 & 47 & 53 & 59 & 61 & 67 & 71 \\
73 & 79 & 83 & 89 & 97 & 101 & 103 & 107 & 109 & 113 \\
127 & 131 & 137 & 139 & 149 & 151 & 157 & 163 & 167 & 173 \\
179 & 181 & 191 & 193 & 197 & 199 & 211 & 223 & 227 & 229 \\
233 & 239 & 241 & 251 & 257 & 263 & 269 & 271 & 277 & 281 \\
283 & 293 & 307 & 311 & 313 & 317 & 331 & 337 & 347 & 349 \\
353 & 359 & 367 & 373 & 379 & 383 & 389 & 397 & 401 & 409 \\
419 & 421 & 431 & 433 & 439 & 443 & 449 & 457 & 461 & 463 \\
467 & 479 & 487 & 491 & 499 & 503 & 509 & 521 & 523 & 541
\end{array}\right)
\]
Sea $v$ el vector cuyas entradas son los primeros $10$ números primos.
    \begin{enumerate}
    \item ¿Cuál es el mínimo común múltiplo de los denominadores de
    las entradas del único vector $x$ con $Ax=v$?
    \item Repetir el experimento cambiando $10$ por $100$, es decir
    con $A$ una matriz de $100\times 100$.
    \end{enumerate}
\item
    \begin{enumerate}
    \item Calcular la suma $s$ de las potencias centésimas de los enteros
    positivos hasta $10^7$ (diez millones). Para la respuesta, dar
    solamente el número de cifras decimales de $s$.
    \item Evaluar la suma infinita $$ \sum_{i=1}^{\infty}
    \frac{1}{n^{100}}.$$
    \end{enumerate}

\end{enumerate}

\end{document}

