# Convert an expression from one form to another

I have this expression

-0.433284-0.758719 x+0.00289158 x^2-0.443672 y+0.00149027 y^2


I want to express it in terms of $$\frac{(x-h)^2}{b^2}+\frac{(y-k)^2}{a^2}$$. Using Solve gave me a big mess:

Solve[-0.433284-0.758719 xP+0.00289158 xP^2-0.443672 yP+0.00149027 yP^2==(xP-h)^2/b^2+(yP-k)^2/a^2,{a,b,h,k}]


What can I do to get it in the form I wanted?

-

There are two problems. One is that you want SolveAlways to find values for the parameters for which the expressions are equivalent. The second is that, as stated, it's not possible because the system is overdetermined. You'll want to allow for a constant term in your second expression.

expr1 = -0.433284 - 0.758719 x + 0.00289158 x^2 - 0.443672 y +
0.00149027 y^2;
expr2 = (x - h)^2/b^2 + (y - k)^2/a^2 - c;


Now we find the parameter sets that work.

solns = SolveAlways[expr1 == expr2, {x, y}];
viable = Select[solns,
FreeQ[{a, b, c, h, k} /. #, a | b | c | h | k] &];

(* Out[337]= {-83.2248525772 + 0.00289158 (-131.194537243 + x)^2 +
0.00149027 (-148.856247526 + y)^2, -83.2248525772 +
0.00289158 (-131.194537243 + x)^2 +
0.00149027 (-148.856247526 + y)^2, -83.2248525772 +
0.00289158 (-131.194537243 + x)^2 +
0.00149027 (-148.856247526 + y)^2, -83.2248525772 +
0.00289158 (-131.194537243 + x)^2 +
0.00149027 (-148.856247526 + y)^2} *)

-

This particular problem can dealt with algebraically by completing squares, equating coefficients and subtracting constants. (I am making the assumptions this is a left hand side whose right hand side is 0).

pol = -0.433284 - 0.758719 x + 0.00289158 x^2 - 0.443672 y +
0.00149027 y^2;
cr = CoefficientRules[pol, {x, y}]
{p, q, r, s, t} = cr[[All, 2]];
{h, k} = 0.5 {-q/p, -s/r}
cons = p h^2 + r k^2


This yields for {h,k}:=

{131.195, 148.856}


The rearranged polynomial:

trp[x_, y_] := p (x - h)^2 + r (y - k)^2 - cons + t


and note:

Expand[trp[x, y]] == pol


yields True.

If the aim is to get to $\frac{(x-h)^2}{a^2}+\frac{(y-k)^2}{b^2}=1$

{a, b} = Sqrt[
1/Coefficient[(trp[x + h, y + k] + cons - t)/(cons - t), {x^2,
y^2}]]


This yields:

{169.652, 236.316}


The boolean is hampered by numericals but to show the rearrangement is equivalent:

stf[x_, y_] := (x - h)^2/a^2 + (y - k)^2/b^2 - 1



Putting it all together:

TraditionalForm[
StringForm[
"\!$$\*FractionBox[SuperscriptBox[\((x - 1)$$, $$2$$], \
SuperscriptBox[$$2$$, \
$$2$$]]\)+\!$$\*FractionBox[SuperscriptBox[\((y - 3)$$, $$2$$], \
SuperscriptBox[$$4$$, $$2$$]]\)=1", h, a, k, b]]


Visualizing:

Grid[{{TraditionalForm[pol == 0],
pol == 0, {x, -500, 500}, {y, -500, 500}, ImageSize -> 300],
ContourPlot[stf[x, y] == 0, {x, -500, 500}, {y, -500, 500},
ImageSize -> 300]}}, Frame -> All]


-
Thank you for this. I will look into your answer in more detail tomorrow since I'm studying for a test but it seems a very intuitive way to solve this problem at first glance. Also thank you for using CoefficientRules since I've been using very clunky ways to separate coefficients as seen in this Q&A (mathematica.stackexchange.com/questions/51654/…). I hope you could help me over there as well as it seems like an extension of this question. – seismatica Jun 27 '14 at 3:08