東ロボくんのこと(13)一変数化,下限上限の一致 by BOTTEMA

 http://d.hatena.ne.jp/ehito/20131208/1386496330 で述べた(4)は

 ∃k( ∃x(x∈D∧k=f(x)) ∧ ∀x(x∈D→k≦f(x)) ∧ ∀x(x∈D→k≧f(x)) )

であり,これはDが空集合でないなら(5),つまり

 ∃k( ∀x(x∈D→k≦f(x)) ∧ ∀x(x∈D→k≧f(x)) )

と等価です.

 しかも,∀x(x∈D→0≦p(x)) の形はQE向きであり,∀x(x∈D→k≦f(x)),∀x(x∈D→k≧f(x)) を個別に処理すれば良い点も好印象です.そこで,RedLog の後塵を拝した Mathematica

Reduce[ForAll[{sq2, a, b, x, y, s, L1, L2, L3}, asm, k <= L1 + L2 + L3], Reals]

と問う訳ですが,やはり帰って来ません.

 ...という訳で,BOTTEMA2009 on Maple (http://d.hatena.ne.jp/ehito/20111010/1318225575) の登壇となります.ただし,制約(定義域の条件)に等式は使えない(ことになっている)ので,A≧B∧A≦B といったコストの高い話になってしまいます.そこで今回は,線分の長さの和を a のみを用いて表し,0 <= a <= 1 のもとでその値域の下限,上限を求めてみます.

P = {0, -Sqrt[2]}; Q = {0, Sqrt[2]}; A = {a, Sqrt[a^2 + 1]};
{B, C2} = {{x, y}, {x, 2}} /. Solve[{{x, y} == (1 - s)*Q + s*A, y == Sqrt[2]/8*x^2}, {x, y, s}][[2]];
ca = Sqrt[(A - P).(A - P)] + Sqrt[(B - A).(B - A)] + Sqrt[(C2 - B).(C2 - B)];

この ca を Maple の書式にコンバートして

xmax(k<=ca,[0<=a,a<=1],k);
xmin(k>=ca,[0<=a,a<=1],k);

とすれば,見る間に処理が進み

`OUTPUT RESULT:`
`The best possible maximal const ` . k . ` is a root of the following polynomial :`
k^2-8*k+14
`which is between(`, 5, `,`, 17/3, `)`
`OUTPUT RESULT:`
`The best possible minimal const ` . k . ` is a root of the following polynomial :`
k^2-8*k+14
`which is between(`, 5, `,`, 17/3, `)`

に至ります.