Inscription / Connexion Nouveau Sujet
Niveau première
Partager :

Algorithme Python

Posté par
CaroA
03-03-12 à 19:01

Bonjour, j'ai un algorithme en python qui teste si deux vecteurs sont orthogonaux et que je dois modifier au fil des questions.
Voici le programme :
def ortho (x1,y1,x2,y2)
    ps=x1*x2-y1*y2
    if ps=0
        print "oui"
    else :
         print "non"

Voici les questions auxquelles je n'arrive pas à répondre :
1)Pourquoi est-il impossible d'utiliser les notations (x;y) et (x',y') dans le programme?
2)Trouver les deux erreurs qui se trouvent dans le programme.
3)Modifier cet algorithme pour qu'il donne la norme des deux vecteurs de coordonnées (x1;y1) et (x2;y2), sachant qu'en python, l'exposant se note **.
Par exemple, 3² s'écrira 3**2 et 3 s'écrira 3**0.5.

Pour la question 1, je n'y arrive pas car je ne connais pas le langage python.
Pour la question 2, je dirais que l'une des deux erreurs est : ps=x1*x2-y1*y2 qui devrait être écrit ps=y1*y2-x1-x2.
Pour la question 3, je suis complètement perdue aussi.
C'est pour cela que je vous demande de l'aide, en espérant que mon énoncé soit clair..
Merci d'avance.
CaroA

Posté par
pgeod
re : Algorithme Python 03-03-12 à 19:20

tu peux faire la démarche d'apprendre... un peu -->

Posté par
CaroA
re : Algorithme Python 03-03-12 à 19:28

oui merci, mais j'ai déjà regardé des sites là dessus et si je pose la question, c'est que j'ai besoin d'aide pour comprendre.

Posté par
pgeod
re : Algorithme Python 03-03-12 à 19:39

y'a qu'à lire le tutorial. tu pousses..

Sous Python, les noms de variables doivent en outre obéir à quelques règles simples :
• Un nom de variable est une séquence de lettres (a -> z , A -> Z) et de chiffres (0 > 9), qui doit toujours commencer par une lettre.
• Seules les lettres ordinaires sont autorisées. Les lettres accentuées, les cédilles, les espaces, les
caractères spéciaux tels que $, #, @, etc. sont interdits, à l'exception du caractère _ (souligné).

Posté par
CaroA
re : Algorithme Python 03-03-12 à 19:47

Oui je suis d'accord mais cela ne me donne pas la réponse à mon problème puisqu'en l'occurrence, il n'y a aucune lettre accentuée dans le programme, ni de caractères spéciaux. Aussi, pour la question 1, je ne sais toujours pas pourquoi nous ne pouvons pas écrire (x;y) même en ayant lu le tutorial. Enfin, pour trouver la norme de deux vecteurs, je sais qu'il faut utiliser le produit scalaire et donc se servir de .= norme de *norme de * cos(;). Mais ici, il faut le traduire en algorithme, ce qui n'a donc rien à voir avec cela.

Posté par
pgeod
re : Algorithme Python 03-03-12 à 19:56


(x;y) ne peut pas être un nom de variable
puisqu'il contient les caractères ( ; et )

Posté par
CaroA
re : Algorithme Python 03-03-12 à 20:10

Ah d'accord merci. Mais pourtant la parenthèse est autorisée d'habitude non?

Posté par
pgeod
re : Algorithme Python 03-03-12 à 20:12

pas pour nommer une variable.

Posté par
CaroA
re : Algorithme Python 03-03-12 à 20:14

OK. Mais donc les deux erreurs de la 2) sont celles de la question 1) (les parenthèses et les points virgules)?

Posté par
pgeod
re : Algorithme Python 03-03-12 à 20:19

non.

puisque justement les notations (x;y) et (x',y')
ne sont pas employées dans le programme.

la première erreur concerne la formule :  ps=x1*x2-y1*y2
le seconde concerne la syntaxe de :  if ps=0

Posté par
CaroA
re : Algorithme Python 03-03-12 à 20:26

Comment ça? On ne peut pas mettre 2 lettres à la suite au début d'une formule?
Et pour la syntaxe de if ps=0 est-ce que c'est parce que la ligne d'en tête d'un bloc d'instructions se termine toujours par ":" ?

Posté par
pgeod
re : Algorithme Python 03-03-12 à 20:30

??

et c'est quoi la formule du produit scalaire (celle qui est dans ton livre de maths) ?

Posté par
CaroA
re : Algorithme Python 03-03-12 à 20:33

.= norme de *norme de *cos(,)

Posté par
pgeod
re : Algorithme Python 03-03-12 à 20:34

non pas celle là.
celle avec les coordonnées des vecteurs u(x; y) et v(x', y')

Posté par
CaroA
re : Algorithme Python 03-03-12 à 20:37

.=xx'+yy'

Posté par
pgeod
re : Algorithme Python 03-03-12 à 20:38

oui.

et maintenant avec u(x1; y1) et v(x2; y2) on a quoi ?

Posté par
CaroA
re : Algorithme Python 03-03-12 à 20:47

On a : .=x1x2+y1y2
C'est ça?

Posté par
CaroA
re : Algorithme Python 03-03-12 à 20:50

J'ai donc juste ça à modifier dans le programme pour que cela soit correcte?

Posté par
pgeod
re : Algorithme Python 03-03-12 à 20:57

oui.
il faut modifier le signe - du programme.

Posté par
CaroA
re : Algorithme Python 03-03-12 à 20:59

D'accord. Merci beaucoup! Bonne soirée

Posté par
pgeod
re : Algorithme Python 03-03-12 à 20:59

Posté par
CaroA
re : Algorithme Python 03-03-12 à 21:00

euh juste pour if ps=0 je ne comprends pas ce qui cloche?!

Posté par
pgeod
re : Algorithme Python 03-03-12 à 21:05

tu as remarqué que la ligne  if ps=0 doit se terminer par ":"
donc cela fait bien :        if ps=0 :

mais ce n'est pas tout. En python, le signe "=" est le signe d'affectation
d'une valeur à une variable, ce n'est pas le signe d'égalité dans
une comparaison ou un test... c'est donc autre chose.

Posté par
CaroA
re : Algorithme Python 03-03-12 à 21:08

Ah oui! Donc cela fait :
if ps==0 :

Posté par
CaroA
re : Algorithme Python 03-03-12 à 21:13

mais le problème c'est que pour la 3) il faut que je rajoute quelque chose pour que cela me donne la norme des vecteurs non?
parce que là il teste l'orthogonalité des deux vecteurs...

Posté par
pgeod
re : Algorithme Python 03-03-12 à 21:24

ben oui. faut modifier l'algorithme.
et c'est qoui la formule de la norme d'un vecteur u(x1, y1) ?

Posté par
CaroA
re : Algorithme Python 03-03-12 à 21:35

norme de = (x²+y²)

Merci pour votre aide!

Posté par
pgeod
re : Algorithme Python 03-03-12 à 21:37

oui.

et donc traduit en Python :
d1 = x1..... (l'exposant se note **)

Posté par
CaroA
re : Algorithme Python 03-03-12 à 21:43

d c'est pour la norme?
d1=(x1**2+y**2)**0.5

Posté par
pgeod
re : Algorithme Python 03-03-12 à 21:46

c'est bon (y1 à la place de y)

d1... parce qu'il faut bien donner un nom à la variable
qui va contenir la valeur de la norme (ou distance) du vecteur v1
tu peux l'appeler toto = (x1**2+y1**2)**0.5
mais c'est moins parlant comme nom.

Posté par
CaroA
re : Algorithme Python 03-03-12 à 21:55

oui c'est sûr.. bon donc je vais mettre ca dans mon programme
cela donne alors:
def ortho (x1,y1,x2,y2)
    d1=(x1**2+y1**2)**0.5
    d2=(x2**2+y2**2)**0.5
    print d1 et d2

Posté par
pgeod
re : Algorithme Python 03-03-12 à 22:01

et ton programme, tu l'appelles alors :..

def norme (x1,y1,x2,y2)
    d1=(x1**2+y1**2)**0.5
    .....
    .......

..

Posté par
CaroA
re : Algorithme Python 03-03-12 à 22:04

je l'appelle norme mais le nom je le met où?
et après j'ai
def norme (x1,y1,x2,y2)
    d1=(x1**2+y1**2)**0.5
    d2=(x2**2+y2**2)**0.5
    print d1 et d2

Posté par
pgeod
re : Algorithme Python 04-03-12 à 13:59

oui, c'est ça.
la routine s'appelle ainsi "norme"

Posté par
CaroA
re : Algorithme Python 04-03-12 à 14:36

Merci beaucoup!

Posté par
pgeod
re : Algorithme Python 04-03-12 à 14:53



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Inscription gratuite

Fiches en rapport

parmi 1675 fiches de maths

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !