Comment construire l'équation d'une quadrique avec Mathematica
Construction au hasard (mais reproductible) de la matrice des
coefficients d'une quadrique et détermination de son type (ellipsoide,
hyperboloide,...,etc)
La commande suivante engendre, à chaque évocation de pol, une liste de 10 nombres entiers pseudo-aléatoires et compris entre -10 et +10. On nomme cette liste : coef (pour coefficients )
pol := coef = Table[Random[Integer,{-10,10}],{10}]
Traditionnellement, le premier coefficient est positif et ici, on choisit d'avoir un coefficient de x^2 non nul. Ce choix n'est pas essentiel.
coeff:= If[coef[[1]] <= 0, (coef[[1]] = -coef[[1]] + 1;coef),coef]
A partir de cette nouvelle liste, appelee coeff (avec deux ff) pour la distinguer de coef, on construit la matrice des coefficients de la quadrique :
m := {{coeff[[1]],coeff[[4]]/2,coeff[[5]]/2,coeff[[7]]/2},
{coeff[[4]]/2,coeff[[2]],coeff[[6]]/2,coeff[[8]]/2},
{coeff[[5]]/2,coeff[[6]]/2,coeff[[3]],coeff[[9]]/2},
{coeff[[7]]/2,coeff[[8]]/2,coeff[[9]]/2,coeff[[10]]}}
Cette matrice nous permet d'écrire facilement la fonction polynômiale qui va décrire la quadrique :
f[x_,y_,z_]:= {x,y,z,1} . m . {x,y,z,1}//ExpandAll
Le membre de gauche de l'équation de notre quadrique est bien
f[x,y,z] comme il est facile de vérifier en faisant successivement :
pol
f[x,y,z]
Pour avoir sa quadrique personnelle, il faut initialiser le générateur de nombres pseudo-aléatoires en précédent l'appel de Random par SeedRandom["sonnomd'usager"]. Ceci aura pour effet de rendre le calcul reproductible. On pourra donc exécuter la commande suivante, dans laquelle l'argument est le nom d'usager, tel qu'on a l'habitude de l'écrire. Cette commande utilise successivement la définition de pol, coeff et m :
quad[x_]:= (SeedRandom[ToString[x]];pol;coeff;m)
Si l'on est seulement intéressé par la classification, on peut y ajouter la classification automatique et écrire :
classifquadpers[x_]:= (SeedRandom[ToString[x]];pol;coeff;m;classquad[m])
à la condition qu'on aie eu soin d'importer, au préalable, la commande classquad dans sa session courante de Mathematica, précédée de
<<LinearAlgebra`MatrixManipulation`
Retour à ma page
personnelle
©jmt : création le 000922 - dernière modification le 011120