1

Is there any way to tell Mathematica to replace $\kappa^2 + k_z^2 \rightarrow k^2$ in an expression? I want to make a result more readable, e.g. something like this:

$$\frac{2 k_z^3 \sqrt{k_z^2 + \kappa^2} + 2 k_z \kappa^2 \sqrt{k_z^2 + \kappa^2} + k_z \sqrt{k_z^2 + \kappa^2} \mu^2}{2 (k_z^4 + 2 k_z^2 \kappa^2 + \kappa^4)}$$


(2 kz^3 Sqrt[kz^2 + κ^2] + 2 kz κ^2 Sqrt[kz^2 + κ^2] + kz Sqrt[kz^2 + κ^2] μ^2)/
 (2 (kz^4 + 2 kz^2 κ^2 + κ^4))

Which can be simplified to:

$$k_z \frac{ (2k^2 + \mu^2) }{2k^3}$$

But I can't get Mathematica to perform this substitution. I have made sure to use the proper assumptions for this to work:

$Assumptions={k>0};

Yet it seems to not see the (arguably trivial) patterns. Does anyone know how to trick Mathematica into doing what I want :-)?

Mr.Wizard
  • 271,378
  • 34
  • 587
  • 1,371
rubenvb
  • 191
  • 2
  • 7

4 Answers4

1

Well, in exploring the physics of my result, I got an idea that helps to get What I Want™:

$Assumptions={k>0};
thing:=(2 kz^3 Sqrt[kz^2 + κ^2] + 2 kz κ^2 Sqrt[kz^2 + κ^2] + kz Sqrt[kz^2 + κ^2] μ^2)/(2 (kz^4 + 2 kz^2 κ^2 + κ^4));

thing /. kz->k Cos[α] /. κ->k Sin[α]//Simplify
% /. α->ArcCos[kz/k]

It's literally a workaround, but it does the trick quite nicely in this and probably similar cases.

rubenvb
  • 191
  • 2
  • 7
1

This is your expression:

expr = (2 kz^3 Sqrt[kz^2 + \[Kappa]^2] + 
 2 kz \[Kappa]^2 Sqrt[kz^2 + \[Kappa]^2] + 
 kz Sqrt[kz^2 + \[Kappa]^2] \[Mu]^2)/(2 (kz^4 + 
   2 kz^2 \[Kappa]^2 + \[Kappa]^4));

This gives us the substitution:

    sl = Solve[kz^2 + \[Kappa]^2 == k^2, \[Kappa]][[2, 1]]

(*  \[Kappa] -> Sqrt[k^2 - kz^2]   *)

An here it acts on your expression yielding the desired result:

 Simplify[expr /. sl, {k > 0, \[Kappa] > 0}]

(*  (kz (2 k^2 + \[Mu]^2))/(2 k^3)   *)

It is basically almost the same as in the eldo's answer, but has the advantage that when one takes the replacement kz^2 + \[Kappa]^2 -> k^2Mma in some situations understands it, but may miss in some others. So, it may require some additional efforts. In contrast with the above substitution everything goes smooth.

Alexei Boulbitch
  • 39,397
  • 2
  • 47
  • 96
0

The following will work, but it's probably not the best way

PowerExpand[FullSimplify[(2 kz^3 Sqrt[kz^2 + κ^2] + 2 kz κ^2 Sqrt[kz^2 + κ^2] + 
      kz Sqrt[kz^2 + κ^2] μ^2)/(2 (kz^4 + 2 kz^2 κ^2 + κ^4)) /. 
      kz^(2 a__) -> (k^2 - κ^2)^a] /. (kz^2 + κ^2) -> k^2]

Output

(kz (2 k^2 + μ^2))/(2 k^3)
Sektor
  • 3,320
  • 7
  • 27
  • 36
Thornton
  • 99
  • 3
0

no doubt covered in the above links, but since I worked it out:

 thing = (2 kz^3 Sqrt[kz^2 + kappa^2] + 
      2 kz kappa^2 Sqrt[kz^2 + kappa^2] + 
         kz Sqrt[kz^2 + kappa^2] mu^2)/(2 (kz^4 + 2 kz^2 kappa^2 + 
             kappa^4));
 f = # /. Table[ (kz^2)^n -> (K^2 - kappa^2)^n , {n, 1, 2}] &;
 cpx[e_] := 100 Count[e, kz, {0, Infinity}] + LeafCount[e] 
 Simplify[ thing , TransformationFunctions -> {Automatic, f}, 
                   ComplexityFunction -> cpx, Assumptions -> K > 0] 

(kz (2 K^2 + mu^2))/(2 K^3)

The ComplexityFunction is a not-so-obvious key here. The intermediate results of the transformation are evidently deemed more complex by the default and not applied.

george2079
  • 38,913
  • 1
  • 43
  • 110