関係が常に満たされるようにパラメータを解きます

Nov 26 2020

いくつかの変数によってパラメーター化された関数があるとしましょう。簡単な例として$$F(x,y) = ax^2 +by^2-cxy+1$$ パラメータの値のセット(実際には何であるかは関係ありません)を見つけて、関係が $$ F(x,y)>0$$そのドメインのすべてのポイントに当てはまります。したがって、(1,1,1)のような値を返したいと思います。可能なすべての値は必要ありません。関係が成り立つ一例です。

これを行うことができるMathematicaの関数はありますか?私が操作する必要のある実際の関数ははるかに複雑で、いくつかのパラメーターがありますが、これは簡単に実行できますか?

私は知っSolveAlwaysていますが、平等の代わりに関係を適用するときはそれが好きではありません。

助けてくれてありがとう!

回答

8 user64494 Nov 26 2020 at 23:53

あなたは何を好むか:

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

または

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

次に、Resolve[ForAll[{x, y}, a*x^2 + b*y^2 > 0 && a < 0 && b < 0], Reals]結果として。FalseFindInstance[ Resolve[ForAll[{x, y}, a*x^2 + b*y^2 > 0 && a < 0 && b < 0], Reals], {a, b}, Reals]生成し{}ます。これらの出力は、解決策がないことを示しています。

6 MichaelE2 Nov 27 2020 at 01:24

SolveAlways[eqns, vars]そのドキュメントによると、と同等Solve[ ! Eliminate[! eqns, vars]]です。これはReduce、不等式を処理できるに変換できます。

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

これは、@ 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  *)