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.
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.
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.
 def x
 @x
 end
Pour lire ou modifier l'abscisse d'un vecteur "u", on invoque "u.x".
Ordonnée.
 def y
 @y
 end
Affichage.
 def to_s
 '('+@x.to_s+';'+@y.to_s+')'
 end
Il suffit pour afficher un vecteur "u", de faire
puts(u)
Norme.
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.
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.
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.
Il y a deux multiplications intéressantes: 
Par un nombre.
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.
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.
De colinéarité.
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é.
Pour savoir si deux vecteurs sont orthogonaux, on compare leur produit scalaire à 0:
 def ortho(u)
 self * u ==0
 end
Exemple.
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))

La théorie des poutres/Annexes/Continuité de la matière

La continuité de la matière est une hypothèse qui permet de simplifier les calcul, en considérant des fonctions continues (champs scalaires, vectoriels ou tensoriels). Nous savons que cette hypothèse est fausse dans l'absolu, il nous faut donc déterminer son domaine de validité.
Masse volumique d'un cristal.
La matière est constituée d'atomes. Dans un cristal, les atomes sont disposés de manière ordonnée, aux nœuds d'un réseau. Dans le modèle des sphères dures, la compacité maximale est de 74 % : dans le cas des cristaux les plus compacts (par exemple cristaux monoatomiques de structure cubique à faces centrées ou bien hexagonale compacte), il reste 26 % de vide entre les sphères (voir par exemple sur Wikipédia ""). La matière amorphe, elle, est moins compacte que cela. 
Mais la physique subatomique nous révèle que l'atome est constitué d'un noyau entouré d'un nuage électronique ; que ce noyau représente environ 10-15 % du volume de l'atome, mais 99,9 % de sa masse.
Considérons un cristal monoatomique de structure cubique simple (noté Ah dans la notation "Strukturbericht" ; groupe d'espace n°221, symbole d'Hermann-Mauguin Pmm). Cette structure est plutôt rare (c'est celle du polonium α), mais c'est la plus simple pour notre exemple. Le paramètre de maille — la longueur de l'arête du cube — est "a". La masse d'un atome est appelée "m".
Considérons un cube fictif d'arête A, dont le centre est le centre d'une maille. Ce cube a un volume V = A3. Si A < "a", ce cube ne contient aucun atome, la masse contenue dans ce cube vaut M = 0. Donc, sa masse volumique vaut
Faisons croître A. Lorsque que l'on atteint A = "a", le cube englobe brusquement les 8 atomes situés aux angles de la maille. On a donc
Puis, pour "a" < A < 2"a", le volume du cube augmente, mais il ne contient toujours que 8 atomes, on a donc
qui est une fonction décroissante.
Lorsque que l'on atteint A = 3"a", le cube englobe brusquement les 136 atomes situés sur cette couche. On a donc
Et ainsi de suite, la fonction ρ(A) progresse en dents de scie, la hauteur des dents s'atténuant et convergeant vars la valeur
Considérons le "n"-ième saut de la fonction ρ. Après le saut, le cube a pour arête A = (2"n" - 1)"a" + ε et il contient (2"n")3 atomes ; en effet, une arrête contient 2"n" atomes. Le nombre d'atomes supplémentaires qu'a englobé le saut de A = (2"n" - 1)"a" - ε à A = (2"n" - 1)"a" + ε est :
Lorsque l'on atteint la "n"-ième couche, on passe d'une masse volumique
à
soit un « saut » de hauteur
Considérons que la matière est continue à partir du moment où la variation est inférieure à 1 %, c'est-à-dire que "hn"/ρ(∞) ≤ 0,01. On suppose que "n" est grand ; on peut alors se ramener au comportement asymptotique des fonctions :
La condition devient donc
soit
On peut vérifier que l'hypothèse « "n" est grand » est valide : la différence entre la valeur exacte et la valeur approchée vaut
et le rapport
Un calcul exact nous donne "n" ≥ 301…
La valeur "n" = 300 correspond à un cube d'arête 
Pour le polonium α, on a "a" = 3,350 Å soit
On voit donc qu'avec ce critère, à l'échelle de , la matière cristalline est bien continue.
Extrapolation de ce calcul.
Avec d'autres types de cristaux, et même avec de la matière amorphe — verres, polymères non cristallisés, liquides —, on obtiendrait toujours une courbe ρ(A) en dents de scie. L'ordre de grandeur de la limite à 0,01 % est 1000"a" ; pour la matière amorphe, on peut prendre pour "a" la distance moyenne entre deux atomes ou molécules. Pour l'air, le libre parcours moyen — distance moyenne que parcours une molécule entre deux chocs — vaut λ = , et donc 1000λ ≃ , l'air est donc continu à l'échelle de .

Mathématiques avec Python et Ruby/Droites en Ruby