TP : Approximations avec des suites

\boxed{\text{Approximations de } \sqrt{2} \text{ et de } \pi.}

Un très beau TP pour se perfectionner aussi dans l’algorithmique et python, qui nous tiendra trois bonnes séances au moins cinq séances :

  • Le lundi 10 décembre en TP,
  • le lundi 17 décembre en TP,
  • le lundi 7 janvier en TP,
  • le mardi 8 janvier en AP,
  • le mardi 15 janvier en AP.

Sujet pour les trois cinq séances : au tableur, puis à l’aide d’algorithmes, exercices 103 à 105 page 148, basés sur les magnifiques résultats ci-dessous (constatés et admis).

  • \displaystyle\lim_{n \to +\infty}u_n=\sqrt{2} avec \left\lbrace\begin{array}{l}u_0=1\\u_{n+1}=\dfrac{u_n}{2}+\dfrac{1}{u_n}\end{array}\right.
  • \displaystyle\lim_{n \to +\infty}v_n=\sqrt{2} avec \left\lbrace\begin{array}{l}v_0=1\\v_{n+1}=1+\dfrac{1}{1+v_n}\end{array}\right.
  • \displaystyle\lim_{n \to +\infty} \sum_{i=1}^{i=n} \dfrac{1}{i^2} = \displaystyle\lim_{n \to +\infty}\left(\dfrac{1}{1^2}+\dfrac{1}{2^2}+\cdots+\dfrac{1}{n^2} \right)=\dfrac{\pi^2}{6}
  • Conjecture de Syracuse (ex 110 page 149) et temps de vol maximal pour un premier terme au plus égal à 1000. Faire cet exercice pour lundi 21 janvier !


Le lundi 10 décembre en TP, on a, traité le 103 page 148 au tableur :

Quelques détails des formules saisies puis « recopiées vers le bas » :

\boxed{\text{La suite } \left(u_n\right) \text{ semble donc etre celle qui converge le plus vite vers } \sqrt{2}.}

On veut obtenir la même table, mais à l’aide d’un algorithme en Python.

Un élève de chaque groupe manipule sous IDLE le code python et cette fonction sera à compléter dès lundi :

def ex103p148(N):
    u=1
    for i in range(N+1):
        print (i,u)
        u=u/2+1/u

Qu’on exécute par exemple ainsi :

>>> ex103p148(10)
0 1
1 1.5
2 1.4166666666666665
3 1.4142156862745097
4 1.4142135623746899
5 1.414213562373095
6 1.414213562373095
7 1.414213562373095
8 1.414213562373095
9 1.414213562373095
10 1.414213562373095
>>>

Les deux séances qui ont suivi, on a obtenu ces fonctions

def ex103p148(N):
    u=1
    v=1
    for i in range (N+1):
        print(i,u,v,abs(u-sqrt(2)),abs(v-sqrt(2)),sep='\t')
        u=u/2+1/u
        v=1+1/(1+v)

def ex103p148v2(N):
    u=1
    v=1
    for i in range (N+1):
        print("n={0}, u={1:.05f}, v={2:.05f}, |u-sqrt(2)|={3:.05f} et |v-sqrt(2)|={4:.05f}".format(i,u,v,abs(u-sqrt(2)),abs(v-sqrt(2))))
        u=u/2+1/u
        v=1+1/(1+v)

Qui donnent par exemple :

>>> ex103p148(6)
0	1	1	0.41421356237309515	0.41421356237309515
1	1.5	1.5	0.08578643762690485	0.08578643762690485
2	1.4166666666666665	1.4	0.002453104293571373	0.014213562373095234
3	1.4142156862745097	1.4166666666666667	2.123901414519125e-06	0.002453104293571595
4	1.4142135623746899	1.4137931034482758	1.5947243525715749e-12	0.00042045892481934466
5	1.414213562373095	1.4142857142857144	2.220446049250313e-16	7.215191261922271e-05
6	1.414213562373095	1.4142011834319526	2.220446049250313e-16	1.2378941142587863e-05
>>> ex103p148v2(6)
n=0, u=1.00000, v=1.00000, |u-sqrt(2)|=0.41421 et |v-sqrt(2)|=0.41421
n=1, u=1.50000, v=1.50000, |u-sqrt(2)|=0.08579 et |v-sqrt(2)|=0.08579
n=2, u=1.41667, v=1.40000, |u-sqrt(2)|=0.00245 et |v-sqrt(2)|=0.01421
n=3, u=1.41422, v=1.41667, |u-sqrt(2)|=0.00000 et |v-sqrt(2)|=0.00245
n=4, u=1.41421, v=1.41379, |u-sqrt(2)|=0.00000 et |v-sqrt(2)|=0.00042
n=5, u=1.41421, v=1.41429, |u-sqrt(2)|=0.00000 et |v-sqrt(2)|=0.00007
n=6, u=1.41421, v=1.41420, |u-sqrt(2)|=0.00000 et |v-sqrt(2)|=0.00001
>>>

J’espère que vous appréciez l’effort de tuning de la v2 !


Lors de la troisième séance, on a essayé de comprendre l’énoncé de l’exercice 104 et voici les tableaux :


A mettre en œuvre dès le début de la quatrième séance !


Mardi 8 janvier : lors de la quatrième séance, on obtient ceci :

Merci M. Euler, il semble bien que \boxed{\displaystyle\lim_{n \to +\infty}v_n=\pi}

Et ce code python permet à peu près la même chose :

from math import pi,sqrt

def ex104p148(N):
    u=1
    v=sqrt(6)
    for i in range(1,N+1):
        print("Pour n={0}, u={1:.05f} et v ={2:.05f}, pi - v={3:.05f}".format(i,u,v,pi-v))
        u=u+1/(i+1)**2
        v=sqrt(6*u)
>>>ex104p148(9)
Pour n=1, u=1.00000 et v =2.44949, pi - v=0.69210
Pour n=2, u=1.25000 et v =2.73861, pi - v=0.40298
Pour n=3, u=1.36111 et v =2.85774, pi - v=0.28385
Pour n=4, u=1.42361 et v =2.92261, pi - v=0.21898
Pour n=5, u=1.46361 et v =2.96339, pi - v=0.17820
Pour n=6, u=1.49139 et v =2.99138, pi - v=0.15022
Pour n=7, u=1.51180 et v =3.01177, pi - v=0.12982
Pour n=8, u=1.52742 et v =3.02730, pi - v=0.11429
Pour n=9, u=1.53977 et v =3.03951, pi - v=0.10209
>>>

Une boucle pour est assez inadaptée pour déterminer au bout de combien de répétitions on arrive à une approximation de \pi à une certaine précision voulue : à 10^{-2}, 10^{-3}, 10^{-4}

L’exercice 105 permet d’aborder une nouveauté appréciable pour y arriver : la boucle tant que ou while.

On utilise la boucle while quand on ne connaît pas le nombre de répétitions.

Attention, dans la boucle « while« , on doit incrémenter nous-même le rang !

Mardi 15 janvier :

On implémente la code de l’exercice 105, modifié car on traite l’écart avec pi.
On commence par reprendre le 104.

from math import sqrt,pi

def ex104(N):
    u=0
    #u=1/1**2+1/2**2+...+1/N**2
    for k in range(1,N+1) :# de 1 a N
        u=u+1/k**2
        #print(k,u)
    return u,sqrt(u*6)

def ex105(ecart):
    k=0
    u=0
    # jusqu'a diff inf a l'ecart
    # tant que diff sup a l'ecart
    while pi - sqrt(6*u) > ecart :
        k=k+1
        u=u+1/k**2
    return k,u,sqrt(u*6)
>>> ex104(42)
(1.621405740428592, 3.1190438346665714)
>>> ex104(10000)
(1.6448340718480652, 3.1414971639472147)
>>> 
============= RESTART =============
>>> ex105(0.01)
(96, 1.6345714652777572, 3.131681463952958)
>>> ex105(0.001)
(955, 1.6438874944686113, 3.1405930915691176)
>>> ex105(10**-8)
(88338556, 1.6449340563762507, 3.141592643589793)
>>>

Fini ? Non ? Déjà ? Si ? L’exercice 110 page 149 propose de travailler autour de la conjecture de Syracuse. Avec un tableur puis en python.

Faire cet exercice pour lundi 21 janvier !




3 réflexions au sujet de « TP : Approximations avec des suites »

  1. Bonjour Mr MarchanT !
    J’étais en pleine révision et la je tombe face à l’exercice 10 page 131… impossible pour moi de réussir à étudier les variations de cette maudite fonction ( pour rester poli ) ! Can you help me please i am en train de couler profond … ? Merci d’avance bonne après midi.
    Crdlt Hugo Schott 1S1

  2. Alors, déjà, c’est une suite u définie par u_n=\dfrac{n-1}{n+1}.
    La seule manière que je vais expliquer ici, c’est :
    On a u_{n+1}-u_n=\dfrac{(n+1)-1}{(n+1)+1}-\dfrac{n-1}{n+1}
    Donc u_{n+1}-u_n=\dfrac{n(n+1)-(n-1)(n+2)}{(n+1)(n+2)}
    Enfin \boxed{u_{n+1}-u_n=\dfrac{2}{(n+1)(n+2)} ~~\forall n \in \mathbb{N}}
    Donc u_{n+1}-u_n >0 ~~\forall n \in \mathbb{N}
    C’est-à-dire \boxed{u_{n+1}> u_n ~~\forall n \in \mathbb{N}}
    La suite u est donc strictement croissante.
    Bon courage !

N'hésitez-pas à poser une question, ou faire avancer le schmilblick

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l’aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.