Résoudre les paramètres pour qu'une relation soit toujours satisfaite

Nov 26 2020

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

8 user64494 Nov 26 2020 at 23:53

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 Falseet 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.

6 MichaelE2 Nov 27 2020 at 01:24

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  *)