Resolva os parâmetros para que uma relação seja sempre satisfeita
Digamos que eu tenha uma função parametrizada por uma série de variáveis. Como um exemplo simples$$F(x,y) = ax^2 +by^2-cxy+1$$ Eu quero encontrar algum conjunto de valores (não importa quais sejam) para os parâmetros para que a relação $$ F(x,y)>0$$vale para todos os pontos de seu domínio. Então, eu gostaria de retornar valores como (1,1,1). Não preciso de todos os valores possíveis, apenas um exemplo de onde a relação se mantém.
Existe uma função no Mathematica que poderia fazer isso? A função real que preciso operar é muito mais complicada e tem mais alguns parâmetros, mas isso pode ser feito de forma simples?
Eu sei SolveAlways
, mas não gosto quando aplico relações em vez de igualdades.
Agradeço qualquer ajuda!
Respostas
O que você prefere:
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*)
ou
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}}*)
?
Em seguida, Resolve[ForAll[{x, y}, a*x^2 + b*y^2 > 0 && a < 0 && b < 0], Reals]
resulta em False
e FindInstance[ Resolve[ForAll[{x, y}, a*x^2 + b*y^2 > 0 && a < 0 && b < 0], Reals], {a, b}, Reals]
produz {}
. Essas saídas indicam que não há solução.
SolveAlways[eqns, vars]
de acordo com sua documentação é equivalente a Solve[ ! Eliminate[! eqns, vars]]
. Isso pode ser traduzido para Reduce
, que pode lidar com desigualdades:
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))
*)
Isso é equivalente ao resultado de @ user64494:
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 *)