Znajdź parametry, aby relacja była zawsze spełniona
Powiedzmy, że mam funkcję sparametryzowaną przez szereg zmiennych. Jako prosty przykład$$F(x,y) = ax^2 +by^2-cxy+1$$ Chcę znaleźć zestaw wartości (nie ma znaczenia, jakie to są) dla parametrów, aby uzyskać relację $$ F(x,y)>0$$zachowuje wszystkie punkty swojej domeny. Chciałbym więc, aby zwracane były wartości takie jak (1,1,1). Nie potrzebuję wszystkich możliwych wartości, tylko jeden przykład, w którym relacja jest zachowana.
Czy w Mathematica jest funkcja, która mogłaby to zrobić? Rzeczywista funkcja, na której muszę pracować, jest znacznie bardziej skomplikowana i ma kilka dodatkowych parametrów, ale czy można to zrobić w prosty sposób?
Wiem o tym SolveAlways
, ale nie podoba mi się, kiedy stosuję relacje zamiast równości.
Doceniam każdą pomoc!
Odpowiedzi
Co wolisz:
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*)
lub
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}}*)
?
Następnie Resolve[ForAll[{x, y}, a*x^2 + b*y^2 > 0 && a < 0 && b < 0], Reals]
daje wyniki False
i FindInstance[ Resolve[ForAll[{x, y}, a*x^2 + b*y^2 > 0 && a < 0 && b < 0], Reals], {a, b}, Reals]
produkuje {}
. Te wyniki mówią, że nie ma rozwiązania.
SolveAlways[eqns, vars]
zgodnie z dokumentacją jest równoważne z Solve[ ! Eliminate[! eqns, vars]]
. Można to przetłumaczyć na to Reduce
, co może radzić sobie z nierównościami:
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))
*)
Jest to równoważne z wynikiem @ 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 *)