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 !!
Adapter un programme de dichotomie AlgoBox
22 posts
• Page 1 of 3 • 1, 2, 3
-
Lokinol
Niveau 9: IC (Compteur Infatigable)- Posts: 70
- Joined: 12 Feb 2012, 21:54
- Gender:
- Calculator(s):→ MyCalcs profile
Re: Adapter un programme de dichotomie AlgoBox
Traduit littéralement
(f est la fonction, v la variable avec laquelle tu travailles (très souvent x)
(j'espère ne pas avoir fait d'erreur)
Maintenant, je te laisse comprendre comment ça marche .
(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 .
-
ExcaleAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)- Posts: 2955
- Images: 3
- Joined: 10 Sep 2010, 00:00
- Gender:
- Calculator(s):→ MyCalcs profile
Re: Adapter un programme de dichotomie AlgoBox
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 :
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
-
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)- Posts: 5670
- Joined: 11 Mar 2008, 00:00
- Location: Lyon
- Gender:
- Calculator(s):→ MyCalcs profile
Re: Adapter un programme de dichotomie AlgoBox
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 !
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 !
-
Lokinol
Niveau 9: IC (Compteur Infatigable)- Posts: 70
- Joined: 12 Feb 2012, 21:54
- Gender:
- Calculator(s):→ MyCalcs profile
-
ExcaleAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)- Posts: 2955
- Images: 3
- Joined: 10 Sep 2010, 00:00
- Gender:
- Calculator(s):→ MyCalcs profile
Re: Adapter un programme de dichotomie AlgoBox
Par ailleurs, c'est
- Code: Select all
dichoto(x^3+x,x,1,2,4,5)
- Code: Select all
dichoto(x^3+x,1,2,4,10^(-5))
-
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)- Posts: 5670
- Joined: 11 Mar 2008, 00:00
- Location: Lyon
- Gender:
- Calculator(s):→ MyCalcs profile
Re: Adapter un programme de dichotomie AlgoBox
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 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.
-
Lokinol
Niveau 9: IC (Compteur Infatigable)- Posts: 70
- Joined: 12 Feb 2012, 21:54
- Gender:
- Calculator(s):→ MyCalcs profile
Re: Adapter un programme de dichotomie AlgoBox
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 ?
-
LevakAdmin
Niveau 14: CI (Calculateur de l'Infini)- Posts: 6414
- Images: 22
- Joined: 27 Nov 2008, 00:00
- Location: 0x1AACC355
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: BAC+5: Epita (ING3)
Re: Adapter un programme de dichotomie AlgoBox
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.
- 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.
-
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)- Posts: 5670
- Joined: 11 Mar 2008, 00:00
- Location: Lyon
- Gender:
- Calculator(s):→ MyCalcs profile
Re: Adapter un programme de dichotomie AlgoBox
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 .
(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 .
-
Lokinol
Niveau 9: IC (Compteur Infatigable)- Posts: 70
- Joined: 12 Feb 2012, 21:54
- Gender:
- Calculator(s):→ MyCalcs profile
22 posts
• Page 1 of 3 • 1, 2, 3
Who is online
Users browsing this forum: ClaudeBot [spider] and 2 guests