Is there a simple way to get the Conjugate of a complex term, provided all information is available?
I've found a few threads addressing this, but they all seem to have pretty clunky answers, and it's hard to believe there's not a more elegant solution in Mathematica:
a problem about simplifing conjugate
The first thread is very clunky and I'm having trouble implementing it in a standalone function, and the 2nd solution isn't working for me, as far as I can tell.
Here's the simplest I can reduce my problem to. Let's say I have a term:
bop = Sqrt[x-2]
And I want to find the complex conjugate (CC) of it, and let's assume x is Real. I think MMa runs into problems because, depending on the value of x, the form of the CC will be pretty different. For example, if x>2, then bop is real, and the CC is just bop.
On the other hand, if x<2, then the value in the Sqrt is negative, you'd have to pull an imaginary i out of the Sqrt, and flip its sign.
Alright, so now I'm giving it all the information it should need to give me the unambiguous answer:
Assuming[x \[Element] Reals && x < 2, FullSimplify@Conjugate@bop]
Yet, this still gives me:
Conjugate[Sqrt[-2 + x]]
I'm sure I'm just missing something, but what is it? Any advice is appreciated, thank you.
edit: Alright, I solved my contrived example, by doing this:
Assuming[x \[Element] Reals && x < 2,
Simplify@Conjugate@ComplexExpand@bop]
-I Sqrt[2 - x]
Which is good. The Simplify[] step is actually kind of vital because without it, it's comes out as a mess, even for something that simple.
Here is my actual application, which is still doing something funky. I have this term of a matrix:
t22 = 0.5 (0. +
0.5 E^((0. + 5.14215 I) Sqrt[-2 + energy]) (1 - Sqrt[-2 + energy]/
Sqrt[energy])) (1 - Sqrt[energy]/Sqrt[-2 + energy]) +
0.5 (0. +
0.5 E^((0. - 5.14215 I) Sqrt[-2 + energy]) (1 + Sqrt[-2 + energy]/
Sqrt[energy])) (1 + Sqrt[energy]/Sqrt[-2 + energy])
Which is very ugly, unfortunately. The important things to notice are, first, it is complex, and second, there are 3 regimes of interest: energy <= 0, 0 < energy <= 2, and energy >=2.
I don't mind taking care of those three cases separately, so let's look at the simpler case of energy >= 2.
My goal is to find $|t_{22}|^2=t_{22}^*t_{22}$, which should then be a real number.
The first hurdle is getting $t_{22}^*$. Using Refine doesn't work:
Refine[Conjugate[t22], energy > 2]
gives
Conjugate[
0.5 (0. +
0.5 E^((0. + 5.14215 I) Sqrt[-2 + energy]) (1 -
Sqrt[(-2 + energy)/energy])) (1 - Sqrt[
energy/(-2 + energy)]) +
0.5 (0. +
0.5 E^((0. - 5.14215 I) Sqrt[-2 + energy]) (1 +
Sqrt[(-2 + energy)/energy])) (1 + Sqrt[energy/(-2 + energy)])]
However, it works if I stick a Simplify in there (I kind of thought that's what Refine was doing though?):
t22conj=Refine[Simplify@Conjugate[t22], energy > 2]
gives:
(E^((0. + 5.14215 I) Sqrt[-2 + energy]) (-0.5 + 0.5 energy +
0.5 Sqrt[(-2 + energy) energy] +
E^((0. - 10.2843 I) Sqrt[-2 + energy]) (0.5 - 0.5 energy +
0.5 Sqrt[(-2 + energy) energy])))/Sqrt[(-2 + energy) energy]
Alright, now I want to find $|t_{22}|^2$. Just trying it simply leaves imaginary parts in the answer:
T = Refine[(t22conj*t22), energy > 2]
1/Sqrt[(-2+energy) energy] E^((0. +5.14215 I) Sqrt[-2+energy]) (0.5 (0. +0.5 E^((0. +5.14215 I) Sqrt[-2+energy]) (1-Sqrt[(-2+energy)/energy])) (1-Sqrt[energy/(-2+energy)])+0.5 (0. +0.5 E^((0. -5.14215 I) Sqrt[-2+energy]) (1+Sqrt[(-2+energy)/energy])) (1+Sqrt[energy/(-2+energy)])) (-0.5+0.5 energy+0.5 Sqrt[(-2+energy) energy]+E^((0. -10.2843 I) Sqrt[-2+energy]) (0.5 -0.5 energy+0.5 Sqrt[(-2+energy) energy]))
If I evaluate this at an actual value in the assumed range, the imaginary part is indeed small:
T /. energy -> 2.6
1.3564 - 1.11022*10^-16 I
However, I'd really like a general form where I don't have to plug in a value and then take the real part (because it should already be only real). I assume this has to do with numerical precision, and that in theory something times its conjugate is real, but here, if you're even slightly off, an imaginary part will remain.
Is there any way to make this work?
thank you!
Comments
Post a Comment