Page 1 of 1

Passage d'une fonction à un programme

Unread postPosted: 07 Dec 2012, 19:44
by Richou-D-Hunter
Bonjour,

Récemment, j'ai été confronté au problème du passage de fonction à un programme sur TI, et je me suis posé la même question sur Casio. J'espère que ça sera utile à un maximum de personnes !

L'exemple de base est un programme de résolution par dichotomie. Le but de cet algorithme est d'approximer f(x) = 0 dans un intervalle [a;b], en divisant l'intervalle en deux à chaque itération jusqu'à une précision e. Vous trouverez plus d'informations sur Wikipédia (comme toujours) : http://fr.wikipedia.org/wiki/Dichotomie

Voici un algorithme de dichotomie en langage naturel :

Code: Select all
Si f(a) × f(b) < 0 alors
   Tant que |b-a| > e faire
      m → (a+b)/2
      Si f(a) × f(m) > 0 alors
         a → m
      Sinon
         b → m
      FinSi
   FinTantQue
   Afficher [a;b]
Sinon
   Si f(a) = 0
      Afficher a
   Sinon
      Si f(b) = 0
         Afficher b
      Sinon
         Afficher "Pas de solution dans [a;b]"
      FinSi
   FinSi
FinSi


En Casio-Basic, le problème qui se pose est l'évaluation de f(a) et f(m). En effet, les variables en Casio-Basic ne peuvent contenir que des nombres ; il est impossible de stocker une fonction dans une variable. Que faire ?

La solution réside dans le menu "Graph" de votre machine. Entrez votre fonction dans le champ Y1. Revenez dans l'éditeur de programme.
À partir de là, vous pouvez évaluer Y1 en entrant le caractère Y dans "Vars" > "Grph" > "Y" suivi d'un 1, qui est à différencier du Y du clavier alphabétique.

De ce fait, écrire ceci
Code: Select all
Y1 → F
affectera à F la valeur de Y1, calculée en X. Ainsi, en affectant A à X, on peut évaluer f(A).

Au final, on devra écrire ceci :
Code: Select all
A → X
Y1 → F


Pour finir, voici donc le programme complet, en supposant que la fonction aie bien été entrée dans le menu "Graph" :

Code: Select all
"A ="? → A
A → X
Y1 → F

"B ="? → B
B → X
Y1 → G

If F × G < 0 Then
   While |B-A| > E
      (A+B)/2 → M

      A → X
      Y1 → F
      M → X
      Y1 → G
      
      If F × G > 0 Then
         A → M
      Else
         B → M
      IfEnd
   WhileEnd
   
   "SOLUTION COMPRISE ENTRE"
   A⦟
   "ET"
   B
Else
   If F = 0 Then
      A⦟
      "EST SOLUTION"
   Else
      If G = 0 Then
         B⦟
         "EST SOLUTION"
      Else
         "PAS DE SOLUTION DANS [A,B]"
      IfEnd
   IfEnd
IfEnd


Et voilà ! Le tour est joué ! Évidemment, il en sera de même pour tous les programmes qui dépendent d'une fonction…

Re: Passage d'une fonction à un programme

Unread postPosted: 07 Dec 2012, 21:22
by Bisam
Bonne astuce, bien expliquée.

On en veut encore !

Re: Passage d'une fonction à un programme

Unread postPosted: 07 Dec 2012, 23:56
by Richou-D-Hunter
Merci ! :)

Je risque d'être confronté à d'autres problèmes sur la Casio de ma petite amie qui est en Terminale S, alors je n'hésiterai pas à faire part de mes découvertes ! :P