Les quaternions

  1. Introduction
  2. Théorème de Frobenius
  3. Le produit scalaire dans 3
  4. Le produit vectoriel dans 3
  5. Les angles de vecteurs dans 3

 

1) Introduction

...

2) Théorème de Frobenius sur les dimensions finies 1 ou 2 ou 4.

Si un corps commutatif contient, le corps des réels , alors il possède une structure d'espace vectoriel sur . Et si cet espace est de dimension finie, alors il ne peut s'agire que de ou du corps des complexes , c'est à dire de dimension égale à 1 ou 2, et il n'y a pas d'autre corps possible à isomorphisme près.

On appel le centre d'une structure, l'ensemble des éléments de la structure qui commutent avec tous les éléments de la structure.

Si un corps non commutatif contient dans son centre, le corps des réels , alors il possède une structure d'espace vectoriel sur . Et si cet espace est de dimension finie, alors ce corps ne peut être que le corps des quaternions c'est à dire de dimension égale à 4.

La démonstration du théorème passe en revue les différents groupes multiplicatifs possibles des vecteurs unités d'un corps possédant une structure de -espace vectoriel.

3) Le produit scalaire dans 3

On considère un -espace vectoriel de dimension 3 nommé E. On se place ainsi dans une situation un peu plus générale que celle de 3 dans laquelle il n'y a plus de base canonique ni de produit scalaire canonique. La base et le produit scalaire devront être construit avec les seuls ressources exprimables de l'espace vectoriel E. Et le produit scalaire que nous construisons n'est pas préalablement supposé commutatif.

On note en caractère gras les vecteurs.

On choisie une liste de vecteurs générateurs et indépendants (i, j, k), c'est à dire tel que :

A∈E ∃(x,y,z)∈ℝ3, A = x*i + y*j + z*k
∀(x,y,z)∈(ℝ3-(0,0,0)), x*i + y*j + z*k ≠ 0

Les propriétés logiques d'"ensemble de vecteurs générateur" et d'"ensemble de vecteurs indépendant" sont exprimés en regroupant les variables dans des strucures telles que (x,y,z)∈ℝ3 ou telles que (x,y,z)∈(ℝ3-(0,0,0)) qui sont isomorphes à E et à E-{0}dans le but d'une éventuelle reformulation de ces propriétés.

Puis on posera (i, j, k) comme étant une base orthonormée, c'est à dire telle que le produit scalaire noté que nous allons construire, respectera les 9 axiomes suivants, qui représente la table du produit scalaire appliquée aux vecteurs de l'ensemble générateur {i, j, k}.

Axiomes de la base orthonormée (i,j,k) :

i2 = 1
j2 = 1
k2 = 1

ij = 0
jk = 0
ki = 0

ji = 0
kj = 0
ik = 0

i
j
k
i
1
0
0
j
0
1
0
k
0
0
1

On note AA = A2

Les 9 axiomes ne différencient pas l'ordre des vecteurs i, j, k, c'est pourquoi on ne peut pas extraire de notion de chiralité du produit scalaire.

Les 9 axiomes qui représentent la table du produit scalaire dans l'ensemble {i, j, k} se réécrivent en la propriété suivante :

∀(A,B)∈{i,j,k}2, AB = (A=B)

où l'expression (A=B) vaut 0 lorsque A n'est pas égale à B et vaut 1 lorsque A est égale à B.

Les 3 derniers axiomes peuvent être remplaçés par la propriété de symétrie de la forme bilinéaire ou dit autrement par la propriété de commutativité du produit scalaire.

Le produit scalaire est définie comme étant la forme bilinéaire déterminée par ces 9 axiomes.

Le produit scalaire est une application de (E,E) -->ℝ vérifiant la bilinéarité, c'est à dire la linéarité sur chaque argument :

∀(A,B,C)∈E3 ∀r∈ℝ,
      (A+B)•C = AC + BC
       (r*A)•B = r*(AB)
      A•(B+C) = AB + AC
      A•(r*B) = r*(AB)

Noter que dans l'expression r*AB, du fait de la bilinéarité, il n'est pas nécessaire de mettre des parenthèses malgrès que les deux produits soient d'égale priorité syntaxique.

Du fait de cette bilinéarité, il suffit de connaitre la valeur du produit scalaire pour les couples d'éléments parmis un ensemble générateur tel que {i, j, k} pour connaitre la valeur du produit scalaire de tous les couples de vecteurs.

Etant donnée un vecteur A, on notes ses coordonnées dans la base (i, j, k) par Ax, Ay, Az. Noter que x, y, z sont ici des attributs ajoutés sous forme de suffixe au nom du vecteur pour désigner ses coordonnées respectivement dans la base (i, j, k), dés lors ils ne sont plus notés en gras puisque ces noms Ax, Ay, Az, désignent des coordonnées réels, et il est impératif de les lier par l'équation A = (Ax, Ay, Az) puisque ce sont des variables distinctes. Cette équation correspond à la représentation matriciel du vecteur relative à la base implicite (i, j, k). Nous avons :

A = (Ax, Ay, Az)
B = (Bx, By, Bz)
A = Ax*i + Ay*j + Az*k
B = Bx*i + By*j + Bz*k

Et en appliquant la bilinéarité et les 9 axiomes, on déduit que :

Ai = Ax
Aj = Ay
Ak = Az
iA = Ax
jA = Ay
kA = Az

AB = (Ax*i + Ay*j + Az*k)•B
AB = Ax*iB + Ay*jB + Az*kB
AB = Ax*Bx + Ay*By + Az*Bz

La norme d'un vecteur |A| est définie par :

|A| = sqrt(A2)
|A| = sqrt(Ax2 + Ay2 + Az2)

Mais on utilisera plus souvent le carré qui est une expression plus simple :

A2 = Ax2 + Ay2 + Az2

Le produit scalaire correspond aux opérations matricielles suivantes :

(Ax, Ay, Az) • (Bx, By, Bz) = Ax*Bx + Ay*By + Az*Bz
(Ax, Ay, Az)2 = Ax2 + Ay2 + Az2

Que l'on peut aussi écrire par :

∀(x, y, z, x, y, z)∈ℝ6,
      (x, y, z) • (x, y, z) = x*x + y*y + z*z
      (x, y, z)2 = x2 + y2 + z2

On adopte une seconde notation qui utilise des indices entiers modulo 3. On choisie cette représentation pour pouvoir exprimer simplement une permutation circulaire des vecteurs de base, il suffira d'ajouter (ou de soustraire) 1 aux indices. La base (i, j, k) est notée (e0, e1, e2) et les composantes d'un vecteur (Ax, Ay, Az) sont notées (A0, A1, A2). La variable indicée peut être considérée comme une fonction appliquée à l'indice, et sera notée en gras seulement si l'image est un vecteur. Les indices sont des entiers modulo 3. Dans cette seconde notation, les variables i, j, k seront réutilisées pour désigner des indices entiers modulo 3, les suffixes x, y, z seront réutilisés pour désigner d'autres éléments, et on laissera le soin au contexte de lever les ambiguités.

Les 9 axiomes qui représentent la table du produit scalaire dans l'ensemble {e0, e1, e2} se réécrivent en la propriété suivante :

∀(i,j)∈(ℤ/3ℤ)2, eiej = (i=j)

ℤ/3ℤ désigne l'ensemble des entiers modulo 3 représenté par {0, 1, 2}. L'expression (i=j) vaut 0 lorsque i n'est pas égale à j, et vaut 1 lorsque i est égale à j.

Nous avons :

A = (A0, A1, A2)
B = (B0, B1, B2)
A = A0*e0 + A1*e1 + A2*e2
B = B0*e0 + B1*e1 + B2*e2

Et en appliquant la bilinéarité et les 9 axiomes, on déduit que :

AB = Σi Ai*Bi
∀i, Aei = Ai
∀i, eiA = Ai

où l'on sous-entend que la quantification ∀i désigne tout les éléments i appartenant à ℤ/3ℤ, c'est à dire tous les entiers modulo 3, et que la somme Σi s'effectue pour tous les indices i appartenant à ℤ/3ℤ.

La norme d'un vecteur est définie par :

 |A| = sqrt(Σi Ai2)

Le carré d'un vecteur est définie par :

A2 = Σi Ai2

Le produit scalaire correspond à des opérations matricielles qui peuvent s'exprimer de manière algorithmique. D'une façon analogue à l'opérateur Σi on définie l'opérateur produit directe Li qui crée une liste d'éléments d'indice appartenant à ℤ/3ℤ. D'un point de vue informatique, un même algorithme sous-jacent est mis en oeuvre dans les deux opérations Σi et Li. Nous avons par définition :

(Li Ai) = (A0, A1, A2)

Le produit scalaire correspond aux opérations matricielles suivantes :

(Li Ai) • (Li Bi) = Σi Ai*Bi
(Li Ai)2 = Σi Ai2

Ces opérations matricielles sont valables dans toutes les bases vérifiant les 9 axiomes, c'est à dire dans toutes les base dites orthonormées. Et il découle de ces 9 axiomes et de la bilinéarité que le produit scalaire est commutatif :

∀(A,B)∈E2, AB = BA

4) Le produit vectoriel dans 3

Même problèmatique que précédement, on se place dans un -espace vectoriel de dimension 3 nommé E, et il n'y a pas de base canonique ni de produit vectoriel canonique. La base et le produit vectoriel devront être construit avec les seuls ressources exprimables de l'espace vectoriel E.

On choisie une liste de vecteurs générateurs et indépendants (i, j, k) que l'on posera comme étant une base orthonormée directe, c'est à dire telle que le produit vectoriel noté que nous allons construire, respectera les 9 axiomes suivants, qui représente la table du produit vectoriel appliquée aux vecteurs de l'ensemble générateur {i, j, k}.

Axiomes de la base orthonormée directe (i, j, k) :

ii = 0
jj = 0
kk = 0

ij = k
jk = i
ki = j

ji = -k
kj = -i
ik = -j

i
j
k
i
0
k
-j
j
-k
0
i
k
j
-i
0

Le produit vectoriel est l'application bilinéaire de (E,E) --> E déterminée par ces 9 axiomes.

Les 3 premiers axiomes avec les 3 dernier axiomes peuvent être remplaçés par la propriété d'antisymétrie de l'application bilinéaire ou dit autrement par la commutativité par signe alterné du produit vectoriel, à savoir que ∀(A,B)∈E2 AB = -BA.

Ces 9 axiomes qui représentent la table du produit vectoriel dans l'ensemble {i, j, k} se réécrivent algorithmiquement comme suit : On définie l'opérateur s sur l'ensemble {i, j, k} qui correspond à la permutation circulaire de la base (i, j, k) c'est à dire : s(i)=j, s(j)=k, s(k)=i.

∀(A,B)∈{i,j,k}2, AB = s(B)*(B = s(A)) - s(A)*(A=s(B))

où les expressions entre parenthèse contenant une égalité vallent 0 lorsque l'égalité n'est pas respectée, et 1 lorsque l'égalité est respectée.

Les 9 axiomes du produit vectoriel sont plus riches que les 9 axiomes du produit scalaire. Ils définissent une notion supplémentaire qu'est la chiralité directe. Il y a deux classes de bases orthonormées modulo les rotations dans E. La classe des bases orthonormées directes, et la classe des bases orthonormées inverses. On passe de l'une à l'autre en changeant le signe des vecteurs. Si (i, j, k) est une base orthonormée directe alors (-i,-j,-k) est une base orthonormée inverse.

Mais il est possible de choisir dés le départ de notre construction, une liste de vecteurs générateurs et indépendants (i, j, k) que l'on posera comme étant une base orthonormée inverse, c'est à dire telle que le produit vectoriel inverse noté pareillement que nous allons construire, respectera les 9 axiomes suivants, qui représente la table du produit vectoriel inverse appliquée aux vecteurs de l'ensemble générateur {i, j, k}.

Axiomes de la base orthonormée inverse (i, j, k) :

ii = 0
jj = 0
kk = 0

ij = -k
jk = -i
ki = -j

ji = k
kj = i
ik = j

i
j
k
i
0
-k
j
j
k
0
-i
k
-j
i
0

Ces 9 axiomes qui représentent la table du produit vectoriel inverse dans l'ensemble {i, j, k} se réécrivent algorithmiquement par : ∀(A,B)∈{i,j,k}2, AB = s(A)*(A=s(B)) - s(B)*(B = s(A))

Reprenons notre première base orthonormée directe (i, j, k) avec ses 9 axiomes définissant le produit vectoriel.

Le produit vectoriel est une application de (E,E) -->ℝ vérifiant la bilinéarité, c'est à dire la linéarité sur chaque argument :

∀(A,B,C)∈E3 ∀r∈ℝ,
      (A+B)∧C = AC + BC
      (r*A)∧B = r*(AB)
      A∧(B+C) = AB + AC
      A∧(r*B) = r*(AB)

Noter que dans l'expression r*AB, du fait de la bilinéarité, il n'est pas nécessaire de mettre des parenthèses malgrès que les deux produits soient d'égale priorité syntaxique.

Du fait de cette bilinéarité, il suffit de connaitre la valeur du produit vectoriel pour les couples d'éléments parmis un ensemble générateur tel que {i, j, k} pour connaitre la valeur du produit vectoriel pour tous les couples de vecteurs.

Etant donné 2 vecteurs A et B. Nous avons :

A = (Ax, Ay, Az)
B = (Bx, By, Bz)
A = Ax*i + Ay*j + Az*k
B = Bx*i + By*j + Bz*k

Et en appliquant la bilinéarité et les 9 axiomes, on déduit que :

Ai = (Ax*i + Ay*j + Az*k)∧i
Ai = Ax*ii + Ay*ji + Az*ki
Ai = -Ay*k + Az*j
Ai = Az*j - Ay*k

Aj= (Ax*i + Ay*j + Az*k)∧j
Aj = Ax*ij + Ay*jj + Az*kj
Aj = Ax*k - Az*i

Ak= (Ax*i + Ay*j + Az*k)∧k
Ak = Ax*ik + Ay*jk+ Az*kk
Ak = -Ax*j + Ay*i
Ak = Ay*i - Ax*j

AB = (Ax*i + Ay*j + Az*k)∧B
AB = Ax*iB + Ay*jB + Az*kB
AB = - Ax*Bi - Ay*Bj - Az*Bk

AB = - Ax*(Bz*j - By*k) - Ay*(Bx*k - Bz*i) - Az*(By*i - Bx*j )
AB = Ax*(By*k - Bz*j) + Ay*(Bz*i - Bx*k) + Az*(Bx*j - By*i)
AB = (Ay*Bz - Az*By)*i + (Az*Bx - Ax*Bz)*j + (Ax*By - Ay*Bx)*k

AB = (Ay*Bz - Az*By, Az*Bx - Ax*Bz, Ax*By - Ay*Bx)

             [ Ay*Bz - Az*By]
AB =  [ Az*Bx - Ax*Bz]
             [ Ax*By - Ay*Bx]

En utilisant des coordonnées indicées et une base {e0, e1, e2} le produit vectoriel se définit comme l'opération matricielle suivante :

A = (A0, A1, A2)
B = (B0, B1, B2)
A = A0*e0 + A1*e1 + A2*e2
B = B0*e0 + B1*e1 + B2*e2

(A0, A1, A2) ∧ (B0, B1, B2) = (A1*B2 - A2*B1, A2*B0 - A0*B2, A0*B1 - A1*B0)

(Li Ai) • (Li Bi) = Li (Ai+1*Bi+2 - Ai+2*Bi+1)

5) Les angles de vecteurs dans 3

On définie l'angle non orienté entre deux vecteurs non nuls A, B, c'est à dire sans tenir compte du sens de rotation. Cet angle noté θ(A,B) est exprimé en tours et appartient à l'intervalle [0, 1/2]. C'est un réel modulo 1 et modulo le signe (x --> -x).

On définie l'angle orienté entre deux vecteurs non nuls A, B, c'est à dire en tenant compte du sens de rotation. Cet angle noté Angle(A,B) est exprimé en tours et appartient alors à l'intervalle [0, 1[. C'est un réel modulo 1.

∀(A,B)∈(E2-{(0,0)}), θ(A,B) ∈ [0,1/2]
∀(A,B)∈(E2-{(0,0)}) Angle(A,B) ∈ [0,1[

Le sens de référence des rotations est défini à partir du choix de la base orthonormée directe ou inverse (i, j, k) et plus particulièrement selon la chiralité choisie directe ou inverse. La notation Angle(A,B) fait donc implicitement référence à la base orthonormée directe ou inverse (i, j, k). Dans une base orthonormée inverse, le sens de référence des rotations est inversé.

Etant donné deux vecteurs non nuls A et B, on peut définir la rotation passant de la direction A à la direction B par le vecteur spine Angle(A,B)*(AB)/|A|*|B|. C'est un vecteur perpendiculaire au plan <A,B> dont le sens indique selon la chiralité le sens de la rotation passant de A/|A| à B/|B|, et dont la norme est égale à l'angle de la rotation passant de A/|A| à B/|B| exprimé en tours.

---- 23 juin 2014 ----

 

Etant donné deux vecteurs non nuls A et B, l'angle a=θ(A,B) et l'angle b=Angle(A,B) respecte les deux formules suivantes :

AB = |A|*|B|*cos(a*2π)
|AB| = |A|*|B|*sin(a*2π)

AB = |A|*|B|*cos(b*2π)
|AB| = |A|*|B|*sin(b*2π)

Le apparait dans les cos et sin car l'angle a est exprimé en tours.

La norme du produit vectoriel de deux vecteurs (A,B) correspond à la surface du parallélogramme définie par ces deux vecteurs (A,B).

|AB| = Surface(A,B)

La direction AB est perpendiculaire au plan des deux vecteurs <A,B>, son sens est tel qu'il forme avec les deux vecteurs, une base directe (A, B, AB), c'est à dire qu'une fois normée il peut être transformée par rotation en la base (i, j, k).

Le produit mixte (AB)•C correspond au volume du parallélépipède signé positivement si le triplet (A,B,C) forme une base directe, et négativement si le triplet (A,B,C) forme une base inverse.

|(AB)•C| = Volume(A,B,C)

6) Les rotations dans 3

Une rotation dans l'espace tridimensionnel est représentée par un vecteur spin dont la direction indique le sens de rotation (selon la règle du tire-bouchon et selon la constante de chiralité du référentiel). La norme du vecteur représente le nombre de tours de rotation. Ainsi un tel vecteur représente non seulement les rotations d'un nombre de tours compris entre [0, 1[ dans l'espace tridimensionnel, mais également les rotations d'un nombre de tours compris entre [0, ∞[, c'est à dire effectuant plus d'un tour. Et il y a une bijection entre cet espace de rotations et l'espace vectoriel de dimension 3 où elles opèrent.

Le vecteur spin w représente une rotation. On l'identifie à sa rotation. Tout vecteur A est transformé par la rotation w en le vecteur w(A). Et cela est valable pour tout vecteur w. Cela revient à définir un opérateur binaire interne de (E,E)-->E.

w∈E,
      w
est un vecteur
      w est une rotation
      A∈E-{0}, w = Angle(A,w(A))*Aw(A)/|A|2

 

---- 22 juin 2014 ----

 

 

 

4.15) les quaternions

Considérons l'ensemble des matrices de la forme q =u et v sont des nombres complexes. Cette ensemble, muni de l'addition et du produit de matrice constitue un corps non commutatif. Il est appelé le corps des quaternions H.

Il existe 4 quaternions particulièrements simples que sont {1, i, j, k}. Et le corps des quaternions se developpe en une somme directe de 4 R-espaces vectoriel : H = R*1 + R*i + R*j + R*k. Cela signifie qu'à chaque quaternion q, il existe un unique quadruplet de réel (a,x,y,z) telque q = a + x*i + y*j + z*k.

1 =
i  =
j =
k =

i*i = -1
j*j = -1
k*k = -1

i*j = k
j*k = i
k*i = j

On définie la conjugaison d'un quaternion conj(a + x*i + y*j + z*k) =  a - x*i - y*j - z*k. La conjugaison est un anti-automorphisme car elle change l'ordre du produit : conj(p*q) = conj(q)*conj(p) et conj(p + q) = conj(p) + conj(q). Il existe 3 automorphismes particulièrements simples, rij, rjk, rki, (qui sont des rotations dans R^3) :

rij(a + x*i + y*j + z*k) =  a - y*i + x*j + z*k
rjk(a + x*i + y*j + z*k) = a + x*i - z*j + y*k
rki(a + x*i + y*j + z*k) = a + z*i + y*j - x*k

Les quaternions peuvent se mettent sous la forme d'une somme directe de C-espaces vectoriel, telque par exemple : H = C + C*j. Cela signifie qu'à chaque quaternion q, il existe un unique couple de complex (r,s) telque q = r + s*j. Dans cette exemple, on remarque que la décomposition est lié à la première par les identitées r = a + x*i et s = y + z*i. Cette somme directe établit un sytème de coordonnée dans lequel le produit et la conjugaison ont la forme suivante :

(r1 + s1*j) * (r2 + s2*j) = r1*r2 - s1*conj(s2) + (r1*s2 + s1*conj(r2))*j
conj(r + s*j) = conj(r) - s*j

Les quaternions peuvent se mettent sous la forme d'une somme directe de C-espaces vectoriel correspondant au couple (u,v) définie initialement : H = rij(C) + rij(-j*C). Cela signifie qu'à chaque quaternion q, il existe un unique couple de complex (u,v) telque q = rij(u) - rij(j*v) que l'on note q = (u,v) par commodité. Cette somme directe établit un système de coordonnée dans lequel le produit et la conjugaison ont la forme suivante :

(u1,v1) * (u2,v2) = (u1*u2 - conj(v1)*v2, v1*u2 + conj(u1)*v2)
conj(u,v) = (conj(u),-v)

Les quaternions possèdent une forme quadratique N (et donc une norme) :

N(q) = determinant
N(q) = u*conj(u) + v*conj(v)
N(q) = q*conj(q)
N(q) = a^2 + x^2 + y^2 + z^2
|q| = sqrt(N(q))

 

conj(p*q) = conj(q) *conj(p)
conj(p+q) = conj(p) + conj(q)

conj(conj(q)) = q

On peut calculer l'inverse d'un quaternion de cette façon 1/q = conj(q)/N(q)

On peut définir une forme bilinéaire <p,q> associé à la forme quadratique N(q) :

<q1,q2> = (q1*conj(q2) + conj(q1)*q2)/2
<q1,q2> = (conj(q1)*q2 + q1*conj(q2))/2
<q1,q2> = (N(q1+q2)-N(q1)-N(q2))/2

<q,q> = N(q)

Cela permet de définir la notion d'orthogonalité et la notion d'angle.

H = R + R^3
q = a + V

(a1 + V1)*(a2 + V2) = (a1*a2 - V1¤V2 + a1*V2 + a2*V1 + V1^V2)

a1*a2 = a1*a2
V1*V2 = -V1¤V2 + V1^V2
conj(V) = -V
conj(a) = a
N(a + V) = a*a + V¤V


q = (cos(k/2), sin(k/2)*U) = exp((k/2)*U)
Soit un vecteur V
W = q*V/q
W est un vecteur obtenu par rotation de V d'un angle k autours de l'axe U.


L'ensemble Rorthogonal = 1othogonal = {q telque <q,1> = 0} = {q telque -q = conj(q)}est isomorphe à R^3

Les automorphismes sont tous intérieurs c'est à dire de la forme Sq : p --> q*p/q

Sq est une rotation de l'espace Rorthogonal

 

 Description de la symétrie, Jean SIVARDIERE, EDP sciences, 2004