First, let's build the function you want to define. We use your equation bound[K10P] == 0
and more general Re[bound[K10P]] == 0
Q10 = 1/2*(p0 + (m1 - m2)*(m1 + m2)/p0);
Q10Min = (m1^2 + p0^2/4)/p0;
u0Max = p0*(Q10 - Q10Min)/(p0 - Q10Min - Sqrt[Q10Min^2 - m1^2]);
K10P = -m1^2*
Q10*(1 - 2*alpha)^2/(p0^2 - 2*p0*Q10 +
Q10^2*(1 - (1 - 2*alpha)^2)) +
Sqrt[(-m1^2*
Q10*(1 - 2*alpha)^2/(p0^2 - 2*p0*Q10 +
Q10^2*(1 - (1 - 2*alpha)^2)))^2 + (m1^4*(1 - 2*alpha)^2 +
m1^2*(p0 - Q10)^2)/(p0^2 - 2*p0*Q10 +
Q10^2*(1 - (1 - 2*alpha)^2))];
ContourPlot[bound[K10P] == 0, {alpha, -1, 2}, {xi, 0, 1.2},
FrameLabel -> Automatic, PlotPoints -> 150]
ContourPlot[Re[bound[K10P]] == 0, {alpha, -5, 5}, {xi, 0, 1.2},
FrameLabel -> Automatic, PlotPoints -> 150]
We see that the alpha
function has several branches for real values of xi
. This is the problem. The same can be obtained using
bound[K10P] // FullSimplify
Out[]= -((25 (96 - Sqrt[(
1 - 96 (-1 + alpha) alpha)/((-1 + alpha)^2 alpha^2)] + 1/(
alpha - alpha^2)))/(12 (196 + 1/(1 - alpha) + 1/alpha - Sqrt[(
1 - 96 (-1 + alpha) alpha)/((-1 + alpha)^2 alpha^2)] +
Sqrt[2] (1 -
2 alpha) Sqrt[((1 -
2 alpha)^2 (1 + (-1 + alpha) alpha (-48 + Sqrt[(
1 - 96 (-1 + alpha) alpha)/((-1 +
alpha)^2 alpha^2)])))/((-1 + alpha)^2 alpha^2)]))) +
xi
From here we immediately find (xif=xi
)
xif[alpha_] := (
25 (96 - Sqrt[(
1 - 96 (-1 + alpha) alpha)/((-1 + alpha)^2 alpha^2)] + 1/(
alpha - alpha^2)))/(
12 (196 + 1/(1 - alpha) + 1/alpha - Sqrt[(
1 - 96 (-1 + alpha) alpha)/((-1 + alpha)^2 alpha^2)] +
Sqrt[2] (1 -
2 alpha) Sqrt[((1 -
2 alpha)^2 (1 + (-1 + alpha) alpha (-48 + Sqrt[(
1 - 96 (-1 + alpha) alpha)/((-1 +
alpha)^2 alpha^2)])))/((-1 + alpha)^2 alpha^2)]))
Get the same curves
{Plot[xif[x], {x, 0, 1.2}, PlotPoints -> 200,
AxesLabel -> {"alpha", "xi"}],
Plot[Re[xif[x]], {x, -5, 5}, PlotPoints -> 200,
AxesLabel -> {"alpha", "xi"}]}
Define the inverse function
\[Alpha] =
InverseFunction[
Function[{alpha}, (
25 (96 - Sqrt[(
1 - 96 (-1 + alpha) alpha)/((-1 + alpha)^2 alpha^2)] + 1/(
alpha - alpha^2)))/(
12 (196 + 1/(1 - alpha) + 1/alpha - Sqrt[(
1 - 96 (-1 + alpha) alpha)/((-1 + alpha)^2 alpha^2)] +
Sqrt[2] (1 -
2 alpha) Sqrt[((1 -
2 alpha)^2 (1 + (-1 + alpha) alpha (-48 + Sqrt[(
1 - 96 (-1 + alpha) alpha)/((-1 +
alpha)^2 alpha^2)])))/((-1 + alpha)^2 alpha^2)]))]]
If you evaluate the alpha function, then there will be no answer, since the system will not be able to select a branch. But you can choose the branch of the solution of the equation. Suppose we chose branch 0<alpha<1
. Define the function
xif[alpha_ /; alpha > 0 && alpha < 1] := (
25 (96 - Sqrt[(
1 - 96 (-1 + alpha) alpha)/((-1 + alpha)^2 alpha^2)] + 1/(
alpha - alpha^2)))/(
12 (196 + 1/(1 - alpha) + 1/alpha - Sqrt[(
1 - 96 (-1 + alpha) alpha)/((-1 + alpha)^2 alpha^2)] +
Sqrt[2] (1 -
2 alpha) Sqrt[((1 -
2 alpha)^2 (1 + (-1 + alpha) alpha (-48 + Sqrt[(
1 - 96 (-1 + alpha) alpha)/((-1 +
alpha)^2 alpha^2)])))/((-1 + alpha)^2 alpha^2)]))
Make sure that we select the desired branch:
{Plot[xif[x], {x, 0, 1.2}, PlotPoints -> 200,
AxesLabel -> {"alpha", "xi"}, PlotRange -> All],
Plot[Re[xif[x]], {x, -5, 5}, PlotPoints -> 200,
AxesLabel -> {"alpha", "xi"}, PlotRange -> {0, 1}]}
Define and plot the inverse function
alph = InverseFunction[xif]
Plot[alph[x], {x, .3, 0.99}, PlotRange -> All,
AxesLabel -> {"xi", "alpha"}]