There is no region in the positive parameter space for which there are exactly two positive roots. We can show this as follows. First note that the number of positive roots can only change by a root crossing the axis or by two roots joining (a multiple roots) and becoming complex valued as the parameter changes. The first case is accounted for by solving for the parameter when z
is zero. The second arises at roots of the discriminant polynomial. All we need to do is find all these relative change points, and count positive roots at the centers of the intervals between them (since the number of positive roots is constant in these intervals).
fF[z_, \[Beta]_] :=
z^4 + z^3 (4.67687 - 0.16 \[Beta]^2) +
z^2 (-0.703991 - 0.652433 \[Beta]^2) +
z (0.0676982 - 0.049884 \[Beta]^2) - 0.000608244 \[Beta]^2 +
0.0000234502;
discrim = Discriminant[fF[z, b], z]
(* Out[27]= -0.0914115 + 0.386364 b^2 - 0.353399 b^4 - 0.062053 b^6 +
0.00686865 b^8 + 0.000346896 b^10 + 9.23814*10^-6 b^12 *)
changePts1 =
Select[b /. NSolve[discrim], FreeQ[#, Complex] && # > 0 &]
changePts2 =
Select[b /. NSolve[fF[z, b] /. z -> 0], FreeQ[#, Complex] && # > 0 &]
changePts = Sort[Join[changePts1, changePts2]]
(* Out[42]= {0.607052, 0.779012, 3.00021}
Out[43]= {0.196352}
Out[44]= {0.196352, 0.607052, 0.779012, 3.00021} *)
extendedPts = Join[{0}, changePts, {Last[changePts] + 1}];
testPts = Map[Mean, Partition[extendedPts, 2, 1]]
(* Out[46]= {0.0981758, 0.401702, 0.693032, 1.88961, 3.50021} *)
solns = Map[z /. NSolve[fF[z, #]] &, testPts]
(* Out[47]= {{-4.82541, -0.000260933, 0.0751716 - 0.0912008 I,
0.0751716 + 0.0912008 I}, {-4.82147, 0.00127418,
0.0845699 - 0.070761 I, 0.0845699 + 0.070761 I}, {-4.81328,
0.00736127, 0.0480394,
0.157853}, {-4.74059, -0.0177988 - 0.0189466 I, -0.0177988 +
0.0189466 I, 0.670623}, {-4.58696, -0.0412625, -0.0203156,
1.93191}} *)
We see that no interval has exactly two positive roots (between 0.607052 and 0.779012 there are three positive roots). If you ignore multiplicity, there are exactly two at the endpoints of that particular interval.
Map[z /. NSolve[fF[z, #]] &, changePts]
(* Out[48]= {{-4.82466, 0., 0.0769773 - 0.0877929 I,
0.0769773 + 0.0877929 I}, {-4.81613, 0.00443875, 0.0968922,
0.0968922}, {-4.81006, 0.0193691, 0.0193691,
0.191554}, {-4.63723, -0.0284017, -0.0284017, 1.45737}} *)