Page 1 of 1

Manipuler les sortie de la fonction solve

Unread postPosted: 08 Dec 2016, 00:38
by bosskay
Bonjour, comme il est indiquer dans le titre j'aimerais manipuler les sortie de la fonction solve, en particulier quand solve renvoie false :) !
J'aimerais faire un programme avec une condition d'entré du style: SI solve(blablabla) renvoie false ALORS...
Voici mon programme:
Code: Select all
Define ccp(n)
:for i,1,n
:solve(mode​(3^x,11)=1,x​)->d
:if d=false then
:goto k
:else
:goto w
:endif
:lbl k
:endfor
:lbl w
:disp d

quand j'essaye ccp(11), le programme me dit que le test n'a pas donné de true ou false...
Ce que je trouve plutôt dommage
Donc je vous solicite pour m'aider a finaliser mon programme

PS:
Autre question, j'aimerais savoir comment utiliser les sortie de solve quand solve renvoie une valeur, style, pouvoir stocker les valeur de x(une ou plusieurs) dans une liste, se serais sympa :) !

Merci pour tout cordialement, bosskay

Re: Manipuler les sortie de la fonction solve

Unread postPosted: 08 Dec 2016, 00:49
by Hamza.S
Code: Select all
If string(d)="false"...

les goto sont inutiles
Code: Select all
:if d=false then
:goto k
:else
:goto w
:endif
:lbl k

et Lbl w
toutes ces lignes sont inutile, tu peux faire directement :
Code: Select all
If string(d)/="false"
Exit


ce qui donne :
Code: Select all
Define ccp(n)=
Func
local i,d
for i,1,n
d:=solve(mod(3^x,11)=1,x​) © je suppose que le 3 et 11 sont des variables?
if string(d)="false"
Exit
endfor
d
EndFunc


il y a un hic dans ton code je trouve, la fonction solve ne renvoie pas tout le temps false lorsqu'elle ne trouve pas de solutions. souvent elle retourne ce que tu as rentré, si elle ne trouve pas de réponse par exemple solve(mod(3^x,11)=1,x) elle te retourne ton équation.

Re: Manipuler les sortie de la fonction solve

Unread postPosted: 08 Dec 2016, 08:06
by bosskay
Je pense que je n'ai pas été clair hier (la fatigue probablement)... Mais j'ai réussi a faire le programme que je voulais, en gros je voulais la plus petite puissance i>1 tel que: mod(3^i,11)=1, donc voici mon programme(qui marche):

Code: Select all
ccp(n)
Local i,d
For i,1,n
d := mod(3^i,11)=1
if d=false then
else
exit
endif
endfor
disp i


Voila ! Aussi j'ai une question si par exemple dans la calculette de rentre solve(-3x^2+2x+1=0,x) et que je veux récupérer les deux valeur de x pour les stocker dans une liste comment je fais ? (les valeur de x ici sont -1/3 et 1)

Re: Manipuler les sortie de la fonction solve

Unread postPosted: 08 Dec 2016, 09:54
by Hamza.S
Code: Select all
then...else...endif
sont inutiles.

Aussi j'ai une question si par exemple dans la calculette de rentre solve(-3x^2+2x+1=0,x) et que je veux récupérer les deux valeur de x pour les stocker dans une liste comment je fais ? (les valeur de x ici sont -1/3 et 1)


si tu utilises les bonnes fonctions faites pour, il est très facile de récupérer tes 2 valeurs.
regarde polyroots et cpolyroots

Re: Manipuler les sortie de la fonction solve

Unread postPosted: 08 Dec 2016, 10:35
by bosskay
Hamza.S wrote:
Code: Select all
then...else...endif
sont inutiles.


Oui effectivement:
Code: Select all
ccp(n)
Local i,d
For i,1,n
d := mod(3^i,11)=1
if d=true
exit
endfor
disp i

merci
Je viens de tester polyroot c'est intéressant mais je voudrais savoir comment exploiter les solution de N'IMPORTE quel équation(ou système) :) !

Re: Manipuler les sortie de la fonction solve

Unread postPosted: 08 Dec 2016, 15:26
by Hamza.S
pour les systèmes d'équations il y a linsolve
après si tu veux absolument utiliser solve, il y a une fonction faite par critor sinon la calculatrice à une fonction
fonction de critor : viewtopic.php?f=18&t=17772#p194438
méthode de Bisam : viewtopic.php?f=18&t=17772#p194513

Re: Manipuler les sortie de la fonction solve

Unread postPosted: 12 Dec 2016, 01:43
by Bisam
@bosskay : Tu devrais apprendre à utiliser la commande while.
Code: Select all
ccp(n)
Local i,d
i:=1
While mod(3^i,11)≠1
i:=i+1
EndWhile
Disp i