Prise en main: variables et boucles

Un ordinateur est beaucoup plus fort que vous pour répéter des tâches (boucles) et pour mémoriser exactement (variables, listes, etc.).

Boucles

Il y a des boucles dont on connait a priori la longueur: for. En Python la syntaxe est

for i in range(10):
    print i
Notez que

  • i est une variable (créée à la volée) c'est-à-dire une case de la mémoire réservée pour la valeur de i.
  • range(10) est la liste des entiers de $0$ à $9$ inclus
  • Les instructions à répéter à chaque tour de la boucle sont indentés(c'est-à-dire décalées vers la droite de trois ou quatre espaces, si possible obtenues en tapant Tab
Après avoir recopié le petit programme ci-dessus, affichez les 20 premiers carrés ($1$, $4$, $9$, $16$,...). Arrivez-vous à ne pas afficher $0$ en début de liste ?

Variables

Les variables ont un nom. On peut leur affecter une valeur puis utiliser cette valeur.

x=1.234567 crée la variable x et lui affecte la valeur réelle $1$. Utilisez cette variable pour calculer successivement $\cos(x)$, $\cos(2x)$, $\cos(3x)$

Calculons la somme des 100 premiers entiers:

somme=0
for i in range(100):
    somme=somme+i
print somme

Vous vous souvenez de la formule ? Vérifiez que votre programme ne s'est pas trompé.

Recopiez et modifiez le programme ci-dessus pour qu'il calcule la somme des $100$ premiers carrés.

Au fait Sage connait ces formules. Exécutez

var('k,n')
sum(k,k,1,n)
Vous reconnaissez la formule ? Remarquez que nous avons dû déclarer les variables k et n avec var().

Utilisez Sage pour découbvrir la formule $\displaystyle\sum_{k=1}^nk^2=\frac{n(n+1)(2n+1)}{6}$.

La constante d'Euler

Vous avez rencontré dans les cours d'Analyse, la constante d'Euler qui est définie par $$ \gamma=\lim_{n\to +\infty}\sum_{k=1}^n\frac 1k-\ln(n). $$ Fixez $n$ assez grand ($10$, $100$, $1000$, $10000$, etc.) et utilisez une boucle pour calculer la somme de la série harmonique. Attention on ne veut pas savoir que $1+1/2+1/3+\cdots+1/10=\frac{7381}{2520}$, mais nous voulons des valeurs réelles approchées (retournez à la feuille de calcul sur les nombres).

Est-ce que vos calculs vous permettent de deviner que la série harmonique diverge ? Est-ce que l'ordinateur est assez rapide pour mener ces calculs ? Illustrez vos réponses.

Comme précédemment pour $n$ assez grand calculez $\sum_{k=1}^n\frac 1k-\ln(n)$. Est-ce que vous pouvez deviner la valeur de $\gamma$ ?

Sage sait calculer beaucoup d'autres choses: en utilisant la fonction sum() calculez $\displaystyle\sum_{k=1}^{+\infty}\frac 1{k^2}$.