π
<-

Adapter un programme de dichotomie AlgoBox

Pour le TI-Basic sur Nspire

Adapter un programme de dichotomie AlgoBox

Unread postby Lokinol » 18 Nov 2012, 19:07

Bonjour à tous !

Étudiant actuellement en classe la dichotomie, j'ai essayé de créer un programme - plus complet que celui proposé sur Ti-Planet - afin de le partager avec la communauté.
1ère étape : Mise en place de l'algorithme dans Algobox - pas de soucis à noter. Le programme vise à déterminer une solution unique (f(x)=k), avec k, qui peut être égal 0 ou à un autre nombre.
Note : Le programme de dichotomie proposé sur Ti-planet ne permet le calcul qu'avec k=0, voilà pourquoi je souhaite créer un programme remplissant cette fonction.

Voici le code sur Algobox :

Variables
a est du type nombre
b est du type nombre
k est du type nombre
n est du type nombre
c est du type nombre
d est du type nombre
e est du type nombre

Début algorithme :
Lire a
Lire b
Lire k
Lire n
c prend la valeur F1(a)
Tant que ((b-a)>pow(10,-n)) FAIRE
Début tant que
d prend la valeur (a+b)/2
e prend la valeur F1(d)
Si ((k-e)*(k-c)<0) Alors
Début si
b prend la valeur d
Fin si
Sinon
Début sinon
a prend la valeur d
Fin sinon
Fin tant que

Afficher a
Pause
Afficher b

Bref, le programme fonctionne bien sur Algobox.
Exemple : je souhaite calculer la valeur de alpha lorsque f(x)=x^3+x=4 sur [1;2]

Ça me donne :
J'entre F1(x)=pow(x,3)+x, l'algorithme se lance puis j'entre les valeurs demandées : 1 en a, 2 en b, 4 en k, 5 en n. n correspond à la précision du calcul.
On obtient alors alpha = 1,37879.

Encore novice en programmation Nspire, quelqu'un pourrait-il m'aider à adapter ce programme ?

Un grand merci pour votre aide !!
User avatar
Lokinol
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Level up: 97.1%
 
Posts: 70
Joined: 12 Feb 2012, 21:54
Gender: Not specified
Calculator(s):
MyCalcs profile

Re: Adapter un programme de dichotomie AlgoBox

Unread postby Excale » 18 Nov 2012, 20:19

Traduit littéralement :)
(f est la fonction, v la variable avec laquelle tu travailles (très souvent x)
Code: Select all
Define dichoto(f,v,a,b,k,n)=
Prgm
Local c,d,e
c:=f|v=a
While b-a>10^(-n)
d:=((a+b)/(2))
e:=f|v=d
  If (k-e)*(k-c)<0 Then
    b:=d
  Else
    a:=d
  EndIf
EndWhile
Disp "a=",a," ; b=",b
EndPrgm

(j'espère ne pas avoir fait d'erreur)
Maintenant, je te laisse comprendre comment ça marche :P.
User avatar
ExcaleAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 3.9%
 
Posts: 2955
Images: 3
Joined: 10 Sep 2010, 00:00
Gender: Male
Calculator(s):
MyCalcs profile

Re: Adapter un programme de dichotomie AlgoBox

Unread postby Bisam » 18 Nov 2012, 20:44

Pour gagner légèrement en vitesse d'exécution, il est plus efficace de ne faire qu'une seule fois le calcul de 10^(-n).
Le programme devient alors :
Code: Select all
Define dichoto(f,v,a,b,k,n)=
Prgm
Local c,d,e,eps
c:=f|v=a
eps:=10^(-n)
While b-a>eps
d:=((a+b)/(2))
e:=f|v=d
  If (k-e)*(k-c)<0 Then
    b:=d
  Else
    a:=d
  EndIf
EndWhile
Disp "a=",a," ; b=",b
EndPrgm
User avatar
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 69.6%
 
Posts: 5670
Joined: 11 Mar 2008, 00:00
Location: Lyon
Gender: Male
Calculator(s):
MyCalcs profile

Re: Adapter un programme de dichotomie AlgoBox

Unread postby Lokinol » 18 Nov 2012, 22:02

Merci Bisam et Excale pour votre être très précieuse !
Cependant, j'ai copié le programme dans un classeur, j'ai essayé de le lancer sur Ti-Nspire en ayant placé le classeur dans MyLib histoire de l'utiliser en tant que fonction.
Donc j'ai dichoto\dichoto(). Dans les parenthèses, je met : (x^3+x,1,2,4,10^-5), mais le programme me dit qu'il y a trop d'arguments.

Pouvez-vous m'éclairer ?

Merci encore une fois pour votre aide !
User avatar
Lokinol
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Level up: 97.1%
 
Posts: 70
Joined: 12 Feb 2012, 21:54
Gender: Not specified
Calculator(s):
MyCalcs profile

Re: Adapter un programme de dichotomie AlgoBox

Unread postby Excale » 18 Nov 2012, 22:03

As tu bien pensé à remplir la première ligne?

Code: Select all
Define dichoto(f,v,a,b,k,n)=
User avatar
ExcaleAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 3.9%
 
Posts: 2955
Images: 3
Joined: 10 Sep 2010, 00:00
Gender: Male
Calculator(s):
MyCalcs profile

Re: Adapter un programme de dichotomie AlgoBox

Unread postby Bisam » 19 Nov 2012, 08:48

Par ailleurs, c'est
Code: Select all
dichoto(x^3+x,x,1,2,4,5)
que tu dois exécuter et non
Code: Select all
dichoto(x^3+x,1,2,4,10^(-5))
User avatar
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 69.6%
 
Posts: 5670
Joined: 11 Mar 2008, 00:00
Location: Lyon
Gender: Male
Calculator(s):
MyCalcs profile

Re: Adapter un programme de dichotomie AlgoBox

Unread postby Lokinol » 20 Nov 2012, 01:18

Bonjour à vous, Bisam et Excale,

Je vous confirme, à tous les deux, que j'ai copié le code de Bisam que j'ai transféré dans le dossier MyLIb de ma Nspire.
Par ailleurs, lorsque j'appelle la fonction dichoto\dichoto dans une page de calcul, entre parenthèses, je mets par exemple : dichoto(x^3+x,1,2,4,10^(-5))
; mais pas moyen, toujours cette histoire de "Il y a trop d'arguments".

Avez-vous testé sur votre nspire si le programme fonctionnait ?

Bien à vous,
Un grand merci pour votre aide précieuse.
User avatar
Lokinol
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Level up: 97.1%
 
Posts: 70
Joined: 12 Feb 2012, 21:54
Gender: Not specified
Calculator(s):
MyCalcs profile

Re: Adapter un programme de dichotomie AlgoBox

Unread postby Levak » 20 Nov 2012, 08:37

Lokinol wrote:Bonjour à vous, Bisam et Excale,

Je vous confirme, à tous les deux, que j'ai copié le code de Bisam que j'ai transféré dans le dossier MyLIb de ma Nspire.
Par ailleurs, lorsque j'appelle la fonction dichoto\dichoto dans une page de calcul, entre parenthèses, je mets par exemple : dichoto(x^3+x,1,2,4,10^(-5))
; mais pas moyen, toujours cette histoire de "Il y a trop d'arguments".

Avez-vous testé sur votre nspire si le programme fonctionnait ?

Bien à vous,
Un grand merci pour votre aide précieuse.


Je te retourne la question : tu mets toujours un nombre invalide d'arguments comme le précise le post de Bisam juste au dessus.
Par ailleurs, as-tu pensé à faire Ctrl+B sur l'éditeur de programme ?
Responsable design/graphique de TI-Planet
I do not get mad at people, I just want them to learn the way I learnt.
ImageTNOC [topic][DL]
nClock [topic][DL]
HideManager [topic][DL]
ZLock [topic][DL]
Theme Editor [topic][DL]
Mes programmes
User avatar
LevakAdmin
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 98.9%
 
Posts: 6414
Images: 22
Joined: 27 Nov 2008, 00:00
Location: 0x1AACC355
Gender: Male
Calculator(s):
MyCalcs profile
Class: BAC+5: Epita (ING3)

Re: Adapter un programme de dichotomie AlgoBox

Unread postby Bisam » 20 Nov 2012, 12:34

Il y a 2 erreurs :
- tu oublies le 2ème argument, la variable "x"... mais du coup, tu devrais avoir un problème "pas assez d'arguments" et non "trop d'arguments".
- tu te trompes dans le 6ème argument : il faut mettre 5 et non 10^(-5).

C'est ce que j'ai dit plus haut... mais visiblement tu n'avais pas compris.
Pense aussi à faire CTRL+B à chaque fois que tu modifies quelque chose au programme avant de le retester.
User avatar
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 69.6%
 
Posts: 5670
Joined: 11 Mar 2008, 00:00
Location: Lyon
Gender: Male
Calculator(s):
MyCalcs profile

Re: Adapter un programme de dichotomie AlgoBox

Unread postby Lokinol » 20 Nov 2012, 18:57

Merci à tous pour vos conseils ... qui ont finalement abouti à la résolution de mon problème et à l'adaptation du programme de dichotomie que j'avais crée sur AlgoBox !

(Je n'oublierais pas de vérifier la structure du code du programme après l'avoir copié/collé dans un classeur. En effet, un While se baladait sur les premières lignes, de ce fait, c'était toute l'exécution du programme qui était bloquée.)

Merci encore ! Il ne me reste maintenant plus qu'à comprendre le langage de programmation et les adaptations nécessaires entre un programme Algobox et celui en Basic ;).
User avatar
Lokinol
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Level up: 97.1%
 
Posts: 70
Joined: 12 Feb 2012, 21:54
Gender: Not specified
Calculator(s):
MyCalcs profile

Next

Return to Nspire-Basic

Who is online

Users browsing this forum: ClaudeBot [spider] and 2 guests

-
Search
-
Social TI-Planet
-
Featured topics
Comparaisons des meilleurs prix pour acheter sa calculatrice !
"1 calculatrice pour tous", le programme solidaire de Texas Instruments. Reçois gratuitement et sans aucune obligation d'achat, 5 calculatrices couleur programmables en Python à donner aux élèves les plus nécessiteux de ton lycée. Tu peux recevoir au choix 5 TI-82 Advanced Edition Python ou bien 5 TI-83 Premium CE Edition Python.
Enseignant(e), reçois gratuitement 1 exemplaire de test de la TI-82 Advanced Edition Python. À demander d'ici le 31 décembre 2024.
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
1234
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...
Donate
Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
819 utilisateurs:
>745 invités
>65 membres
>9 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)