Inscription / Connexion Nouveau Sujet
Niveau première
Partager :

Les Nombres Triangulaires

Posté par
Loulou2813
12-02-23 à 19:51

Bonjour serait-il passible de me dire si mes résultats sont corrects svp. Par avance merci beaucoup.

Des mathématiciens grecs (probablement de l'école de Pythagore, aux VI et V -ème siècles avant J-C) représentaient certains nombres à l'aide de polygones ( nombres polygonaux).  Les nombres triangulaires en sont un exemple. Un nombre triangulaire Tn est un nombre qu'on représente à l'aide de points assemblés pour former un triangle comme sur les figures ci-dessous.

1)  Déterminer T5 et T6
        T5 =15  et T6 = 21

2) Exprimer Tn+1 en fonction de Tn.
     Tn+1 = Tn + n+1

3) On considère la fonction Python ci-dessous. Interpréter le résultat obtenu quand on exécute la commande triangle (20).

def triangle (n):
          T=1
           for i   in range (1,n):
                   T=T+i+1
            return T

T20 = 210

4) On veut écrire une fonction de seuil qui permet de déterminer le plus petit nombre triangulaire qui dépasse 2000.
Compléter cette fonction ci-dessous et déterminer le plus petit nombre triangulaires qui dépasse 2000 et son rang.

def seuil (...) :
       T=1
        n=1
        while ........ :
                  n= ......
                  T= ........
        return n, T
sur cet exercice je suis bloqué je n'ai pas vu le fonction seuil pouvez vous m'aider svp.

Posté par
Loulou2813
re : Les Nombres Triangulaires 12-02-23 à 19:53

Voici, l'image correspondant à l'énoncé de l'exercice.

Les Nombres Triangulaires

Posté par
mathafou Moderateur
re : Les Nombres Triangulaires 12-02-23 à 20:14

Bonjour,

la fonction seuil est une fonction que l'on définit soi même justement par le programme que l'on te demande d'écrire

def seuil(...):

veut dire que l'on définit notre fonction seuil comme faisant ce qui suit :
initialiser T à 1 et n à 1
puis effectuer une boucle while
etc

de la même façon que la ligne
def triangle(n) définissait une fonction "triangle" prenant en entrée le nombre n et faisant ce qui suit :
initialiser T à 1 etc etc.


donc évidemment que tu ne "verras" (!) jamais la fonction seuil : on te demande à toi de la créer !
avec le squelette imposé dans l'énoncé, tu n'as que à compléter les "trous" "..."

déja, que va-t-on mettre comme paramètre d'entrée ? là :
def seuil(...):
qu'est ce qu'on veut faire d'après l'énoncé ?
etc.

Posté par
Howard75
re : Les Nombres Triangulaires 12-02-23 à 21:32

Question 4

On te demande de créer une fonction Python appelée seuil qui permette de déterminer le plus petit nombre n qui donne un nombre de points t dans ton triangle tel que T_{n} \geq 2000.

Tu peux définir une fonction générale appelée seuil qui calculera la valeur de n à partir de laquelle le nombre de points t dans ton triangle est supérieur ou égal au seuil s de ton choix.


def seuil(s):
    t = 1
    n = 1
**** supprimé ****

Posté par
Howard75
re : Les Nombres Triangulaires 12-02-23 à 21:55

Petite précision :

Si tu es obligé de respecter l'ordre des termes dans ton script

*** bien sur ! on demande de compléter un script EXISTANT
pas d'en imaginer un autre à partir de rien. ***

Posté par
mathafou Moderateur
re : Les Nombres Triangulaires 12-02-23 à 22:48

Howard75
on t'a déja dit que faire les exos à la place du demandeur n'était ABSOLUMENT PAS dans l'optique de ce forum.
Modérateur.

Posté par
Loulou2813
re : Les Nombres Triangulaires 13-02-23 à 18:02

Bonjour,

J'ai commencé le programme de cette façon :

Def seuil (s) :
      T = 1
      n = 1
      While T ≤ 2000
             n = n + 1
             T = T + 1 + n
      return n,T
      

Est-ce bon ?

Posté par
mathafou Moderateur
re : Les Nombres Triangulaires 13-02-23 à 20:34

Oui et non

ton programme manque de généraliité car il ne résout que pour T > 2000 et ton paramètre d'appel s n'est pas utilisé
comme le disait Howard75
"est supérieur ou égal au seuil s de ton choix"
il faut comparer à s, pas à la valeur numérique fixe 2000.

n'existe pas en Python, on écrit <=

tu peux tester ton programme en vrai sur un interpréteur Python :
sur certaines calculettes,
en ligne sur Internet, par exemple replit ou bien d'autres
ou un interpréteur installé sur ton PC
ça te permettra de répondre à la question de l'exo en tapant en ligne de commande
seuil(2000)

mais si tu veux un nombre triangulaire > 1000000 tu taperais juste
seuil(1000000)
le script lui-même étant inchangé
c'est l'avantage de définir une fonction plutôt que un programme fixe testant par rapport à 2000 fixe

Posté par
mathafou Moderateur
re : Les Nombres Triangulaires 13-02-23 à 20:37

PS
T = T+n+1 n'est pas bon non plus
essayons
au départ T = 1 et n = 1
1ere boucle
n devient 2
et donc T devient 1 + 2 + 1 = 4 alors que T2 vaut 3 et pas 4

Posté par
Loulou2813
re : Les Nombres Triangulaires 13-02-23 à 21:06

Du coup le programme est :

def seuil() :
        T = 1
         n = 1
         While <= 2000
               n + 1 = 1
               T + n = T
        Return n,T

du coup je trouve n=63 et T=2016.

Est-ce cela ?

Posté par
mathafou Moderateur
re : Les Nombres Triangulaires 13-02-23 à 21:22

je ne pense pas que tu trouves quoi que ce soit avec
n+1 = 1
et T+n = T
!!

tu avais écrit correctement
n = n+1
T = T+ ...
(corrigé donc en T =T+n)

et en plus tu n'as pas corrigé correctement le while.
relis ce que j'ai dit à ce propos.

nota:
quand on cite le programme que l'on a réellement exécuté, il vaut mieux faire un copier-coller exact que de le retaper de travers.

Posté par
Howard75
re : Les Nombres Triangulaires 13-02-23 à 23:17

⚠️ J'ai bien pris note qu'il ne fallait pas apporter de solution toute faite à un élève mais le guider vers la résolution de son exercice par ses propres moyens et donc dans cet esprit je vais t'expliquer comment le résoudre par toi-même en te guidant pas à pas ! 😉

ÉNONCÉ

Compléter la fonction seuil écrite en Python ci-dessous de sorte qu'elle permette de déterminer le plus petit nombre triangulaire qui dépasse 2000 points, autrement dit, le plus petit rang n à partir duquel le nombre de points t dans ton triangle est > 2000.


def seuil(...):
    # INITIALISATION
    t = 1
    n = 1

    # BOUCLE
    while ...:
        n = ...
        t = ...

    # RETOUR DE LA FONCTION
    return n, t


QUELQUES EXEMPLES

Si on exécute seuil(6), cela revient à demander à partir de quel rang n on a au moins 6 points dans notre triangle, et on devrait obtenir : n = 3 et t = 6.

Si on exécute seuil(7), cela revient à demander à partir de quel rang n on a au moins 7 points dans notre triangle, et on devrait obtenir : n = 4 et t = 10.

FONCTIONNEMENT DE LA FONCTION seuil

Si tu reprends ton schéma précédent, tu constates plusieurs choses :

- au rang n = 1 on a t = 1
- au rang n = 2 on a t = 3 (l'ancienne valeur de t + rang actuel)
- au rang n = 3 on a t = 6 (l'ancienne valeur de t + rang actuel)
- ...

Tu comprends ainsi :
- pourquoi ta fonction est initialisée avec n = 1 et t = 1
- ce que ta fonction est ainsi censée faire à chaque tour de boucle avec les variables n et t

TESTER TA FONCTION

Pour tester ta fonction, tu peux ajouter ceci après cette dernière :


s = int(input("s = "))
n, t = seuil(s)
print("t >=", s, " à partir de n =", n)


Cela te demandera de saisir la valeur de ton choix et t'affichera à partir de quel rang n le nombre de points t dans ton triangle est supérieur au rang s de ton choix.

Tu peux aussi ajouter ce qui suit encore après le code précédent afin de voir la progression du nombre de points t dans ton triangle en fonction du rang n :


for rang in range(1, n+1):
    points += rang
    print("Rang", rang, ":", points, "points dans le triangle")


Voilà, voilà ! 😁
Réécris ta fonction, poste là ici et je te dirais si tu as bon.
Bon courage 😉👍

Posté par
Howard75
re : Les Nombres Triangulaires 14-02-23 à 00:04

Merci de supprimer mon message précédent qui contient quelques petites erreurs qui ont leur importance si on passe une valeur à la fonction seuil qui correspond à un triangle parfait.
modérateur edit : non,
c'est celui ci dont j'expurge ce qui est identique. ou qui n'apporte rien du tout.


...


    ...
    # BOUCLE
    while ...: # réfléchis au cas où t = s et tu comprendras pourquoi il ne faut pas juste écrire t < s
    ceci était déja vu de lui même par le demandeur !!
    ...



QUELQUES EXEMPLES

Si on exécute seuil(5), cela revient à demander à partir de quel rang n on a PLUS DE 5 POINTS dans notre triangle, et on devrait obtenir : n = 3 et t = 6.

Si on exécute seuil(6), cela revient à demander à partir de quel rang n on a PLUS DE 6 POINTS dans notre triangle, et on devrait obtenir : n = 4 et t = 10.

Si on exécute seuil(7), cela revient à demander à partir de quel rang n on a PLUS DE 7 POINTS dans notre triangle, et on devrait obtenir : n = 4 et t = 10.

Posté par
mathafou Moderateur
re : Les Nombres Triangulaires 14-02-23 à 00:18

restons dans l'exercice tel qu'il est

Citation :
s = int(input("s = "))
n, t = seuil(s)
print("t >", s, " à partir de n =", n)

on laisse tomber ça, ce n'est pas demandé
pour tester on tape juste en ligne de commande
seuil(6)
seuil(7)
seuil(2000)

Citation :
for rang in range(1, n+1):
    points += rang
    print("Rang", rang, ":", points, "points dans le triangle")

réécrire ainsi avec d'autres variables en gros la fonction triangle en tant que programme direct n'apporte rien
(et puis introduire l'opération,+= dépasse le cadre de cet exo,
on aurait écrit
points = points + rang)

la difficulté dans l'aide est de se mettre au niveau de l'exercice demandé, tel qu'il est demandé et pas de faire montre de sa propre maitrise au dela.
on ne donnera éventuellement des "compléments" que une fois l'exo terminé

d'autre part plusieurs intervenant qui disent la même chose en reculant par rapport à là où en est l'élève est néfaste ..
je rappelle :
"à lire avant de ..."

Dans la mesure du possible (c'est à dire sauf abandon manifeste ou erreur), laisser l'aidant qui a pris le sujet en mains mener son aide comme il l'entend. Cela est non seulement une question de politesse, mais également une manière de ne pas perturber le demandeur.

Posté par
Loulou2813
re : Les Nombres Triangulaires 14-02-23 à 19:42

Bonsoir, je viens de faire des corrections

def seuil() :
        T = 1
         n = 1
         While T < 2000
               n = n + 1
               T = T + n

        Return n,T

Du coup, je retrouve n=63 et T=2016

Est-ce bon ?

Posté par
Howard75
re : Les Nombres Triangulaires 14-02-23 à 20:01

L'intérieur de ta boucle while ainsi que le résultat obtenu sont bons.


n = n+1
t = t + n


En revanche, plusieurs petites choses :

1) Tu n'as pas défini ce que prend ta fonction seuil en paramètre d'entrée dans les parenthèses qui suivent le nom de la fonction


seuil(???)


2) Du coup, tu n'as pas non plus utilisé ce paramètre dans la condition de ta boucle qui permet à la fonction de fonctionner pour n'importe quelle valeur de ton paramètre d'entrée choisi


while ???


Ainsi tu pourras appeler ta fonction seuil sur n'importe quelle valeur de ton choix en faisant par exemple :


n, t = seuil(10)
print("Rang", n, ":", t, "points")

n, t = seuil(2000)
print("Rang", n, ":", t, "points")


Poursuis dans ce sens 😉👍

Posté par
mathafou Moderateur
re : Les Nombres Triangulaires 14-02-23 à 20:05

oui et surtout NON

le fait de mettree des choses demandées (donc exigées) dans la définiion
def seuil(• • •):
impose de mettre un paramètre d'appel et pas rien du tout .
def seuil(s):

et ensuite par conséquent d'utiliser ce paramètre s pour que la fonction envoie le plus petit T > s

que s soit 2000 ou n'importe quelle valeur lors de l'utilisation de cette fonction.
quand on l'invoquera par seuil(2000) pour répondre à la question
ou n'importe quelle autre valeur
seuil(6) renverra le plus petit T tel que T > 6 c'est à dire T4 = 10
seuil(1000000) renverra le plus petit T > 1000000
etc etc

Posté par
Loulou2813
re : Les Nombres Triangulaires 14-02-23 à 20:37

Ah oui d'accord, du coup c'est bien ?

def seuil(S) :
        T = 1
         n = 1
         While T < S
               n = n + 1
               T = T + n
        Return n,T

Posté par
mathafou Moderateur
re : Les Nombres Triangulaires 14-02-23 à 22:55

voilà parfait.

et pour l'utiliser, une fois le script lancé (il ne se passe rien à part définir la fonction)
tu exécutes cette fonction en tapant en ligne de commande seuil(2000) ou toute autre valeur

bien plus simple que ce que te suggère Howard75 avec ses "print" pour lesquels il faudrait modifier et relancer le module entier pour changer de valeur. ou utiliser un input etc
en dehors de ce qui est demandé dans l'exo.

Posté par
mathafou Moderateur
re : Les Nombres Triangulaires 14-02-23 à 22:57

presque
il manque un deux points après le while, et w en minuscule
while T < S :

Posté par
Loulou2813
re : Les Nombres Triangulaires 14-02-23 à 23:00

D'accord merci beaucoup
J'ai mieux compris le programme seuil

Posté par
Howard75
re : Les Nombres Triangulaires 14-02-23 à 23:54

mathafou @ 14-02-2023 à 22:55

voilà parfait.



C'est faux.
Le script n'est pas parfait.
Il donne la bonne réponse pour ce cas précis mais c'est pûrement fortuit.


Il aurait fallu faire ceci :


while t < s + 1:


C'est ce que j'essayais de lui expliquer tant bien que mal.

S'il fait t < s, le problème est que lorsque s correspond EXACTEMENT au nombre de points contenus dans un triangle, la fonction renvoie la valeur n telle que T_{n} = s, or on demande le plus petit rang tel que le nombre de points t dans le triangle  soit SUPÉRIEUR AU SEUIL.

Exemple

En l'état, ta fonction renvoie pour s = 10 :

n = 4
t = 10

C'est faux. On voulait un triangle avec un rang de plus pour obtenir un total de points SUPÉRIEUR AU SEUIL qui ici est de 10.

D'où l'intérêt d'utiliser t < s + 1 dans la boucle, ce qui renvoie bien pour s = 10 :

n = 5
t = 15

Voilààà ! 🥵

mathafou, j'ai bien compris la philosophie du forum mais je sais également qu'il peut être utile par moment d'avoir un second avis qui permet justement d'éviter ce genre de petites erreurs/imprécisions 🙂

Je ne suis d'ailleurs pas immunisé contre les erreurs (loin de là ! 😅) et donc j'ai hâte de te retrouver sur d'autres posts et de te voir me reprendre et me permettre ainsi de progresser à mon tour.

À une prochaine fois ! 😊

Posté par
Howard75
re : Les Nombres Triangulaires 15-02-23 à 00:09

D'ailleurs, petite précision, il y a 2 manières de faire au choix :

1ère solution

while t <= s:


2ème solution

while t < s+1:


Tout sauf t < s en fait.

😉👍

Posté par
mathafou Moderateur
re : Les Nombres Triangulaires 15-02-23 à 01:02

je n'avais pas vu cette nouvelle erreur par rapport à ce que Loulou2813 avait déja PARFAITEMENT VU il y a déja longtemps

Loulou2813 @ 13-02-2023 à 18:02

J'ai commencé le programme de cette façon :
Def seuil (s) : 
      T = 1
      n = 1 
      While T  2000
             n = n + 1
             T = T + 1 + n
      return n,T


le problème est que quand il corrige des erreurs, (remplacer 2000 par s, 1+n par n ) il en ajoute une autre (remplacer ≤ par < à tort)
c'est fréquent.
je lui avais déja signalé à l'époque que ≤ s'écrit <= en Python d'ailleurs. et ce <= était donc bon déjà à cette époque.

on veut > S
et "tant que ce n'est pas > S" s'écrit bien "tant que c'est ≤ S"

Posté par
Loulou2813
Les Nombres Triangulaires 26-02-23 à 21:26

Bonjour serait-il passible de me dire si mes résultats sont corrects svp. Par avance merci beaucoup.

1) Montrer que pout tout entier n?1 , 2*T(n)= n(n+1).

2*T(n)=n(n+1)
      T(n)= n(n+1)/2
       T(n)?1
n(n+1)/2?1
n(n+1)/2-1/1?0
n(n+1)/2-1*2/2?0
n(n+1)-2/2?0
n²+n-2/2?0

?=b²-4ac= 1²-4*1*(-2)=-7
?< 0 donc le trinôme admet pas de racine
a>0
x                                 ??                                   +?
n²+n-2                                           +
n²+n-2/2                                       +

S=]-? ;+? [

                                  ou  je doit fait faire ça

                  { ? ? ? ? ? ? ? ? ?
             {    {   ? ? ? ? ? ? ? ?     ?                                                                        
n    {   {     {    ? ? ? ? ? ? ? ? ?
           {    ? ? ? ? ? ? ? ? ?
                          -------------------------------------
                                             T(n+1)

Pour que T(n) soit un nombre entier, il faut que n/2 ou (n+1)/2 soit égal à 1. Seuls les nombres T1= 1 et T2= 3. Le seul nombre triangulaire premier est donc 3.    


2) 4005 est-il un nombre triangulaire ?

oui 4005 est un nombre triangulaire car quand nous faisons le programme:
def seuil (4005):
        T= 1
         n= 1
        while t ? 4005
                     n=n+1
                     T= T+i+1
         return n,T
Cela nous donne le chiffre 4005 et son rang qui est 89.

sur cet exercice je suis bloqué, pouvez vous m'aider svp.  

*** message déplacé ***
multipost interdit
toutes les questions d'un même exo dans le même sujet

Posté par
sanantonio312
re : Les Nombres Triangulaires 26-02-23 à 22:59

Bonjour,
Avec l'énoncé complet, on comprendrait mieux...

*** message déplacé ***

Posté par
Loulou2813
re : Les Nombres Triangulaires 27-02-23 à 19:09

Bonjour serait-il possible de me dire si mes résultats sont corrects svp. Par avance merci beaucoup.

1) Montrer que pout tout entier n≥1 , 2*T(n)= n(n+1).

2*T(n)=n(n+1)
      T(n)= n(n+1)/2
       T(n)≥1
n(n+1)/2≥1
n(n+1)/2-1/1≥0
n(n+1)/2-1*2/2≥0
n(n+1)-2/2≥0
n²+n-2/2≥0

∆=b²-4ac= 1²-4*1*(-2)=-7
∆< 0 donc le trinôme admet pas de racine
a>0
x                                 −∞                                   +∞
n²+n-2                                           +
n²+n-2/2                                       +

S=]-∞ ;+∞ [

                                  ou  je doit fait faire ça

                  { □ □ □ □ □ □ □ □ □
             {    {   □ □ □ □ □ □ □ □     □                                                                        
n    {   {     {    □ □ □ □ □ □ □ □ □
           {    □ □ □ □ □ □ □ □ □
                          -------------------------------------
                                             T(n+1)

Pour que T(n) soit un nombre entier, il faut que n/2 ou (n+1)/2 soit égal à 1. Seuls les nombres T1= 1 et T2= 3. Le seul nombre triangulaire premier est donc 3.    


2) 4005 est-il un nombre triangulaire ?

oui 4005 est un nombre triangulaire car quand nous faisons le programme:
def seuil (4005):
        T= 1
         n= 1
        while t ≤ 4005
                     n=n+1
                     T= T+i+1
         return n,T
Cela nous donne le chiffre 4005 et son rang qui est 89.

sur cet exercice je suis bloqué, pouvez vous m'aider svp.  

Posté par
mathafou Moderateur
re : Les Nombres Triangulaires 03-03-23 à 19:23

Bonjour,

il s'agit dans ces questions (partie B) de démontrer, pas d'utiliser les programmes précédents.

1)
il faut à partir de la définition de la suite montrer que etc
pas de de faire des calculs "à la noix" avec équations etc .

la définition de la suite c'est :
T1 = 1et pour tout n >1
Tn = Tn-1 + n (question 2 de la partie A, écrite autrement)

c'est à partir de ça et de rien d'autre qu'on doit démontrer que 2Tn = n(n+1)
et pas de partir d'un supposé 2Tn = n(n+1) qu'on ne sait pas encore, (c'est ce qu'on veut démontrer)

pour cela on peut utiliser le cours sur les suites arithmétiques
T1 = 1
T2 = T1 + 2
T3 = T2 + 3
...
Tn-1 =Tn-2 + (n-1)
Tn = Tn_1 + n

additionnons tout ça et simplifions ce qui ,est à la fois à droite et à gauche du =
il reste Tn = 1 + 2+3 + ... + (n-1) + n
je te laisse terminer

et si tu n'as pas encore vu les suites arithmétiques en cours
tu peux écrire :
Tn = 1+ 2 + 3 + ... + (n-1) + n
Tn = n + (n-1) + ... + 2 + 1
-----------------------------------
2Tn = ...

Quant à la question 2) de cette partie B c'est
l'équation n(n+1) = 2*4005 a-t-elle pour solution un nombre entier ?

Posté par
mathafou Moderateur
re : Les Nombres Triangulaires 04-03-23 à 09:48

La méthode "algébrique" précédente est très certainement ce qui est attendu à ce niveau.

à noter toutefois une méthode "intuitive" et expéditive à partir des "dessins" fournis

Les Nombres Triangulaires

ce qui donne :

Les Nombres Triangulaires

(ce serait pour une étude des nombres triangulaires à un niveau quasiment collège ...)



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 1674 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 !