Mathematica 9 is now available
Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2007
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2007

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Quadratic form: symbolic transformation

  • To: mathgroup at smc.vnet.net
  • Subject: [mg76817] Re: Quadratic form: symbolic transformation
  • From: Peter Pein <petsie at dordos.net>
  • Date: Mon, 28 May 2007 00:53:59 -0400 (EDT)
  • References: <f3bj37$40i$1@smc.vnet.net>

Dr. Wolfgang Hintze schrieb:
> Hello,
> 
> this is a simple question but perhaps I can get here some information
> towards a more apropriate way of using Mathematica.
> 
> I take a very simple example: I would like to write the quadratic form
> 
> q1 = R*x^2 + R*x + T
> 
> in the form
> 
> q2 = u*(x+v)^2 + w
> 
> How can I find u, v, and w from R, S, and T?
> 
...

> 
> Thanks in advance for any hints.
> Regards,
> Wolfgang 
> 
> 

Hello Wolfgang,

there are (as usual) different ways to do this.

I guess there is a typo in the definition of q1?

In[1]:=
q1 = r*x^2 + s*x + t;
q2 = u*(x + v)^2 + w;
eqns = LogicalExpand[q1 - q2 + O[x]^3 == 0]

Out[3]=
r - u == 0 && s - 2*u*v == 0 && t - u*v^2 - w == 0

In[4]:=
sol1 = Solve[eqns, {u, v, w}, x]
Out[4]=
{{w -> (-s^2 + 4*r*t)/(4*r), u -> r, v -> s/(2*r)}}

In[5]:= (* Test: *)
Simplify[q1 == q2 /. sol1[[1]]]
Out[5]=
True

SolveAlways[q1 == q2, x] solves for all x, but the output is:
{{r -> u, s -> 2*u*v, t -> u*v^2 + w}}. To get the solution for {u,v,w}, 
convert the rules to equations and do a simple Solve afterwards.

In[6]:=
sol2 = Solve[Apply[Equal, First[SolveAlways[q1 == q2, x]], {1}], {u, v, w}]
Out[6]=
{{w -> (-s^2 + 4*r*t)/(4*r), u -> r, v -> s/(2*r)}}

In[7]:=
sol1 === sol2
Out[7]=
True

To get a case differentiation (r==0,r!=0) automagically, use Reduce:

In[8]:=
redu = Reduce[ForAll[x, q1 == q2], {u, v, w}, Reals, Backsubstitution -> True]
Out[8]=
(s < 0 && r < 0 && u == r && v == s/(2*r) && w == (-s^2 + 4*r*t)/(4*r)) ||
(s < 0 && r > 0 && u == r && v == s/(2*r) && w == (-s^2 + 4*r*t)/(4*r)) ||
(s == 0 && r < 0 && u == r && v == 0 && w == t) ||
(s == 0 && r == 0 && u == 0 && w == t) ||
(s == 0 && r > 0 && u == r && v == 0 && w == t) ||
(s > 0 && r < 0 && u == r && v == s/(2*r) && w == (-s^2 + 4*r*t)/(4*r)) ||
(s > 0 && r > 0 && u == r && v == s/(2*r) && w == (-s^2 + 4*r*t)/(4*r))



Hope that helps,
Peter


  • Prev by Date: More on Style Sheets in Version 6.0
  • Next by Date: Re: Mathematica 6.0 easier for me ... (small review)
  • Previous by thread: Re: Quadratic form: symbolic transformation
  • Next by thread: Re: Quadratic form: symbolic transformation