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