Solve for parameters so that a relation is always satisfied
What do you prefer:
Resolve[ForAll[{x, y}, a*x^2 + b*y^2 - c*x*y + 1 > 0], Reals]
(*(a == 0 && b >= 0 && c == 0) || (a >= 0 && b >= 0 && c == 0) || (a > 0 && 4 a b - c^2 >= 0*)
or
FindInstance[ Resolve[ForAll[{x, y}, a*x^2 + b*y^2 - c*x*y + 1 > 0],Reals],{a, b,c}, Reals,3]
(*{{a->96,b->12,c->0},{a->0,b->275,c->0},{a->0,b->113,c->0}}*)
?
Next, Resolve[ForAll[{x, y}, a*x^2 + b*y^2 > 0 && a < 0 && b < 0], Reals]
results in False
and FindInstance[ Resolve[ForAll[{x, y}, a*x^2 + b*y^2 > 0 && a < 0 && b < 0], Reals], {a, b}, Reals]
produces {}
. These outputs say there is no solution.
SolveAlways[eqns, vars]
according to its documentation is equivalent to Solve[ ! Eliminate[! eqns, vars]]
. This can be translated to Reduce
, which can deal with inequalities:
red = Reduce[
Not@Reduce[Not[a*x^2 + b*y^2 - c*x*y + 1 > 0], {a, b, c}, {x, y}],
Reals]
(*
(c < 0 && b > 0 && a >= c^2/(4 b)) || (c == 0 && b >= 0 &&
a >= 0) || (c > 0 && b > 0 && a >= c^2/(4 b))
*)
This is equivalent to @user64494's result:
res = Resolve[ForAll[{x, y}, a*x^2 + b*y^2 - c*x*y + 1 > 0], Reals]
Reduce[res \[Implies] red && red \[Implies] res]
(* True *)