Problème d'écriture complexe dans algo pour 2nd degré

Discussion sur l'enseignement de l'algorithmique avec Xcas au lycee
toushussss
Messages : 3
Inscription : jeu. nov. 01, 2012 8:04 am

Problème d'écriture complexe dans algo pour 2nd degré

Message par toushussss » jeu. nov. 01, 2012 12:26 pm

Bonjour, je souhaite créer un algo sur xcas qui me retourne les solutions d'une equation du 2nd degré selon la valeur de delta (D) . Pour D< 0 j'ai rentré cette ligne de code :
si D < 0 alors
z1 : = (-b-i*sqrt(-D))/(2*a)
z2 : = (-b+i*sqrt(-D))/(2*a)
Afficher ("z1= "); afficher z1
Afficher ("z2= "); afficher z2

Lorsque je rentre la fct impossible d'obtenir de résultat cela me retourne : unable to check test error : bad argument value

Alors que pour une equation à solution réel cela fonctionne avec les lignes de code que j' ai tapé pour D> 0 et D=0
Mon erreur est donc ds la partie décrite
Je ne vois pas ou est mon erreur
Merci par avance pour l'aide
bonne journée

alb
Messages : 1320
Inscription : ven. août 28, 2009 3:34 pm

Re: Problème d'écriture complexe dans algo pour 2nd degré

Message par alb » jeu. nov. 01, 2012 1:32 pm

1/ tu peux ajouter afficher(D) juste avant le si D<0 pour voir la valeur de D
2/ tu peux utiliser debug(ta_fonction(a,b,c)) et suivre l'évolution des variables
3/ tu peux donner ton code en entier !

RQ: Afficher ("z1= "); afficher z1 ; plus court: afficher("z1="+z1)

toushussss
Messages : 3
Inscription : jeu. nov. 01, 2012 8:04 am

Re: Problème d'écriture complexe dans algo pour 2nd degré

Message par toushussss » jeu. nov. 01, 2012 2:09 pm

afficher( "a ="); saisir (a);afficher (a);
afficher( "b ="); saisir (b);afficher (b);
afficher( "c ="); saisir (c);afficher (c);
D:= b^2-4*a*c;
si D > 0 alors
x1:=(-b-sqrt(D))/(2*a);
x2:=(-b+sqrt(D))/(2*a);
afficher("x1 ="); afficher(x1);
afficher("x2 ="); afficher(x2);
Sinon
Si D==0 alors
x:=-b/(2*a);
afficher("x1=x2= ");
afficher (x);
Sinon
Si D <0 alors
z1:=(-b-i*sqrt(-D))/(2*a);
z2:=(-b+i*sqrt(-D))/(2*a);
afficher("z1 ="); afficher(z1);
afficher("z2 ="); afficher(z2);
Fsi
Fsi
Fsi

Voilà le code en entier! Donc tant que mon equation admet des solutions réelles ça fonctionne
Et qd je suis dans le domaine des complexes donc à partir D < 0 l'algo ne tourne plus
Merci par avance

alb
Messages : 1320
Inscription : ven. août 28, 2009 3:34 pm

Re: Problème d'écriture complexe dans algo pour 2nd degré

Message par alb » jeu. nov. 01, 2012 2:50 pm

avec des minuscules au début de toutes les lignes j'obtiens les bonnes réponses avec a=1,b=2,c=3 !?
Avec quelles valeurs de a,b,c as-tu le pb ?
RQ z1:=simplifier((-b-i*sqrt(-D))/(2*a)); permet d'avoir un résultat simplifié.

parisse
Messages : 5731
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: Problème d'écriture complexe dans algo pour 2nd degré

Message par parisse » jeu. nov. 01, 2012 5:49 pm

Oui, ça marche avec des minuscules et ces valeurs. Sinon, pour des TS, ce serait peut-etre une bonne idée de réécrire une fonction au lieu de afficher/saisir, ce qui donnerait

Code : Tout sélectionner

second_degre(a,b,c):={
  local D,x1,x2,z1,z2;
  D:= b^2-4*a*c;
  si D > 0 alors
    x1:=(-b-sqrt(D))/(2*a);
    x2:=(-b+sqrt(D))/(2*a);
   afficher("2 solutions réelles");
    return x1,x2;
  fsi;
  si D==0 alors
    afficher("1 solution double");
    return -b/(2*a);
  fsi;
  si D <0 alors
    z1:=(-b-i*sqrt(-D))/(2*a);
    z2:=(-b+i*sqrt(-D))/(2*a);
   afficher("2 solutions complexes conjuguées");
    return z1,z2;
  fsi;
}:;
On peut alors exécuter le code pas à pas avec par exemple debug(second_degre(1,2,3)) ou surtout utiliser la fonction dans un autre programme (ce qui n'est pas possible avec des suites d'instructions utilisant des saisir au lieu de passer des arguments et afficher au lieu de renvoyer une valeur).

toushussss
Messages : 3
Inscription : jeu. nov. 01, 2012 8:04 am

Re: Problème d'écriture complexe dans algo pour 2nd degré

Message par toushussss » ven. nov. 02, 2012 11:50 am

Bonjour à tous. Merci pour vos infos j'ai pu résoudre mon problème :P
À plus

Répondre