Résoudre les paramètres pour qu'une relation soit toujours satisfaite
Disons que j'ai une fonction paramétrée par un certain nombre de variables. À titre d'exemple simple$$F(x,y) = ax^2 +by^2-cxy+1$$ Je veux trouver un ensemble de valeurs (peu importe ce qu'elles sont) pour les paramètres afin que la relation $$ F(x,y)>0$$vaut pour tous les points de son domaine. Je voudrais donc que des valeurs soient renvoyées comme (1,1,1). Je n'ai pas besoin de toutes les valeurs possibles, juste d'un exemple où la relation tient.
Y a-t-il une fonction dans Mathematica qui pourrait faire cela? La vraie fonction sur laquelle j'ai besoin d'opérer est beaucoup plus compliquée et comporte quelques paramètres supplémentaires, mais cela peut-il être fait simplement?
Je sais SolveAlways
, mais ça n'aime pas ça quand j'applique des relations au lieu d'égalités.
J'apprécie toute aide!
Réponses
Que préfères-tu:
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}}*)
?
Ensuite, Resolve[ForAll[{x, y}, a*x^2 + b*y^2 > 0 && a < 0 && b < 0], Reals]
aboutit False
et FindInstance[ Resolve[ForAll[{x, y}, a*x^2 + b*y^2 > 0 && a < 0 && b < 0], Reals], {a, b}, Reals]
produit {}
. Ces sorties indiquent qu'il n'y a pas de solution.
SolveAlways[eqns, vars]
selon sa documentation équivaut à Solve[ ! Eliminate[! eqns, vars]]
. Cela peut se traduire par Reduce
, qui peut traiter les inégalités:
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))
*)
Ceci est équivalent au résultat 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 *)