|
3.4.8 不等式
方程式x^2 + 3x == 2はx^2 + 3xが2と等しいことを表すように,不等式 x^2 + 3x > 2はx^2 + 3xが2より大きいことを表す.Mathematicaでは,Reduceは方程式だけでなく不等式にも使用できる.

一変量の不等式の操作
この1組の不等式は単一の不等式に約すことができる.
In[1]:= Reduce[{0 < x < 2, 1 < x < 4}, x]
Out[1]= 
これらの不等式を同時に満足するのは無理である.
In[2]:= Reduce[{x < 1, x > 3}, x]
Out[2]= 
Reduce[eqn, x]は,方程式に適用されるとx == , ... という形式のxについての単純な方程式からなる結果を得ようとする.Reduce[ineq, x]は不等式に適用されても全く同じことをしようと試み, < x < , ... という形式のxについての単純な不等式からなる結果を得ようとする.
これは2次方程式をxについての2つの簡単な方程式に約す.
In[3]:= Reduce[x^2 + 3x == 2, x]
Out[3]= 
これは2次不等式をxについての2つの簡単な不等式に約す.
In[4]:= Reduce[x^2 + 3x > 2, x]
Out[4]= 
Reduce[ineq, x]によって生成された結果は,不等式で表現された一連の区間を表すものだと考えることができる.次数 の多項式のグラフは最高 回まで上下できるので,次数 の多項不等式は最大 の異なる区間を誘発することができる.
この不等式は3つの異なる区間を与える.
In[5]:= Reduce[(x - 1)(x - 2)(x - 3)(x - 4) > 0, x]
Out[5]= 
区間の終点は根と極点である.
In[6]:= Reduce[1 < (x^2 + 3x)/(x + 1) < 2, x]
Out[6]= 
この不等式を解くためにはProductLogを導入する必要がある.
In[7]:= Reduce[x - 2 < Log[x] < x, x]
Out[7]= 
のような超越関数は昇降を無限に繰り返すので,無数の区間が生成される.
2番目の不等式は有限個の区間しか許容しない.
In[8]:= Reduce[{Sin[x] > 0, 0 < x < 20}, x]
Out[8]= 
Reduceは次のようにして無限個の区間を表す.
In[9]:= Reduce[{Sin[x] > 0, 0 < x}, x]
Out[9]= 
比較的単純な入力でかなり複雑な結果が得られることもある.
In[10]:= Reduce[{Sin[x]^2 + Sin[3x] > 0, x^2 + 2 < 20}, x]
Out[10]= 
<=と<を含む不等式の場合,不等式が満足される孤立した点がある場合がある.Reduceは方程式を与えることでそのような点を表す.
この不等式は孤立した2つの点でのみ満足される.
In[11]:= Reduce[(x^2 - 3x + 1)^2 <= 0, x]
Out[11]= 
これは区間と孤立した点の両方を与える.
In[12]:= Reduce[{Max[Sin[2x], Cos[3x]] <= 0, 0 < x < 10}, x]
Out[12]= 

多変量不等式
多変量の不等式の場合,Reduceは実際には区間指定のネストした組を与える.この指定では後の方の変数は前の方の変数に依存する境界を持つ.
これはxとyについてのネストした不等式としての単位円板を表す.
In[13]:= Reduce[x^2 + y^2 < 1, {x, y}]
Out[13]= 
幾何学的な用語を使えば,いかなる線形不等式も空間を2等分する.ゆえに,線形不等式のリストは境界があったりなかったりする多面体を定義する.Reduceはそのような多面体をネストした不等式で表す.多面体の頂点は常にこれらの不等式の終点に当たる.
これは平面上に三角形の領域を定義する.
In[14]:= Reduce[{x > 0, y > 0, x + y < 1}, {x, y}]
Out[14]= 
1つの三角形でも2つの要素として表す必要があることもある.
In[15]:= Reduce[{x > y - 1, y > 0, x + y < 1}, {x, y}]
Out[15]= 
一般に不等式のリストは幾何学的なオブジェクトの間の重複する領域を表す.これらの表現は往々にして複雑になる.
これは線の片側の単位円版上の部分を表す.
In[16]:= Reduce[{x^2 + y^2 < 1, x + 3y > 2}, {x, y}]
Out[16]= 
これは2つの円板の共通部分である.
In[17]:= Reduce[{(x - 1)^2 + y^2 < 2, x^2 + y^2 < 2}, {x, y}]
Out[17]= 
円板間の距離が大きいと共通部分はなくなる.
In[18]:= Reduce[{(x - 4)^2 + y^2 < 2, x^2 + y^2 < 2}, {x, y}]
Out[18]= 
これは超越不等式を含んだ例である.
In[19]:= Reduce[{Sin[x y] > 1/2, x^2 + y^2 < 3/2}, {x, y}]
Out[19]= 
パラメータを含む不等式の場合,Reduceは方程式の場合と同じように起りうる個々のケースを自動的に処理する.
区間の形式はaの値に依存する.
In[20]:= Reduce[(x - 1)(x - a) > 0, x]
Out[20]= 
aの値によって双曲的な,あるいは楕円形の領域が得られる.
In[21]:= Reduce[x^2 + a y^2 < 1, {x, y}]
Out[21]= 
Reduceは不等式によって定義された領域の完全な記述を与えようとする.しかし,不等式を満足する変数の値の個々の例を求めたいこともあるだろう.そのような場合はFindInstanceを使うとよい.

不等式を満足する個々の点を求める
これは不等式を満足する特定の例を求める.
In[22]:= FindInstance[{Sin[x y] > 1/2, x^2 + y^2 < 3/2}, {x, y}]
Out[22]= 
これはこの不等式を満足する方法がないことを示している.
In[23]:= FindInstance[{Sin[x y] > 1/2, x^2 + y^2 < 1/4}, {x, y}]
Out[23]= 
FindInstanceと不等式の関係はSolveと等式の関係に例えることができる.FindInstanceはSolveのように変数の特定の値を与える規則のリストを返す.しかし,方程式の場合はこれらの値が一般的にすべての解を正確に表すのに対し,不等式の場合は不等式によって記述された領域内の孤立したサンプル点に相当するに過ぎない.
特定の入力で呼ばれる度にFindInstanceは同じ出力を返す.そして,特別の限定的な何らかの点に対応する例が存在する場合はそれらを優先的に返す.しかし一般的にはFindInstanceが返す例の分布は大抵の場合ランダムに見える.だが,各々の例は実際には与えた不等式が実際に満足できることの建設的な証明となっている.
円板上のある一点を求めるとFindInstanceは原点を返す.
In[24]:= FindInstance[x^2 + y^2 <= 1, {x, y}]
Out[24]= 
これは単位円版上の500の点を求める.
In[25]:= FindInstance[x^2 + y^2 <= 1, {x, y}, 500];
分布はランダムに見える.
In[26]:= ListPlot[{x, y} /. %, AspectRatio->Automatic]

Out[26]= 
|