TP de Tableur, 18.10.2012


Je n'ai pas reçu beaucoup de vos comptes-rendus. J'attends encore, mais le temps presse.


Exercices

(Les solutions/commentaires seront là (peut-être).)

Terminez les exercices de la semaine dernière, et la création des graphiques en particulier. Si vous n'arrivez pas à compléter une série d'exercices, ceci n'est pas grave. Vous les avez vus, vous savez comment aborder le sujet (ou posez des questions concrètes). Quand le temps nous le permettra, nous y reviendrons.


Arithmétique / Logique (binaire)

  1. Addition binaire. Le fragment à droite montre l'addition binaire, bit par bit, de deux nombres binaires de 4 chiffres. La dernière ligne est le résultat, les lignes sont ajoutés, mais le "programme" ajoute également la retenue, et donc le débordement se propage à gauche.

    "Inventer" des formules permettant d'effectuer ce calcul. Vous pouvez utiliser d'autres cellules comme mémoire temporaire. L'exercice n'est pas très facile, la retenue peut se propager loin... Commencez par effectuer ces calculs (sur papier ou dans Calc) à la main, avant de coder des formules globales. Utilisez (par ex.) la division par 2, la fonction MOD, l'arrondi vers le bas (ARRONDI.INF dans la version française, probablement ROUND... en anglais), et la sommation.

  2. Conversion décimal ⇄ binaire.
    Il s'agit de convertir un nombre "standard", par ex. $N=2341$ en séquence de bits, ici :
    1 0 0 1 0 0 1 0 0 1 0 1
    
    La technique est simple. Le dernier chiffre binaire est le reste de la division du nombre par 2. La division elle-même, tronquée, donne ici 1170, et la manipulation se répète. La procédure se termine quand on obtient zéro.

    Notez, qu'ainsi on obtient les bits du dernier vers le premier, donc l'organisation "manuelle" des colonnes ou lignes qui contiennent le résultat n'est pas très naturelle.

    Si vous voulez faire cet exercice avant le premier, je vous en prie. Réfléchissez comment effectuer la conversion inverse, du binaire vers le décimal.

    Question pour votre réflexion :

    Comment renverser une ligne ou une colonne, par ex. construire la seconde depuis la première :

    Ceci doit être fait avec une formule copiée le long de la seconde ligne (résultat), qui adresse de manière pas compliquée du tout, mais avec un peu de calcul, les éléments de la première. Mes commentaires peuvent vous aider.

  3. Séries, accélération de convergence.
    Cet exercice ressemble un peu à notre calcul de la racine carrée par la méthode de Newton... La valeur de $\log(2) = 0.6931471806$. Ceci peut être obtenu par la sommation de la série ci-dessous

    $\displaystyle{-\sum_{n=1}^\infty {(-1)^n \cdot \frac{1}{n}}}$

    donc, la sommation de la séquence dont les termes sont : 1, -1/2, +1/3, -1/4, +1/5, -1/6, ... Construisez une colonne avec ces nombres, allez jusqu'à, disons, 100. Pour la puissance il existe la fonction PUISSANCE, l'opérateur "^", et vous pouvez utiliser l'astuce : $(-1)^n = 2\cdot (n \mathrm{ mod } 2) - 1$.

    Construisez à côté la colonne des sommes partielles des nombres au dessus. Disons, si la colonne avec les valeurs est B, que la colonne C contienne : B1, B2+C1, B3+C2, B4+C3, etc., vous connaissez déjà la technique.

    Vous aurez : 1, 0.5, 0.8333333333, 0.5833333333, 0.7833333333, 0.6166666667, 0.7595238095, 0.6345238095, 0.7456349206, 0.6456349206, ...

    Constatez que la convergence des sommes est extrêmement lente, et 100 termes donnent une précision exécrable. Nous allons accélérer la convergence par deux méthodes différentes, et comparer leurs efficacités. Mais aujourd'hui seulement une méthode sera implémentée, l'autre c'est pour plus tard.

    Méthode d'Aitken. Si les termes de la série $a_n$ sont ajoutés, et produisent les sommes partielles des $s_n$, concrètement $s_0 = a_0$, $s_1=a_0+a_1$, $s_2 = a_0 + a_1 + a_2$, ..., $s_n = a_0 + a_1 + \cdots + a_n$, la forme ci-dessous :

    $\displaystyle{r_n = \frac{(s_{n+2}\cdot s_n - s_{n+1}^2)}{s_{n+2}-2 s_{n+1} + s_n}}$
    doit (pas toujours) converger beaucoup plus rapidement. Tester cet algorithme. Le 15ème terme doit ici donner 4 chiffres décimaux exacts : 0,6931... Après 100 : 6 chiffres : 0,693147... Mieux, mais pas génial...

    Répétez la manipulation avec la série plus convergente : réappliquez le procédé de Aitken à la colonne déjà "Aitkenisée". Combien de termes faut-il, afin d'obtenir la convergence en pleine résolution, autour de 10 chiffres?

    Faites attention ! Quand les nombres ont très proches, les erreurs d'arrondi rendent la procédure peu stable.



Retour