Page 1 of 1

Algorithme de dichotomie (fonctions)

Unread postPosted: 16 Nov 2014, 15:39
by milobil
Bonjour,

Je dois rentrer un algorithme sur ma ti nspire mais je suis bloqué à certains points. Voici l'algorithme en question (à savoir résolution approchée d'une équation par dichotomie) :

Image

Voici la syntaxte que je pense mettre :

Code: Select all
Define dichotomie(a,b,e,m)

Prgm

Request (a,b,e)
While b-a>e
Loop
a+b/2→m
If f1(a)*f1(m)≤0 Then
m→b
Else
m→a
EndIf
EndLoop
EndWhile

Disp (a,b)
EndPrgrm


Voici ce que j'ai fait (ci-dessus).

Et pour la syntaxe je ne suis pas sûr de comment définir mes variables, s'il faut mettre Local ou Define ?

Merci beaucoup de m'aider.

Re: Algorithme de dichotomie (fonctions)

Unread postPosted: 16 Nov 2014, 16:22
by Lionel Debroux
La syntaxe pour la multiplication utilise "*", même si les multiplications sont habituellement affichées avec le . au milieu de la ligne.

Tu peux mettre tes variables en Local, dans ce cas.

Re: Algorithme de dichotomie (fonctions)

Unread postPosted: 16 Nov 2014, 16:22
by critor
La multiplication utilise la touche :nsmu: et non :nssd: .

"local" n'a pas dans un 'programme' l'importance essentielle qu'il a dans une fonction. Cela ne devrait pas influer.

L'important, c'est ce que te raconte le programme à son exécution.
Tu obtiens une erreur ?

Re: Algorithme de dichotomie (fonctions)

Unread postPosted: 16 Nov 2014, 18:57
by milobil
Oui pour la multiplication j'utilise je x et non le . (c'est juste que ça m'affiche un point c'est pour ça que je l'ai représenté par un point).

Par contre quand je mets ctrl+b ça m'affiche "manquante )" et le curseur se place entre "a," et "b" de "Request".. Je ne vois pas où je dois rajouter cette paranthèse.

Re: Algorithme de dichotomie (fonctions)

Unread postPosted: 16 Nov 2014, 20:20
by critor
"Request" n'est pas une fonction mais une procédure.
Les arguments ne doivent donc pas être regroupés entre parenthèses, contrairement à ce que tu as fait.

Correction:
Code: Select all
request "a=",a
request "b=",b
request "e=",e

Re: Algorithme de dichotomie (fonctions)

Unread postPosted: 16 Nov 2014, 20:47
by milobil
Merci, donc voilà comment se présente mon algorithme actuellement :


Code: Select all
Define dichotomie(a,b,e,m)=
Prgm
request "a=",a
request "b=",b
request "e=",e

While b-a>e
Loop
a+b/2→m
If f1(a)*f1(m)≤0 Then
m→b
Else
m→a
EndIf
EndLoop
EndWhile
Disp "a=",a
Disp "b=",b
EndPrgm



Par contre quand je vais dans la page de calcul juste à côté, j'appuie sur la touche var pour sélectionner dichotomie().

Mais lorsque je clique sur "enter", ça me dit qu'il n'y a pas assez d'arguments.

Alors je rentre par exemple dichotomie(2,3,0.0001,m) et quand je clique sur "enter", le programme s'éxecute et m'envoie les request (je rentre les variables) mais après ça bloque : le cercle de chargement qui tourne sans arrêts.

Une idée peu-être ?

Re: Algorithme de dichotomie (fonctions)

Unread postPosted: 16 Nov 2014, 20:50
by critor
En effet :
Code: Select all
Define dichotomie(a,b,e,m)


Ta 1ère ligne indique que tu souhaites fournir 4 données en paramètre de l'appel du programme, ce qui est contradictoire avec l'utilisation de 'request', et de plus 'm' n'est même pas une donnée.

Correction :
Code: Select all
Define dichotomie()

Re: Algorithme de dichotomie (fonctions)

Unread postPosted: 16 Nov 2014, 21:58
by milobil
Merci mais normalement il ne faut pas que je définisse les variables avant ? Imaginons que a et b était des entiers naturels, comment je l'aurais spécifié ?

Concernant le programme, celui-ci s'éxecute maintenant mais après ça bloque : le cercle de chargement qui tourne sans arrêts. J'ai beau attendre 5 min aucune réponse... :'(

Re: Algorithme de dichotomie (fonctions)

Unread postPosted: 16 Nov 2014, 22:19
by critor
Les variables se définissent avec l'instruction 'local'.
C'est obligatoire dans une fonction, mais dans ton cas il s'agit d'un programme et non d'une fonction.

Il faut donc croire que ton programme doit avoir un bug et entre dans une boucle infinie, la condition d'arrêt du 'while' n'était jamais vérifiée.
Pour l'interrompre, laisse la touche :nsho: enfoncée pendant plusieurs secondes.

Re: Algorithme de dichotomie (fonctions)

Unread postPosted: 16 Nov 2014, 22:29
by milobil
D'accord.

Bon, en maintenant la touche "on" enfoncée ça m'interrompt juste le calcul mais aucun résultat ne s'affiche :/

Mais bon normalement ca devrait fonctionner, dans mon cas il s'agit de résoudre l'équation f(x)=0 (et de l'encadrer) avec f(x) = 3x⁴-4x³-12x²+14 et cette équation admet bien une solution et même 2 pour être précis dans R.

Dommage, merci pour votre aide quand même.