Transforma a una forma canónica

Definición de reglas para transformar un polinomio a (x^2)  +  b (y^2)  +  c x  +  
          d y = e , a la forma \(TraditionalForm\`\((x + h)\)\^2\/α\^2 ± \ \((y + k)\)\^2\/β\^2 = \ 1\),
siempre que sea posible.

Regla 1

Se establece una sola regla para identificar expresiones numéricas como 3, π, o Ln(2) en el lado izquierdo de la ecuación y las pasa al lado derecho. La regla de transformación se aplica sólo si el lado derecho es también una expresión numérica.

ReglasA  =  {
e_ +  n_?NumericQ ==   k_?
                NumericQ -> e   ==  k - n};

Ejemplos

2  x  +  x^2 + y  +  1  ==  Sqrt[2] /. ReglasA

2  x  +  x^2 + y  +  1  ==  y^2 /. ReglasA

Regla 2

Se agrega una nueva regla para completar cuadrados. En este caso se requiere la presencia de un símbolo elevado al cuadrado eventualmente multiplicado por otra expresión y un término lineal involucrando el mismo símbolo. Observe que sólo se establece cómo transformar una parte de la ecuación.

ReglasB  =  {
e_ +  n_?NumericQ ==   k_?
                NumericQ -> 
            e   ==  k - n, 
a_.  x_Symbol^2  +  
              b_.  x_Symbol  ->   a (x  +  b/2  a)^2  -  
              b^2/4  a };

3  x  +  x^2 + y  -  y^2 +  1  == -2 /. ReglasB

% /. ReglasB

% /. ReglasB

% /. ReglasB

% /. ReglasB

Regla 3

Primero se define un test (función) para reconocer cuando una expresión no es ni cero ni uno.

NoCeroNiUno[x_]  :=  Not[x == 0  ||  x  ==  1]

ReglasC  =  {
e_ +  n_?NumericQ ==   k_?
                NumericQ -> 
            e   ==  k - n, 
a_.  x_Symbol^2  +  
              b_.  x_Symbol  ->   a (x  +  b/2  a)^2  -  
              b^2/4  a, 
a_.  x_^2 + b_.  y_^2  ==  
              c_?NoCeroNiUno  ->  
            a x^2/c  +  b y^2/c  ==  1};

La tercera regla asume que el lado derecho de la ecuación es una expresión numérica, y aplica un test para reconocer si no es ni uno ni cero, en cuyo caso la convierte en 1, pero siempre que el lado izquierdo sea de la forma
                                    a (x^2)  +  b (y^2).
Observe que en este caso no se establece que las expresiones x y y deban ser símbolos.

-2 x^2  +  x  +  y^2 +  3  y  +  2  ==  0 //. 
      ReglasC

Reglas de transformación globales

Las funciones  en Mathematica son reglas de transformación globales, que se aplican cada vez que la expresión de la forma definida tenga lugar.  
Así, a continuación se definen dos reglas, identificadas con el nombre aFormaCanonica: la primera recibe una ecuación en cualquier forma, convierte su parte derecha en cero y le aplica las reglas de transformación vistas con anterioridad. Finalmente, al resultado, que se supone tiene la forma 
                              a (x^2)  +  b (y^2)  =  1,
 le aplica  la segunda regla para darle la forma:
                             ((x^2)/(α^2)) +  ((y^2)/(β^2)) =  1.

Reglas de transformación globales

aFormaCanonica[liz_  ==  lde_]  :=  
      With[{Reglas  =  {e_ +  n_?NumericQ ==   k_?NumericQ -> 
                e   ==  k - n, 
a_.  x_Symbol^2  +  
                  b_.  x_Symbol  ->   a (x  +  b/2  a)^2  -  
                  b^2/4  a, 
a_.  x_^2 + 
                    b_.  y_^2  ==  c_?NoCeroNiUno  ->  
                a x^2/c  +  b y^2/c  ==  
                  1}},  
aFormaCanonica[
          liz  -  lde  ==  0 //. Reglas]]

aFormaCanonica[a_.  x_^2 + b_.  y_^2  ==   1 ]  :=  
      With[{aa  = Simplify[(Sqrt[1/Abs[a]])], 
          bb  =  Simplify[(Sqrt[1/Abs[b]])]}, 
        Sign[a] x^2/HoldForm[aa^2]  +  
            Sign[b] y^2/HoldForm[bb^2]  ==  1]

Ejemplo

aFormaCanonica[
      2  x^2  +  x  -  y^2 +  3  y  +  2  ==  0]