仮定の使用

Mathematica は通常,オブジェクトの処理に必要なだけの最小限の仮定しかしない.これによりその結果も可能な限り一般的になる.しかし,場合によってこれらの結果は,より多くの仮定がなされた場合よりもかなり複雑になってしまうこともある.

Refine[expr,assum]仮定を用いて expr を約す
Simplify[expr,assum]仮定の下で簡約する
FullSimplify[expr,assum]仮定の下で完全に簡約する
FunctionExpand[expr,assum]仮定の下で関数を展開する

仮定の下で演算を行う

デフォルトのSimplifyはこの式に本質的には何もしない.
In[1]:=
Click for copyable input
Out[1]=
その理由は異なるを選択をすると,全く異なった値になるからである.
In[2]:=
Click for copyable input
Out[2]=
と仮定すると,Simplifyは式を直ちに0にする.
In[3]:=
Click for copyable input
Out[3]=
について仮定をしないと,何も実行されない.
In[4]:=
Click for copyable input
Out[4]=
が両方とも正であると仮定された場合,対数が展開される.
In[5]:=
Click for copyable input
Out[5]=

SimplifyFullSimplifyを適当な仮定の下で方程式や不等式に適用すると広範な定理を確立することもできる.

に関する仮定を行わないと,この方程式の真偽を決定することができない.
In[6]:=
Click for copyable input
Out[6]=
これによりSimplifyで方程式が真であるという証明ができる.
In[7]:=
Click for copyable input
Out[7]=
これにより算術平均が幾何平均よりも大きいという普遍的結果が確立される.
In[8]:=
Click for copyable input
Out[8]=
がすべての正の引数に関して内にあるということを証明する.
In[9]:=
Click for copyable input
Out[9]=

SimplifyFullSimplifyは常に式の最も簡単な形を求めようとする.しかし,場合によっては Mathematica に特定の前提条件の下で通常の評価過程を進ませたいこともあるだろう.そのような場合にはRefineを使うとよい.Refine[expr, assum]expr 中の変数が前提条件 assum を満たす数式で置き換えられたならば Mathematica が自動的に行うであろう変形と同じ変形を行う.

これ以上簡単な形はSimplifyには見付けられない.
In[10]:=
Click for copyable input
Out[10]=
Refineは明示的な負の数であるかのようにLog[x]を評価する.
In[11]:=
Click for copyable input
Out[11]=

仮定において重要なことは,あるオブジェクトが特定の領域の要素であるということを主張することである. を用いてそのような仮定を設定することができる.ここで,文字はまたは\[Element]として入力できる.

xdomまたはElement[x,dom]x は領域 dom の要素である
{x1,x2,...}domすべての は領域 dom の要素である
pattdompatt と合致するような任意の式が領域 dom の要素である

オブジェクトは領域の要素である

が実数領域の要素であるということを確かめる.
In[12]:=
Click for copyable input
Out[12]=
これらの数は,すべて代数的数の要素である.
In[13]:=
Click for copyable input
Out[13]=
Mathematica は, は代数的数ではないことを知っている.
In[14]:=
Click for copyable input
Out[14]=
現代数学でも, が代数的数か否かまだ分かっていない.
In[15]:=
Click for copyable input
Out[15]=
記号が実数領域の要素であるということを表している.
In[16]:=
Click for copyable input
Out[16]=
Complexes複素数 の領域
Reals実数 の領域
Algebraics代数的数 の領域
Rationals有理数 の領域
Integers整数 の領域
Primes素数 の領域
Booleansブール値(TrueおよびFalse の領域

Mathematica がサポートする領域

が整数の仮定の下ではゼロである.
In[17]:=
Click for copyable input
Out[17]=
が実数の仮定の下での定理を確立する.
In[18]:=
Click for copyable input
Out[18]=
ある変数が不等式を満たしていると述べると,Mathematica は自動的にその変数が実数であるとみなす.
In[19]:=
Click for copyable input
Out[19]=

SimplifyFullSimplifyおよびFunctionExpandを仮定の下に使用することで,Mathematica の広大な数学的事実のコレクションにアクセスできる.

正接関数の周期性を用いる.
In[20]:=
Click for copyable input
Out[20]=
k/2 Integersの仮定は k が偶数である必要があるということを意味している.
In[21]:=
Click for copyable input
Out[21]=
Mathematica は,正数 に関してであることを知っている.
In[22]:=
Click for copyable input
Out[22]=
FullSimplifyは,特殊関数の知識にアクセスする.
In[23]:=
Click for copyable input
Out[23]=

Mathematica は,連続を扱う数学と同様に,離散数学と数論も扱える.

結果を簡約するためウィルソンの定理を用いる.
In[24]:=
Click for copyable input
Out[24]=
オイラーのファイ関数の乗積特性を用いる.
In[25]:=
Click for copyable input
Out[25]=

Simplify[expr, assum]あるいはRefine[expr, assum]のようなものには使いたい前提条件を明示的に与える.しかし,操作全体に1組の前提を指定したい場合もあるだろう.そのような場合はAssumingを使うとよい.

Assuming[assum,expr]前提条件 assum を使って expr を評価する
$Assumptionsデフォルトの前提条件

より大きなスコープでの前提条件の指定

こうするとSimplifyがデフォルトの前提条件を使う.
In[26]:=
Click for copyable input
Out[26]=
これは与えられた2つの前提条件を組み合せる.
In[27]:=
Click for copyable input
Out[27]=

SimplifyRefineのような関数は使うべきデフォルトの前提条件を指定するオプションAssumptionsを取る.デフォルトでは,このオプションの設定はAssumptions:>$Assumptionsである.Assumingは,Blockにおけるように局所値を$Assumptionsに割り当てるという方法で作用する.

Assumptionsオプションを取るためにAssumingを使って前提条件を指定できる関数はSimplifyRefineの他にもたくさんある.FunctionExpandIntegrateLimitSeriesLaplaceTransform等がその例である.

Integrateでは自動的に前提条件が使われる.
In[28]:=
Click for copyable input
Out[28]=
New to Mathematica? Find your learning path »
Have a question? Ask support »