# Solving a complex function in two parametres within a range

Define:

YH[beta_, alpha_, Y4_] := - 173  Cos[beta] * Sin[alpha] + (2 Y4* Cos[alpha])
g[beta_, alpha_, yy_, zz_, jj_] := -Sin[alpha]  (yy + jj) + Cos[alpha]  zz

r[ms_] := (750^2)/(4.*ms^2)
k[ms_] := (-1/4)*(Log[( 1 + Sqrt[1 - r[ms]^-1])/(1 - Sqrt[1 - r[ms]^-1]) ] - (I* Pi))^2
AS[ms_] := -((r[ms]) - k[ms])/(r[ms])^2

rt := (750^2)/(4.* 173^2)
kt := (-1/ 4)*(Log[( 1 + Sqrt[1 - rt^-1])/(1 - Sqrt[1 - rt^-1]) ] - (I*Pi))^2
At := 2* (rt + ((rt - 1)*kt))/(rt)^2


Now my function is:

sigma[ms_, beta_, alpha_, Y4_, yy_, zz_, jj_] := 1/(256*Pi)* Abs[(1/2) YH[beta, alpha, Y4] * At +  3/(2 ms^2)  *AS[ms]* g[beta, alpha, yy, zz,jj]]^2 *(10)


I want to solve sigma[ms, ArcTan[0.9], ArcTan[0.1], -2.0, 10, zz, 10] for ms and zz to satisfy

cm := 0 <= sigma[ms, ArcTan[0.9], ArcTan[0.1], -2.0, 10, zz, 10] <= 10

The first command I can is Reduce, I tried:

reg:= Reduce[cm, {ms, zz}]

but Reduce here take too much time in Running and stuck, is there any thing can make Reduce more quicker and get out the solution ? or can I use other powerful command ?

Edit

As the discussion in this post, I learnt that one can avoid using Reduce for complicated function, and can know the values of the parameters which satisfy the function regions as in @Marius Ladegård Meyer answer. Now come to my sigma, for instance if I require 1 <= sigma[300, ArcTan[s], ArcTan[n], -2.0, 10, 10, 10] <= 100 then

RegionPlot[1 <= sigma[300, ArcTan[s], ArcTan[n], -2.0, 10, 10, 10] <= 100, {s,0.1, 2}, {n, 1, 10}]

Gives:

• Hay any help about solving this equation .. I want at the end to plot sigma[ms, ArcTan[0.9], ArcTan[0.1], -2.0, 10, zz, 10] in (ms,zz) plan at the specified region, i.e, RegionPlot[reg, {ms,100,500},{zz,-10,10}], but Reduce stuck ..
– S.S.
Jun 10, 2016 at 13:37

You are expecting too much of Reduce in this case, as sigma[ms, ArcTan[0.9], ArcTan[0.1], -2.0, 10, zz, 10] depends on ms in a quite complicated way. Therefore you should not expect Reduce to be able to give a symbolic rule for when the inequality is satisfied.

However, we can use numerics to try to find approximate regions where the inequalities hold. Since your function is a positive number times an Abs[]^2 this will always be greater than or equal to zero, so the first inequality is trivially satisfied. Let's then look at how low we may make this function go, without much effort:

NMinimize[Evaluate[sigma[ms, ArcTan[0.9], ArcTan[0.1], -2.0, 10, zz, 10]], {ms, zz}]


{1.92359*10^7, {ms -> 0.000012937, zz -> -464232.}}

Oh boy, that is a long way from 10. Plotting around this point indeed gives little hope:

Plot3D[sigma[ms, ArcTan[0.9], ArcTan[0.1], -2.0, 10, zz, 10],
{ms, 0, 20}, {zz, -1000000, -100000}, AxesLabel -> {"ms", "zz", ""}]


So unless I'm looking at ridiculous values of ms, zz and there is in fact another minimum hidden somwhere, which I doubt, then you won't be able to satisfy your second inequality.

• I want to plot in 2 dimensions of (ms, zz), and not ContourPlot. Can I use RegionPlot with no need for Reduce ?
– S.S.
Jun 10, 2016 at 15:59
• Yes you could have used RegionPlot like this RegionPlot[0 <= sigma[ms, ArcTan[0.9], ArcTan[0.1], -2.0, 10, zz, 10] <= 10, {ms, ms0, ms1}, {zz, zz0, zz1}], but my point is that this will produce an empty plot no matter what values of ms0, ms1, zz0, zz1 you choose, because the <= 10 inequality is never satisfied for this function. Jun 10, 2016 at 16:06
• RegionPlot[0 <= sigma[ms, ArcTan[0.9], ArcTan[0.1], -2.0, 10, zz, 10] <= 10, {ms, ms0, ms1}, {zz, zz0, zz1}], simply works ..
– S.S.
Jun 10, 2016 at 16:41
• @S.S., now I don't follow at all. What do you mean it "simply works"? Jun 10, 2016 at 17:27
• ok I added sigma in the question (it's now * 10 instead of 10^8), and give a real example for it when using RegionPlot according to parameters ranges ..
– S.S.
Jun 10, 2016 at 19:27