Page 1 of 3

Fonctions mod et remain

Unread postPosted: 26 Feb 2016, 19:37
by kadtexas
Bonjour
Il s'agit des fonctions mod() et remain()
Dans le guide de référence, TI-Nspire, on explique que remain()
donne le reste de la division euclidienne du premier
argument par le deuxième argument...


Or le reste est toujour positif dans une division euclidienne !
Par exemple: remain(-17,5)=-2 alors que le reste est 3

Est ce quelqu'un peut m'éclaircir sur l'utilisation de ces fonctions ?

Merci pour vos commentaires

Re: Fonctions mod et remain

Unread postPosted: 26 Feb 2016, 19:48
by Hayleia
Ouais, les restes et modulos négatifs ont quelques problèmes de convention.
Voir ici par exemple https://fr.wikipedia.org/wiki/Modulo_%2 ... ion_modulo
S'il peut y avoir trois possibilités de résultat, pas étonnant que TI fournisse deux fonctions, à choisir selon le résultat que tu veux. Tu remarqueras d'ailleurs que mod(-17,5) renvoie bien le 3 auquel tu t'attendais.

Re: Fonctions mod et remain

Unread postPosted: 27 Feb 2016, 11:40
by kadtexas
Merci Hayleia pour ta réponse et surtout le lien de wiki pour les différentes définitions du modulo.
Texas instrument aurait pu faire une fonction qui retourne le reste positif entre 0 et diviseur-1 comme on l'apprend à l'école!

Bon je vais essayer de faire une si j'arrive

Re: Fonctions mod et remain

Unread postPosted: 27 Feb 2016, 11:46
by Laurae
kadtexas wrote:Merci Hayleia pour ta réponse et surtout le lien de wiki pour les différentes définitions du modulo.
Texas instrument aurait pu faire une fonction qui retourne le reste positif entre 0 et diviseur-1 comme on l'apprend à l'école!

Bon je vais essayer de faire une si j'arrive


Comme Hayleia a dit, c'est la fonction mod qu'il faut utiliser dans ton cas.

Sinon, les définitions de mod et remain sont les suivantes :

mod(a, b) = a - b * floor(a/b) où floor(a/b) est l'entier a/b tel que floor(a/b) < a/b (équivalent du int)
remain(a, b) = a - b * iPart(a/b) où iPart(a/b) est la partie entière (par excès si négatif) de a/b (équivalent de la troncature)

Re: Fonctions mod et remain

Unread postPosted: 27 Feb 2016, 17:40
by kadtexas
Bonjour Laurae
La fonction mod() ne renvoie pas tout le temps un reste positif
exemples
mod(17,5)=2
mais mod(17,-5)=-3
mod(-17,-5 =-2
tandis que moi j'ai besoin d'un reste positif dans tous les cas !

Re: Fonctions mod et remain

Unread postPosted: 27 Feb 2016, 17:49
by Hayleia
Dans ce cas, tu veux peut être utiliser (x,y)→mod(x,abs(y)).

Re: Fonctions mod et remain

Unread postPosted: 27 Feb 2016, 19:20
by kadtexas
Il faut que a et b soient entiers relatifs, donc abs(b) ne marche pas
voici une petite fonction divz() que j'ai faite et ça marche

Code: Select all
divz(a,b)
If b=0
Return "Diviseur nul !"
For r,0,abs(b-1)
q:=((a-r)/(b))
If int(q)=q
Exit
EndFor
return r

Re: Fonctions mod et remain

Unread postPosted: 27 Feb 2016, 20:35
by Hayleia
kadtexas wrote:Il faut que a et b soient entiers relatifs, donc abs(b) ne marche pas

Je n'ai absolument pas compris cet argument. Ça serait quand même con que la fonction abs ne prenne pas les entiers relatifs. Du coup elle ferait quoi ? Elle prendrait les positifs et les rendrait positifs et c'est tout ? Assez inutile comme fonction. En plus elle planterait ton programme vu que tu fais abs(b-1) où b-1 est relatif puisque b l'est.

Sinon, je viens de tester mod(a,abs(b))-div(a,b) où div est ta fonction, et ça renvoie 0 sur (17,5), (17,-5), (-17,5) et (-17,-5)...

Re: Fonctions mod et remain

Unread postPosted: 28 Feb 2016, 11:42
by kadtexas
Bonjour Hayleia
Ça serait quand même con que la fonction abs ne prenne pas les entiers relatifs. Du coup elle ferait quoi ? Elle prendrait les positifs et les rendrait positifs et c'est tout


J'avoue que je ne sais du tout de quoi tu parles !

Voilà ce que j'ai appris à l'école:
Soit deux entiers relatifs a et b, b non nul
il existe deux entiers relatifs q et r tels que:
a=bq+r (division euclidienne dans Z)
Le reste r peut être positif ou négatif pourvu que 0<= abs(r)<abs(b)
mod() et remain() donnent des restes positifs ou négatif selon les signes de a et b.
Moi je voulais avoir un reste positif dans tous les cas qui me servira pour autre chose.

je ne vois pas pourquoi tu as combiné ma fonction à autre chose: mod(a,abs(b))-div(a,b) et ma fonction divz ne plante pas.
Voici ce qu'elle me retourne:
divz(17,5):(3;2) quotient et reste
divz(-17,5):(-4;3)
divz(-17,-5):(4;3)
divz(17,-5):(-3;2)
l'galité a=bq+r est toujours vérifiée et le reste est toujours positif

Re: Fonctions mod et remain

Unread postPosted: 28 Feb 2016, 11:47
by kadtexas
j'ai oublié de préciser que j'ai aussi besoin du quotient, imporatant sinon ce que tu as proposé ferait l'affaire