Consider an expression of the form $a + b \sqrt{2}$, where $a,b \in \mathbb{Q}$. How can I extract $b$ (or equivalently $a$) from this expression?
Answer
One can define the conjugate and use it to construct the rational and radical coefficients (rat
and rad
resp.). Just as PowerExpand
assumes bases are positive reals, conj[x]
will be correct only if the symbolic variables and functions in an expression x
represent rational numbers.
conj[x_] := x /. Sqrt[2] -> -Sqrt[2];
rat[x_] := (x + conj[x])/2;
rad[x_] := (x - conj[x])/(2 Sqrt[2]);
Through[{rat, rad}[a + b Sqrt[2]]]
(*
{a, b}
*)
Through[{rat, rad}[(a + b Sqrt[2])^2]]
% // Simplify
(*
{ 1/2 ((a - Sqrt[2] b)^2 + (a + Sqrt[2] b)^2),
(-(a - Sqrt[2] b)^2 + (a + Sqrt[2] b)^2)/(2 Sqrt[2]) }
{a^2 + 2 b^2, 2 a b}
*)
Simplify@Through[{rat, rad}[(3 - 2 Sqrt[2])/10]]
(*
{3/10, -(1/5)}
*)
More generally, one can extend the definitions to numbers over an arbitrary quadratic extension of the rationals.
Clear[conj, rat, rad];
conj[x_, sqroot_: Sqrt[2]] := x /. sqroot -> -sqroot;
rat[x_, sqroot_: Sqrt[2]] := (x + conj[x, sqroot])/2;
rad[x_, sqroot_: Sqrt[2]] := (x - conj[x, sqroot])/(2 sqroot);
Comments
Post a Comment