Discussion:
Radical conjugates
(too old to reply)
Francisco Javier García Capitán
2013-02-04 06:26:03 UTC
Permalink
Hello, I wanted a function that takes a numerical expression of the form

a + b Sqrt[c]

or

a Sqrt[b] + c Sqrt[d]

and returns its conjugate, namely a - b Sqrt[c] and (a Sqrt[b] - c
Sqrt[d]) respectively.

I wrote

RadicalConjugate[x_] := Module[{c},
c = Cases[x, Power[_]];
If[Length[c] > 0, x /. c[[1]] -> -c[[1]], x]
]

and it seems that it works. Anyway, do you have a different approach?

Thank you.

--
---
Francisco Javier Garc=EDa Capit=E1n
http://garciacapitan.99on.com
Bob Hanlon
2013-02-05 03:23:41 UTC
Permalink
Clear[radicalConjugate1, radicalConjugate2]

radicalConjugate1[x_] := Module[{c},
c = Cases[x, Power[_]];
If[Length[c] > 0, x /. c[[1]] -> -c[[1]], x]]

radicalConjugate2[n_] :=
n /. (y_.*Sqrt[z_] + x_. -> x - y*Sqrt[z]);

testData = {a + b Sqrt[c], a Sqrt[b] + c Sqrt[d],
c Sqrt[d] + a Sqrt[b], a Sqrt[b]};

radicalConjugate1 /@ testData

{-a + b Sqrt[c], -a Sqrt[b] + c Sqrt[d], -a Sqrt[b] + c Sqrt[d], -a Sqrt[b]}

radicalConjugate2 /@ testData

{a - b Sqrt[c], -a Sqrt[b] + c Sqrt[d], -a Sqrt[b] + c Sqrt[d], -a Sqrt[b]}

Note the difference in the handling of the first test case.


Bob Hanlon


On Mon, Feb 4, 2013 at 1:21 AM, Francisco Javier Garc=EDa Capit=E1n
Post by Francisco Javier García Capitán
Hello, I wanted a function that takes a numerical expression of the form
a + b Sqrt[c]
or
a Sqrt[b] + c Sqrt[d]
and returns its conjugate, namely a - b Sqrt[c] and (a Sqrt[b] - c
Sqrt[d]) respectively.
RadicalConjugate[x_] := Module[{c},
c = Cases[x, Power[_]];
If[Length[c] > 0, x /. c[[1]] -> -c[[1]], x]
]
and it seems that it works. Anyway, do you have a different approach?
Thank you.
--
---
Francisco Javier Garc=EDa Capit=E1n
http://garciacapitan.99on.com
Continue reading on narkive:
Loading...