Page 1 of 1

Bezout Ti Nspire

Unread postPosted: 25 May 2015, 18:50
by bosskay
Salut j'essaye de faire un programme qui puisse résoudre des problème en spémath. En fait, le programme devrait proposer une solution pour trouver le couple (u,v) dans l'équation au + bv = d.
J'ai essayez de reproduire le programme de ce site:
http://homeomath2.imingo.net/bezout.htm
mais je me suis complètement loupé, je veux déjà fixé les base:
- Faire apparaître l'algorithme d’Euclide
- Faire apparaître le couple (u;v)
Une fois que je serait satisfait de ces deux chose je pourrais perfectionner le programme.
Voici ce que j'ai fais pour l'instant(ATTENTION C'EST TRÈS MOCHE):
Code: Select all
Define eucl()=
Prgm
:Request "a=",a₀
:Request "b=",b₀
:a₀→a
:b₀→b
:mod(a,b)→r₀
:r₀→r
:intDiv(a,b)→q₀
:q₀→q
:gcd(a,b)→w
:While r≠w
:Disp a,"=",b,"*",q,"+",r
:b→a
:r→b
:intDiv(a,b)→q
:mod(a,b)→r
:EndWhile
:Disp a,"=",b,"*",q,"+",r
:Disp r,"=",a,"-",b,"*",q
:Disp r₀,"=",a₀,"-",b₀,"*",q₀
:Disp r,"=",a,"-(",a₀,"-",b₀,"*",q₀,")*",q
:Disp b₀,"= x"
:Disp a₀,"= y"
:x→b₀
:y→a₀
:x-(y-x*q₀)*q→d
:Disp r,"=",d
:EndPrgm


Merci de bien vouloir m'aidez :) !
Surtout n'hésitez pas a m'expliquer le programme du site que j'ai proposer, si vous pouviez me répondre assez vite se serait cool parce que le BAC approche :D ! Merci d'avoir lu.

Re: Bezout Ti Nspire

Unread postPosted: 25 May 2015, 20:31
by bosskay
J'ai réessayé de nouveau, mais ca fait bugué ma calculette, ma calculette FREEZE, pouvez vous faire bien fonctionner ce programme svp:
Code: Select all
Define eucl()=
Prgm
:Request "a=",a₀
:Request "b=",b₀
:Request "c=",c
:1→p
:0→k
:0→g
:1→s
:While b≠0
:mod(a,b)→r
:intDiv(a,b)→q
:If r≠0 Then
:  Disp a,"=",q,"*",b,"+",r
:  b→a
:  r→b
:  p-q*g→nr
:  k-q*s→ns
:EndIf
:If r≠0 Then
:  Disp r,"=",nr,"*",a₀,"+",ns,"*",b₀
:EndIf
:g→p
:s→k
:nr→g
:ns→s
:EndWhile
:((p*c)/(gcd(a₀,b₀)))→l
:((k*c)/(gcd(a₀,b₀)))→m
:Disp "Solution particulière(",p,";",k,")"
:Disp "Solution de l'équation",a₀,"u+",b₀,"v=",c,":",l,";",m,")"
:EndPrgm


vous pouvez m'aidez ?

Re: Bezout Ti Nspire

Unread postPosted: 26 May 2015, 22:47
by Bisam
C'est difficile de te dire ce qui ne va pas... étant donné que les 2 algorithmes utilisés sont faux tels qu'ils sont écrits !

Le premier calcule correctement le pgcd, mais pas les coefficients de Bezout.
Le second est complètement faux à cause d'un test "si r est non nul" en plein milieu de la boucle et du coup crée une boucle infinie.

Je l'ai remanié et j'ai corrigé plusieurs fautes pour en faire ceci :
Code: Select all
Define eucl2(a₀,b₀,c)=
Func
:Local a,b,c,g,p,k,q,r,s,l,m,nr,ns
:a₀→a
:b₀→b
:1→p
:0→k
:0→g
:1→s
:While b≠0
:  mod(a,b)→r
:  intDiv(a,b)→q
:  Disp a,"=",q,"*",b,"+",r
:  b→a
:  r→b
:  p-q*g→nr
:  k-q*s→ns
:  If r≠0 Then
:    Disp r,"=",nr,"*",a,"+",ns,"*",b
:  EndIf
:  g→p
:  s→k
:  nr→g
:  ns→s
:EndWhile
:((p*c)/(a))→l
:((k*c)/(a))→m
:    Disp "Solution particulière : (",p,";",k,")"
:    Disp "Solution de l'équation",a₀,"u+",b₀,"v=",c,": (",l,";",m,")"
:Return {l,m}
:EndFunc

Re: Bezout Ti Nspire

Unread postPosted: 27 May 2015, 01:13
by bosskay
Resalut en faite j'ai vu ton programme, et y'avais du trois petit truc qui me gênais au niveau du programme lui même, il y a avait même une erreur grave, que j'ai rectifier. Une fois les erreurs modifier j'ai pu optimiser l'esthétique du programme, voici le code qui sera précédé d'une page de présentation et d'explication :) !
Code: Select all
Define eucl(a₀,b₀,c)=
Func
:Local a,b,c,g,p,k,q,r,s,l,m,nr,ns,u₀
:gcd(a₀,b₀)→u₀
:If u₀=1 Then
:Disp "Solution particulière de l'équation:"
:Disp a₀,"u +",b₀,"v =",u₀
:Disp "où, PGCD(",a₀,";",b₀,")= 1"
:Disp "                            "
:Disp "====== Calcul ======"
:a₀→a
:b₀→b
:1→p
:0→k
:0→g
:1→s
:While b≠0
:  mod(a,b)→r
:  intDiv(a,b)→q
:  Disp a,"=",q,"*",b,"+",r
:  b→a
:  r→b
:  p-q*g→nr
:  k-q*s→ns
:  If r≠0 Then
:    Disp r,"=",nr,"*",a₀,"+",ns,"*",b₀
:    Disp "--------------"
:  EndIf
:  g→p
:  s→k
:  nr→g
:  ns→s
:EndWhile
:Disp "-----------------"
:Disp "-----------------"
:((p*c)/(a))→l
:((k*c)/(a))→m
:Disp "Solution particulière(",p,";",k,")"
:Disp "Solution de l'équation:"
:Disp a₀,"u + ",b₀,"v =",c,"; ","(",l,";",m,")"
:Return {l,m}
:Else
:Disp "Cette équation n'a pas de solution dans ℕ car,"
:Disp c,"n'est pas multiple de pgcd(",a₀,";",b₀,")=",u₀
:EndIf
:EndFunc


Merci pour ta collaboration, merci pour ton aide :) !