Inscription / Connexion Nouveau Sujet
Niveau terminale
Partager :

Python : Exemple de suites adjacentes

Posté par
Victor365
07-02-23 à 14:30

Bonjour, alors voilà j'ai un dm de maths à faire pour la rentrée, je viens vous voir car j'ai du mal sur ces questions.

On considère les suites (Un) et (Vn) définies par Un=1/1²+1/2²+...+1/n²  
Vn=Un + 1/n
(n appartenant à N*)
On sait que ces 2 suites sont adjacentes : (Un) est croissante, (Vn) est décroissante et      lim  (Vn -Un)=0
                                                                                                                           (n--> +inf)

Voilà mon problème, il faut compléter un script de la fonction Python exemple1 afin que exemple1(n) renvoie les valeurs de Un et Vn pour tout entier naturel n>=1.
Le prof nous as donné un script qu'il faut remplir:
1)
def exemple1(n):
         u=....
         for k in range (.... , ....):
                 u=u+..................
         return .... , ....

Je suis très nul quand il s'agit de Python. Dans les trous je peux remplir certains trous : le premier je dirais 1, puis le second et le troisième 1 et n+1, dans le quatrième je dirais 1/k**2 et dans les deux derniers trous je dirais U et U+1/n (pour que V ressorte).
C'est la façon dont j'ai réfléchis mais quand je fais le programme python sur ordi je dois surement oublié quelque chose ou mal le faire car cela ne marche pas.

2) Proposer un encadrement ainsi qu'une valeur rapprochée de l à 10^-3 près.

Voilà mes 2 questions si vous pouviez m'aider cela serait vraiment sympatique.
Merci beaucoup d'avance.

Posté par
sanantonio312
re : Python : Exemple de suites adjacentes 07-02-23 à 14:52

Bonjour,
Pourquoi avoir choisi 1, 1 et n+1?

Posté par
sanantonio312
re : Python : Exemple de suites adjacentes 07-02-23 à 14:56

J'aurais plutôt du te demander comment tu as choisi ces valeurs...

Posté par
sanantonio312
re : Python : Exemple de suites adjacentes 07-02-23 à 15:11

J'en dis un peu plus pour te mettre sur la voie.
La ligne u=... consiste à initialiser la valeur de la suite U.
En choisissant u=1, tu donnes la valeur de U1 (1/1²=1)
A la ligne for k in range (.... , ....), tu choisis les bornes entre lesquelles k va varier.
Imagine ce qui va être calculé au premier passage

Posté par
Victor365
re : Python : Exemple de suites adjacentes 07-02-23 à 15:50

Effectivement je n'y avait pas pensé mais si on met u=1 et que à la ligne for k in range(.... , ....) je met 1 et n+1, on fera 2 fois la première étape vu que u=1 signifie qu'on a déjà fait la première étape.

Donc je pense il faut soit mettre u=0 et donc à la ligne for k in range (.... , .....) je peux mettre 1 et n+1.
Soit je met u=1 et à la ligne for k in range (.... , ....) je met 2 et n+1.
Est-ce cela ou pas ?

Posté par
sanantonio312
re : Python : Exemple de suites adjacentes 07-02-23 à 18:12

Oui, je pense.
Ensuite, je ne connais pas Python.
Mais si tu veux que ça s'arrête à n, est-ce bien n+1 qu'il faut choisir?
Dans d'autres langages, on met n (Pascal, Cobol, Basic, C aussi je crois...)

Posté par
sanantonio312
re : Python : Exemple de suites adjacentes 07-02-23 à 18:17

Ton "mode d'emploi" doit préciser ça

Posté par
mathafou Moderateur
re : Python : Exemple de suites adjacentes 07-02-23 à 18:45

Bonjour
"je ne connais pas Python", oui "RTFM" (Relire Ton Fichu Manuel, en français)

la définition de range(n) est bien de 0 à n-1 inclus, donc, n nombres
et si on met une valeur initiale a ;
range (a,n) de a à n-1 inclus

c'est l'un des "pièges" classiques quand on passe d'un autre langage à Python : d'imaginer que "for" fait la même chose.
que nenni.

Posté par
Howard75
re : Python : Exemple de suites adjacentes 07-02-23 à 19:07

Voici comment procéder pour résoudre ton exercice 😉

Étape n°1 : Comprendre les suites que tu as entre les mains

Je te propose de calculer les quelques premières valeurs de tes suites sur feuille en prenant bien en compte que :

U_{n} = \sum^{n}_{i=1} \frac{1}{i^{2}} = \frac{1}{1^{2}} + \frac{1}{2^{2}} + ... + \frac{1}{n^{2}}

V_{n} = U_{n} + \frac{1}{n}

Les premiers termes de la suite sont forcément U_{1} et V_{1}, sinon cela conduit à diviser par 0.

Tu obtiens alors :

U_{1} = \frac{1}{1^{2}} = 1
U_{2} = \frac{1}{1^{2}} + \frac{1}{2^{2}} = 1,25
U_{3} = \frac{1}{1^{2}} + \frac{1}{2^{2}} + \frac{1}{3^{2}} \approx 1,36

V_{1} = U_{1} + \frac{1}{1} = 2
V_{2} = U_{2} + \frac{1}{2} = 1,75
V_{3} = U_{3} + \frac{1}{3} \approx 1,69

Étape n°2 : Essaye de réfléchir à ce que doit faire ta fonction

Elle doit en fonction de la valeur de n \geq 1 que tu lui passes, te renvoyer la valeur de U_{n} et la valeur de V_{n}.

Tu remarques que ta fonction ne contient pas de référence à V où que ce soit, donc ça signifie que tu peux tout faire à partir de U.

Je commencerais pas initialiser u à 0.
Puis je réfléchirais au sens de ta boucle.

⚠️ Il s'agit d'une boucle utilisant la fonction range avec 2 paramètres qui parcourt donc toutes les valeurs de la première INCLUSE à la deuxième EXCLUE.

Quelques exemples :

- range(1, 10) parcourt les valeurs 1 à 9 à tour de rôle dans ta variable k
- range(1, 100) parcourt les valeurs 1 à 99 à tour de rôle dans ta variable k

Donc, ici, je noterais donc 1 à n+1 (ainsi, la fonction va bien parcourir les valeurs de 1 à n).

À l'intérieur de la boucle je réfléchis à ce que doit contenir u à mesure que j'itère dessus.

u doit contenir l'ancienne valeur de u + la nouvelle valeur de \frac{1}{k^2} actuelle

Enfin, après la boucle je renverrais :
- u qui contient la bonne valeur de U_{n}
- u + \frac{1}{n} qui contient la valeur de V_{n}

J'obtiens le code suivant :


def exemple1(n):
    u = 0
    for k in range(1, n+1):
        u = u + 1/(k**2)
    return u, u+(1/n)

n = int(input('n = '))
u, v = exemple1(n)
print('u = ', u, '\nv = ', v) # Le \n permet de faire un retour à la ligne


Tu peux essayer le code que je viens de te donner sur l'émulateur de la calculatrice Numworks 😉👍

Voici le lien : https://www.numworks.com/fr/simulateur/

Bon courage pour la suite. Je reviendrais plus tard dans la soirée voir si tu as compris et progressé.

Posté par
Victor365
re : Python : Exemple de suites adjacentes 07-02-23 à 19:31

Wow merci beaucoup howard ! Tes explications ont été extrêmement claires et j'ai d'avantage compris.
J'avais surtout du mal sur le range mais maintenant je vois bien comment cela marche et de plus le script python je l'avais mal taper, donc par conséquent il ne marchait pas mais maintenant il marche vu que tu as corrigé mon erreur sur mon script. Vraiment merci beaucoup pour le script !


Juste par contre pour le deuxièmement je me doute que l c'est une limite mais c'est la limite de quoi je ne vois pas, le problème vu que je ne vois pas de quelle limite il s'agit je ne peux pas donner un encadrement et une valeur rapprochée à 10^-3.

Posté par
Howard75
re : Python : Exemple de suites adjacentes 07-02-23 à 20:07

Je t'en prie 😉👍

Pour la question 1) :

Je ne peux que te conseiller de  coder la fonction que j'ai écrite et de la tester.

Fais attention cependant car il n'y a aucune gestion des erreurs.
Par exemple, je n'ai pas géré le cas où l'utilisateur saisirait :
- 0,
- un nombre entier négatif,
- un nombre décimal,
- un caractère quelconque, autre qu'un nombre entier n \geq 1

En programmation il faudrait être beaucoup plus rigoureux mais là n'est pas la question 😉

Pour la question 2) :

Cela me cemble étrange.
Est-ce que tu as bien recopié tout l'énoncé ? Car a priori, on ne sait pas du tout à quoi cela correspond.
Vérifie que tu as bien tout recopié s'il te plaît.

Posté par
mathafou Moderateur
re : Python : Exemple de suites adjacentes 07-02-23 à 20:11

le programme initial qui marche sans aucun problème était bien :

à 15:50

Soit je met u=1 et à la ligne for k in range (.... , ....) je met 2 et n+1.

def exemple1(n):
    u=1     # u_1
    for k in range (2, n+1):
         u=u+1/k**2
    return u , u+1/n

s'il ne marchait pas pour cause de fautes de frappe est un autre problème.

il est dit dans l'énoncé (et on ne demande pas de le prouver) que u est croissante et v est décroissante
puisque v-u tend vers 0, ces deux suites convergent vers une même limite L et à tout moment (pour toute valeur de n) u < L < v
évaluer numériquement la limite est exécuter le programme avec des valeurs "assez grandes" de n pour que v-u < 10-3

nota :
la limite de \sum_{k=1}^{n}{1/k^2} est la définition de la fonction zeta : \zeta(2) = \dfrac{\pi^2}{6}
on devrait retrouver une approximation de cette valeur
et comme c'est le programme qui tourne, autant aller à une précision de 10-6, en seulement quelques secondes de fonctionnement.

Posté par
Victor365
re : Python : Exemple de suites adjacentes 07-02-23 à 20:15

Là je vais aller manger, mais je te réponds vite fait avant d'y aller.
Pour la question 1 c'est ce que je vais faire après manger (le tester)
et concernant la question 2, c'est un polycopié que mon prof m'a donnée donc je ne comprend pas la question 3 est bien :
"Proposer un encadrement ainsi qu'une valeur approchée de l à 10^-3 près"
Peut-être il parle de la limite de la suite (Un) et de la suite (Vn) vu que c'est la même limite (étant donnée qu'elles sont adjacentes toutes les 2)

Posté par
Howard75
re : Python : Exemple de suites adjacentes 07-02-23 à 20:39

Absolument mathafou, il était tout à fait possible de laisser range(2, n+1), cela aurait donné le même résultat ! J'aurais effectivement dû lui indiquer ?

En revanche, c'est moins élégant d'un point de vue programmation car cela signifie que si on saisit la valeur 2, alors on fait un appel inutile à la fonction range qui est donc range(2, 2) qui renvoie un itérable nul.

Par ailleurs, je ne voulais pas l'encombrer avec la fonction Zeta puisqu'il n'est qu'en classe de Terminale ?

Du coup, si la question 2) consiste bien à trouver la valeur I vers laquelle les 2 suites convergent quand n tend vers +\infty, il suffit effectivement d'exécuter la fonction pour une valeur de n très grande.

Pour n = 1000000, j'obtiens que :

U(1000000) = 1.64493306684877
V(1000000) = 1.64493306684877

Tu peux vérifier avec le lien suivant où j'ai recodé la fonction.
https://onecompiler.com/python/3yx8pc9cr
Tu saisis ta valeur de n dans STDIN en haut à droite et tu cliques sur RUN.

En revanche, nous ne savons pas pour I s'il s'agit de :
1) Calculer la limite vers laquelle les 2 suites convergent (auquel cas je l'ai fait au dessus avec n = 1000000)
2) Trouver un encadrement de la valeur de n pour laquelle : V_{n} - U_{n} \leq 10^{-3}

Dans ce 2e cas, il suffit de résoudre l'inéquation :

V_{n} - U{n} \leq 10^{-3}
U_{n} + \frac{1}{n} - U{n} \leq 10^{-3}
\frac{1}{n} \leq 10^{-3}
n \geq 1000

Et alors :

 \\ U(1000) = 1.6439345666815615\\ \\ V(1000) = 1.6449345666815613\\ \\ V(1000) - U(1000) = 0.0009999999999998899 < 10^{-3} \\

Voilà voilà ! ?

Posté par
Howard75
re : Python : Exemple de suites adjacentes 07-02-23 à 20:44

Ah et du coup pour l'encadrement à 10^{-3} près, ça me semblait évident mais je précise au cas où, on a :

1,644 < I < 1,645

J'espère que ça t'aura aidé.
Bonne soirée !

Posté par
Victor365
re : Python : Exemple de suites adjacentes 07-02-23 à 21:24

Merci beaucoup à vous ! Vous  m'avez vraiment aidé !
Bonne soirée à vous.

Posté par
Sylvieg Moderateur
re : Python : Exemple de suites adjacentes 08-02-23 à 09:50

Bonjour à tous,
@Howard75,
Merci de compléter ton profil en indiquant ton niveau.

Posté par
Howard75
re : Python : Exemple de suites adjacentes 08-02-23 à 10:51

C'est bon Sylvieg, c'est fait 😉

Je n'étais pas sûr (et ne le suis toujours pas) de s'il fallait indiqué mon niveau d'études maximum atteint ou bien mon niveau actuel étant donné que j'ai fini mes études il y a déjà un bon nombre d'années.

Posté par
Sylvieg Moderateur
re : Python : Exemple de suites adjacentes 08-02-23 à 13:26

Merci 🙂
C'est vrai que c'est plus important pour les demandeurs que pour les aidants.
Nous sommes nombreux sur l'île pour lesquels les études sont un lointain souvenir.
Tu sembles avoir gardé un bon niveau pour ce qui est de la programmation.
En tous cas bienvenue !

Posté par
Howard75
re : Python : Exemple de suites adjacentes 08-02-23 à 13:40

Je t'en prie 😁

Étant donné que j'ai fait des études en Informatique et que je suis un peu un touche-à-tout mais sans aller au bout de chaque discipline qui m'interesse (mathématiques, informatique (programmation en Python), intelligence artificielle (ML : Machine Learning, DL : Deep Learning), etc.) c'est un petit peu normal que je m'en sorte sur quelque chose d'aussi trivial 😁

D'ailleurs, s'il y en a que ça interesse, voici les 2 liens les plus importants de la documentation Python portant sur la fonction range() et son fonctionnement.

https://docs.python.org/fr/3/library/functions.html#func-range
https://docs.python.org/fr/3/library/stdtypes.html#typesseq-range

Elle peut en théorie prendre jusqu'à 3 paramètres :
- start : valeur de départ (incluse)
- stop : valeur d'arrivée (exclue)
- step : le pas d'itération (de combien en combien on itère à chaque tour de boucle)

Voilà voilà 😉
Bon courage à tous les férus de programmation et de maths 😁



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Inscription gratuite

Fiches en rapport

parmi 1694 fiches de maths

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !