QE で最大
前回は最大値を求めるところを,値域まで求めてしまいましたので,今回は関数の最大値のみを求めます.と言っても方法はいつもと同じで,定義を論理式で表し,QE するだけです.
まず最大値の定義ですが,集合 A を定義域とする実数値関数 f の最大値が M であるとは
∃x [ x ∈ A ∧ f(x) = M ] ∧ ∀x [ x ∈ A → f(x) ≦ M ]
ということでした.そこで
Reduce[
Exists[ k, -4 < k < 4, Sqrt[(-(k - 4)^3)*(k + 4)]/(4*Sqrt[3]) == M ] &&
ForAll[ k, -4 < k < 4, Sqrt[(-(k - 4)^3)*(k + 4)]/(4*Sqrt[3]) <= M ],
Reals
]
のように QE すれば
M == 3
と出力されます.ここで Mathematica の特称,全称関数では
Exists[ V, P && Q ] を Exists[ V, P, Q ]
ForAll[ V, P ⇒ Q ] を ForAll[ V, P, Q ]
と略記できることに注意します.
そして集合 A を定義域とする実数値関数 f の最大値を与える点が a であるとは
a ∈ A ∧ ∀x [ x ∈ A → f(x) ≦ f(a) ]
ということですから
Reduce[
-4 < a < 4 &&
ForAll[ k, -4 < k < 4, Sqrt[(-(k - 4)^3)*(k + 4)]/(4*Sqrt[3]) <= Sqrt[(-(a - 4)^3)*(a + 4)]/(4*Sqrt[3]) ],
Reals
]
のように QE すれば
a == -2
と出力されます.