Aller au contenu

Messages recommandés

Posté(e)

Oui alors :

 

# listes des données à traiter (c'est un peu inutile ici mais comme tu veux des listes....)
listeA=[1,-2] # coordonnées du point A
listen=[2,-3] # coordonnées du VECTEUR normal n


# l'équation de la droite passant par A(xA;yA) dont n(a,b) est un vecteur normal
# est de la forme ax + by + c = 0
print("a coefficient de x :", listen[0])
print("b coefficient de y :", listen[1])

# calcul de c
c= (listen[0]*listeA[0]+listen[1]*listeA[1])
print("c = ",c)

 

 

Sauf que le programme affiche c = 8 au lieu de -8

listeA=[1,-2] 
listen=[2,-3] 
print("a coefficient de x :", listen[0])
print("b coefficient de y :", listen[1])
c= (listen[0]*listeA[0]+listen[1]*listeA[1])
print("c = ",c)

Posté(e)

Merci

C'est bon 

listeA=[1,-2] 
listen=[2,-3] 
print("a coefficient de x :", listen[0])
print("b coefficient de y :", listen[1])
c= -(listen[0]*listeA[0]+listen[1]*listeA[1])
print("c = ",c)

 

image.png.77c839ed0f8225e8086e37e21c6b2f5a.png

Il manque juste à dire qu'il n'existe aucune droite si il y a un vecteur nul

  • E-Bahut
Posté(e)
  Le 16/01/2021 à 19:37, Clemmellian a dit :

Merci

C'est bon 

listeA=[1,-2] 
listen=[2,-3] 
print("a coefficient de x :", listen[0])
print("b coefficient de y :", listen[1])
c= -(listen[0]*listeA[0]+listen[1]*listeA[1])
print("c = ",c)

 

image.png.77c839ed0f8225e8086e37e21c6b2f5a.png

Il manque juste à dire qu'il n'existe aucune droite si il y a un vecteur nul

Expand  

Merci à Jules qui est intervenu pendant que dégustais ma soupe bien chaude :D.

Bon alors on complète avec ce fichu cas particulier...

Je te suggère de reprendre ce que tu avais proposé au départ avec un test IF..... puis ELSE ... qui était plutôt bien vu !! Et te souvenir que pour afficher un message l'instruction est print().

Essaye de remettre ce test en place dans ton script et exécute ton script, pour voir s'il tourne correctement quand le vecteur n a pour coordonnées (0;0).

On attend pour appeler les secours si ça plante pour toi 🤓.

 

Je découvre ton dernier message... tu es en bonne voie !!

Posté(e)

Alors :

listeA=[1,-2] 
listen=[2,-3]
if listen==[0,0]:
     print("aucune équation de droite possible")
else:
    print("a coefficient de x :", listen[0])
    print("b coefficient de y :", listen[1])
c= -(listen[0]*listeA[0]+listen[1]*listeA[1])
print("c = ",c)

  • E-Bahut
Posté(e)

image.png.17cfa03e15558f621cc77e1b3ecd0fe5.png

Oui il marche mais quand le vecteur est le vecteur nul, ,il y a un c=0 qui s'affiche... et qui ne devrait pas 🤓 !

Pas grave; il suffit d'indenter les 2 dernières lignes pour qu'elles ne soient exécutées que si le vecteur n'est pas nul donc dans la partie else du test.

Bon, je pense que tu as fait du bon travail 🙂.

Je t'envoie un script équivalent à celui-ci mais un peu plus élaboré... il permet comme je crois Pzorba (?) te l'avait suggéré, de saisir les données à la volée (quand on lance le programme). Copie le, fait le tourner et essaye de comprendre en quoi il diffère.

xA=float(input("abscisse xA du point A ? "))
yA=float(input("ordonnée yA du point A ? "))
a=float(input("1ère coordonnée a du vecteur normal n ? "))
b=float(input("2ème coordonnée b du vecteur normal n ? "))


if a==0 and b==0:
    print("n est le vecteur nul donc aucune équation de droite possible")
else:
    c= -(a*xA +b*yA)
 # affichage des résultats
    print()
    print("Dans l'équation ax+by+c = 0")
    print ("       le coefficient a de x est :    ",a)
    print ("       le coefficient b de y est :    ",b)
    print ("       le coefficient constant c est :",c)
    print()
    print()
    print("     ",round(a),"*x + ",round(b),"*y + ",round(c)," = 0",sep="")

 

Posté(e)

listeA=[1,-2] 
listen=[2,-3]
if listen==[0,0]:
     print("aucune équation de droite possible")
else:
    print("a coefficient de x :", listen[0])
    print("b coefficient de y :", listen[1])
    c= -(listen[0]*listeA[0]+listen[1]*listeA[1])
    print("c = ",c)

 

Comme ceci ?

  • E-Bahut
Posté(e)

Bonjour PAVE,

J'avais également pensé à un affichage de l'équation, mais j'ai abandonné. Tu as essayé ton script

* avec une coordonnée nulle pour le vecteur ?

* avec une ordonnée négative pour le vecteur normal ?

*0 avec un résultat négatif pour c ?

Je ne suis pas non plus d'accord avec l'utilisation de round, quid du cas des coordonnées non entières ?

Tu comprends pourquoi je n'ai pas persisté. En fait, il faudrait créer une fonction qui retourne une chaine pour les produits a*x, b*y et pour c, tenant compte de tous les cas possibles. Ceci dépasse évidemment largement le contexte de l'exercice.

A la rigueur, pour le script de base de l'élève, on aurait pu préciser après le else la forme de l'équation ax+by+c=0.

  • E-Bahut
Posté(e)

Bonjour Jules,

Tu es trop exigeant :D !

Moi qui était si fier d'avoir écrit l'équation de la droite 😪.

Mais reconnait quand même que dans les cas particuliers que tu soulèves 🏋️‍♂️, ce qui s'affiche n'est pas faux et que la présence des parenthèses autour des coefficients nuls ou négatifs rend l'expression tout à fait.... lisible et mathématiquement correcte.

C'est sûr qu'en multipliant les tests et en créant une belle chaine de caractères, on pourrait faire mieux 😇 mais bon, c'est dimanche et on n'est pas payés plus.

Amicalement.

image.png.b615e7998a7f3270fb4c262da5616ae6.png

 

@ Clemme

  Le 17/01/2021 à 10:19, Clemmellian a dit :

Comme ceci ?

Expand  

Essaye et tu verras... 🤓

  • E-Bahut
Posté(e)
  Le 17/01/2021 à 11:46, PAVE a dit :

Mais reconnait quand même que dans les cas particuliers que tu soulèves 🏋️‍♂️, ce qui s'affiche n'est pas faux et que la présence des parenthèses autour des coefficients nuls ou négatifs rend l'expression tout à fait.... lisible et mathématiquement correcte.

Expand  

Je ne peux pas juger sur le "mathématiquement correcte", n'ayant pas été prof de maths. Moi, cette écriture me choque un peu, mais c'est un avis personnel, donc qui n'engage que moi. Il faudrait avoir l'avis d'un enseignant de la matière, dans le contexte de l'enseignement aux élèves.

Cela dit, l'essentiel, c'est que Clemmellian s'en sorte et surtout, assimile quelques subtilités du langage Python.

  • E-Bahut
Posté(e)

 

  Citation

print("L'équation est donc : (",round(a,4),")*x +(",round(b,4),")*y+(",round(c,4),")= 0",sep="")

Expand  

Concernant l'utilisation de la fonction round(), il est vrai qu'utilisée sans argument (comme dans mon programme initial), l'affichage n'est pas acceptable lorsque les données ne sont pas entières. Avec un argument comme ci-dessus, c'est nettement mieux....

image.png.b9358e26e714a8dbb7fde564a5c044ed.png

mais avec des données entières (comme dans l'exemple de l'énoncé), les coefficients entiers s'affichent...  avec une décimale égale à 0 !!

image.png.6f20b32b0dff67b4fbc585e979fe9c0a.png

On n'est jamais content 😬.

  • E-Bahut
Posté(e)
  Le 17/01/2021 à 12:49, PAVE a dit :

mais avec des données entières (comme dans l'exemple de l'énoncé), les coefficients entiers s'affichent...  avec une décimale égale à 0 !!

 

Expand  

C'est ce qu'on obtient également sans utiliser "round", donc simplement avec print(a,"*x + ",b,"*y + ",c," = 0",sep="").

C'est le premier problème que j'avais détecté en essayant d'afficher l'équation avec des valeurs entières. Du coup, j'avais utilisé str :

 print(str(a)+"*x + "+str(b)+"*y + "+str(c)+" = 0")

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...
spam filtering
spam filtering