Page 1 of 1

Algorithme dichotomie

Unread postPosted: 08 Nov 2015, 15:53
by theo.toto2
Bonjour,
J'aimerai écrire un algorithme de dichotomie, qui me donne un encadrement de l'équation g(x)=0 pour la fonction définie sur R par g(x)=4x^3-3x-8. Cet algorithme devrait ensuite me servir pour n'importe quel type de fonction.
J'ai essayé de le créer sur ma calculatrice ti-89 Titanium. Voilà ce que j'ai rentré :

Code: Select all
Prgm
Input "a",a
Input "b",b
Input "n",n
While b-a>10^(-n)
(a+b)/2→m
If y1(m)<0 Then
a→m
Else
b→m
EndIf
EndWhile
Disp"a=",a
Disp"b=",b
EndPrgm


J'ai également rentré la fonction y1 dans l'éditeur de fonctions.
Cependant, l'algorithme ne marche pas : quand je le lance, il tourne sans s'arrêter.
Quelqu'un pourrait-il me dire quel est le problème de l'algorithme ? Je cherche désespérément sans trouver... Merci!

Re: Algorithme dichotomie

Unread postPosted: 08 Nov 2015, 16:25
by Hamza.S
par simple hasard ça ne serait pas m→a et m→b à la place de a→m et b→m ?
ça expliquerait pourquoi ton programme tourne en boucle sans arrêt puisque a et b ne change jamais

ton programme marchera seulement si tu vas dans Y= et que tu mettes la fonction dans y1=

Re: Algorithme dichotomie

Unread postPosted: 08 Nov 2015, 18:04
by Hamza.S
pour un programme adaptable à la plupart des fonctions j'aurai fait ça :

Code: Select all
(f,a,b,n)
Func
  local c,m
  While b-a>10^(-n)
    (a+b)/2→m
    f|x=m→c
    If c<0 Then
      m→a
    Else
      m→b
    EndIf
  EndWhile
  Return (a+b)/2
EndFunc

pour lancer programme (fonction) il suffit de mettre f(x),a,b,n entre les parenthèses
bien-sûr tout ça c'est inutile car l'encadrement tu peux le trouver facilement dans table