Mathématiques avec Python et Ruby/Vecteurs en Ruby
Un vecteur peut être défini par ses deux coordonnées ou avec deux points (son origine et son extrémité). La seconde technique a été abordée dans le chapitre précédent; on utilisera donc ici la définition par les coordonnées:
Définition [modifier]
Le vecteur sera donc ici une classe Vecteur:
class Vecteur def initialize(x,y) @x, @y = x, y end end
Créer un vecteur, c'est donc lui donner une abscisse et une ordonnée. Comme on l'a vu dans le chapitre précédent, on peut maintenant en créer en Ruby avec
v=Vecteur.new(2,3)
Coordonnées [modifier]
On gère les coordonnées et l'affichage comme avec les points; il y a beaucoup de ressemblance entre les vecteurs et les points, ce sont les méthodes qui ne seront pas les mêmes.
Abscisse [modifier]
def x
@x
end
Pour lire ou modifier l'abscisse d'un vecteur u, on invoque u.x.
Ordonnée [modifier]
def y
@y
end
Affichage [modifier]
def to_s
'('+@x.to_s+';'+@y.to_s+')'
end
Il suffit pour afficher un vecteur u, de faire
puts(u)
Norme [modifier]
La norme d'un vecteur se calcule avec le théorème de Pythagore:
def norme
Math.hypot(@x,@y)
end
On a utilisé la norme d'un vecteur pour calculer des distances au chapitre précédent.
Opérations [modifier]
Il n'est pas d'usage de calculer le milieu de deux vecteurs, mais par contre, on n'additionne pas les points d'habitude (sauf avec GeoGebra). Mais les vecteurs, eux, on les additionne:
Somme [modifier]
La somme de deux vecteurs est définie par la somme des coordonnées:
def + (u)
Vecteur.new(@x+u.x,@y+u.y)
end
La notation est infixée ce qui fait que la somme de deux vecteurs u et v se note tout simplement u+v.
Produits [modifier]
Il y a deux multiplications intéressantes:
Par un nombre [modifier]
En multipliant un vecteur par un nombre, on obtient un vecteur:
def * (r)
Vecteur.new(@x*r,@y*r)
end
Seulement on est obligé de mettre le nombre après le vecteur (u*3 pour avoir le triple de u, alors que d'habitude on fait plutôt le contraire: 3u), et ce produit est moins intéressant que le suivant:
Par un vecteur [modifier]
En multipliant un vecteur par un vecteur, on obtient un nombre. Comme les nombres sont disposés comme les barreaux d'une échelle, on appelle cette multiplication, le produit scalaire des deux vecteurs:
def * (u)
@x*u.x+@y*u.y
end
On écrit u*v pour avoir le produit scalaire de u par v.
Tests [modifier]
De colinéarité [modifier]
Pour savoir si deux vecteurs sont colinéaires, on compare deux produits:
def colin(u)
@x*u.y==@y*u.x
end
Pour savoir si u et v sont colinéaires, on entre
puts(u.colin(v))
qui donnera true ou false selon que les vecteurs sont, ou non, colinéaires.
D'orthogonalité [modifier]
Pour savoir si deux vecteurs sont orthogonaux, on compare leur produit scalaire à 0:
def ortho(u)
self * u ==0
end
Exemple [modifier]
Dans l'exemple du chapitre précédent, le produit scalaire permet plus rapidement de vérifier que le triangle ABC est rectangle:
a=Point.new(-1,3) b=Point.new(5,1) c=Point.new(1,5) u=c.vecteur(a) v=c.vecteur(b) puts(u*v) puts(u.ortho(v))

