« Mathématiques avec Python et Ruby/Quaternions et octonions en Python » : différence entre les versions

Contenu supprimé Contenu ajouté
Ligne 117 :
print(q*p)
</source>
 
===Division===
 
====Multiplication par un réel====
 
Pour définir le plus facilement possible le [[w:Quaternion#Inverses_et_divisions|quotient de deux quaternions]], on a intérêt à définir le produit d'un quaternion par un réel (on peut déjà l'effectuer avec la méthode de produit, en assimilant le réel ''r'' avec la quaternion ''Quaternion(r,0)''). Mais comme le symbole de multiplication est déjà utilisé pour la multiplication des quaternions, il en faut un autre pour la multiplication d'un quaternion par un réel. Or il se trouve que ''__rmul__'' (multiplication à l'envers) est encore disponible, donc pour peu qu'on multiplie à droite dans la définition, et à gauche en pratique, on peut ajouter cette méthode:
 
<source lang="python">
def __rmul__(self,k):
return Quaternion(self.a*k,self.b*k)
</source>
 
Alors, pour tripler un quaternion ''q'', on peut faire, au choix, ''q*Quaternion(3,0)'', ou ''3*q''.
 
====Division====
 
Le quotient de deux quaternions est désormais simple à définir:
 
<source lang="python">
def __div__(self,other):
return self.conjugate()*(1./abs(other)**2*other)
</source>
 
Le quotient d'un quaternion par son conjugué est de norme 1:
 
<source lang="python">
p=Quaternion(-2+1J,2+3J)
print(p/p.conjugate())
</source>
 
Cet exemple révèle que <math>\left(-\frac{5}{9}\right)^2+\left(\frac{2}{9}\right)^2+\left(\frac{4}{9}\right)^2+\left(\frac{6}{9}\right)^2=1</math>, ce qui revient à la décomposition suivante de 81 (un carré) comme somme de 4 carrés: <math>5^2+2^2+4^2+6^2=25+4+16+36=81=9^2</math>.
 
=Octonions=