Page 1 of 1

Conjecturer les valeurs d'un PGCD avec n

Unread postPosted: 11 Mar 2013, 18:59
by Lokinol
Bonjour à tous,

En train de travailler sur ma spécialité, je me suis vu confronté pendant une petite heure à un problème, que je n'ai pas su résoudre malgré mes recherches. En effet, je dois à l'aide la calculatrice, conjecturer la valeur d'un PGCD avec A et B comportant n entiers.
Je laisse place à l'énoncé :

Soit n un entier naturel, A = 2n+2 et B=3n+1.
A l'aide la calculatrice, conjecturer pour quelles valeurs de n, on a PGCD (A;B).

Sur ma TI-Nspire CX-Cas, j'ai tout de suite pensé à utiliser le tableau (ça se prête plutôt bien à ce genre d'activités non ?). Ainsi, dans la première colonne, je génère la suite 2n+2 puis dans la deuxième colonne je génère la suite de 3n+1. Vous le comprenez : je voulais mettre dans la troisième colonne une suite calculant le pgcd de A et de B selon les valeurs générées. Sauf que ça ne marche pas ..

J'ai essayé de chercher dans ma nspire, d'autres fonctions, mais rien trouvé de bien probable. Il faudrait peut être créer un tableau de valeur, mais je ne vois pas comment ...

Si quelqu'un pouvait m'éclairer, je lui en serais très reconnaissant !

Merci d'avance.

Re: Conjecter les valeurs d'un PGCD avec n

Unread postPosted: 11 Mar 2013, 19:11
by Excale
Code: Select all
Define prog(p)=
Func
Local i,l
l:=newMat(p,3)
For i,1,p
  l[i]:=[2*i+2,3*i+1,gcd(2*i+2,3*i+1)]
EndFor
l
EndFunc

:)

Re: Conjecturer les valeurs d'un PGCD avec n

Unread postPosted: 11 Mar 2013, 19:54
by Lokinol
Bonsoir Excale,

Je te remercie de cette (ultra) rapide et pour le bout de code. Cependant, comme tu dois le savoir : un problème de résolu en maths, amène 10 autres questions.
En effet, je ne comprends pas grand chose au code, et ce malgré mes efforts. Pourrais-tu commenter chacune des lignes dans la grande bonté qui t'anime ? (par exemple : pourquoi ne pas avoir défini la variable p, avec le Local; à quoi sert la commande newMat; pourquoi cette écriture particulière du l[i] et que signifie-t-elle ?).

Par ailleurs, j'ai recopié la fonction (d'ailleurs pourquoi cela est une fonction, et non un programme) - avec ton copyright bien entendu :p - mais je n'arrive pas à la faire fonctionner. J'obtiens une erreur : "Type de données incorrect".

Quoi qu'il en soit, merci beaucoup Excale pour ton aide, ça fait très plaisir ;) !

Re: Conjecturer les valeurs d'un PGCD avec n

Unread postPosted: 11 Mar 2013, 20:15
by Excale
Lokinol wrote:En effet, je ne comprends pas grand chose au code, et ce malgré mes efforts. Pourrais-tu commenter chacune des lignes dans la grande bonté qui t'anime ? (par exemple : pourquoi ne pas avoir défini la variable p, avec le Local; à quoi sert la commande newMat; pourquoi cette écriture particulière du l[i] et que signifie-t-elle ?).


Local liste_de_variables sert à indiquer que les variables sont locales au programme.
En pratique,
-elle sont détruites en fin de programme
-si la variable truc existe dejà dans le classeur, ça fera comme si la variable truc n'existait pas, et ne modifiera pas la variable truc du classeur, mais seulement la variable "locale" truc du programme.
PS: les variables d'entrée (ici p) sont automatiquement locales.

newMat(nbr_de_lignes,nbr_de_colones) permet de générer une matrice remplie de zéros, pratique pour écrire dans chaque case après.

Ici, l étant une matrice, l[i] va chercher le i-ième élément de la matrice, qui est sa i-ième ligne.

Pour finir, dans une fonction, il faut obligatoirement retourner quelque chose à la fin. Par défaut, ça retourne le dernier calcul effectué. En gros, j'aurais tout aussi bien pu écrire "Return l" à la dernière ligne.


Lokinol wrote:Par ailleurs, j'ai recopié la fonction (d'ailleurs pourquoi cela est une fonction, et non un programme) - avec ton copyright bien entendu :p - mais je n'arrive pas à la faire fonctionner. J'obtiens une erreur : "Type de données incorrect".

Tu lances bien le programme en faisant prog(20) (ou tout autre entier positif pas trop grand) ?

Et sinon, je préfère toujours les fonctions aux programmes lorsque c'est possible car:
-on est obligé de mettre les variables en local => on ne va pas modifier les autres variables que l'utilisateur aurait pu créer
-on peut se servir du résultat (retourné) de la fonction dans un autre programme/fonction si besoin

Re: Conjecturer les valeurs d'un PGCD avec n

Unread postPosted: 12 Mar 2013, 16:20
by Bisam
Moi, m'sieur ! Moi m'sieur !
Je peux faire plus court, moi, m'sieur :
Code: Select all
prog(p):=seq({2*i+2,3*i+1,gcd(2*i+2,3*i+1)},i,1,p)

Ça fait tout pareil qu'Excale mais en utilisant la fonction "seq" qui crée une liste dépendant d'un paramètre. Ici, elle crée une liste de listes, ce qui fait une matrice.
Comme le programme ne fait qu'une ligne, on n'a plus besoin des "Define", "Func" et "Endfunc". On peut remplacer le tout par le fameux := (ou par la flèche -> en l'écrivant dans l'autre sens, si on veut adapter à une 68k...)

Re: Conjecturer les valeurs d'un PGCD avec n

Unread postPosted: 12 Mar 2013, 16:30
by Excale
Je ne voulais pas lui faire trop peur avec seq, mais c'est sur que c'est plus court (et plus joli) comme ça :).