一般的な解と一般的ではない解

方程式がなら,唯一の可能な解がであることは明白である.しかし,方程式がになると,話は少々複雑になる.0以外のとき,解はのみであるが,0のときは,はどのような値でもよい.Reduceを使うとこれが分かる.

Solveでは,パラメータが特殊な値を取らないことを前提に解法が進められる.
In[1]:=
Click for copyable input
Out[1]=
一方,Reduceではについて何も仮定されず,可能なすべての解が求まる.
In[2]:=
Click for copyable input
Out[2]=

ReduceSolveの基本的な違いは,Reduceでは与えた方程式について可能なすべての解が求まるのに対して,Solveでは「一般的な」解だけが求まる.ここで,一般的な解とは,解法の対象になった変数に関連した条件は考慮するが,他のパラメータに関する条件は入らない解を意味する.さらに,ReduceSolveの違いに,解の出力形式としてReduceが等式の組合せとして解を返すのに対して,Solveは変換規則として返すということもある.

Solve[eqns,vars]方程式の「一般的な」解を求める
Reduce[eqns,vars]すべての解を含む形で,方程式を簡約する

方程式の解法

Solveを使い,任意の一次方程式を解く.
In[3]:=
Click for copyable input
Out[3]=
Reduceを使い解いてみる.の条件も考慮した完全な解法が得られる.得られた出力において,より優先度が高いことに注意.
In[4]:=
Click for copyable input
Out[4]=
一般二次方程式の持つすべての解を求める.結果として3組の解が得られる.が0以外のとき,二次方程式はについて2つの解を持つ.が0のとき,方程式は一次式になる.また,が0のとき,の値は何でもよい.
In[5]:=
Click for copyable input
Out[5]=

いくつかの連立方程式があるとき,Reduceを使うとどのような条件下でそれらの方程式が解を持つかが分かる.Solveは一般的な解があるかどうかを示す.

これらの連立方程式を同時に満足させるxの値は存在しない.
In[6]:=
Click for copyable input
Out[6]=
のときに限り解が存在する.
In[7]:=
Click for copyable input
Out[7]=
存在する解は一般的な解ではないので,Solveを使うと何も求まらない.
In[8]:=
Click for copyable input
Out[8]=
であるという制約を付けると,今度は,Solveでも解が求まる.
In[9]:=
Click for copyable input
Out[9]=
この方程式はがどのような値を取っても成立する.
In[10]:=
Click for copyable input
Out[10]=
方程式が常に成立するとき,Solveの返す解はこのように表記される.
In[11]:=
Click for copyable input
Out[11]=

連立一次方程式を解くとき,一般的な解を求めるにはSolveを使い,解が存在するためのパラメータの値を調べるにはReduceを使うのがよいだろう.

()要素が である行列を例に見てみる.
In[12]:=
Click for copyable input
Out[12]=
行列式はゼロになる.
In[13]:=
Click for copyable input
Out[13]=
3つの方程式を連立させる.
In[14]:=
Click for copyable input
Out[14]=
Solveでは解けず,一般的な解は存在しないことが分かる.
In[15]:=
Click for copyable input
Out[15]=
それでも,Reduceを使うと,パラメータがになる特殊な条件のもとでは,解が存在し得ることが判明する.
In[16]:=
Click for copyable input
Out[16]=

非線形な方程式では,解が存在するための条件がはるかに複雑になることがある.

連立した単純な非線形方程式を例に見てみる.
In[17]:=
Click for copyable input
Out[17]=
Solveでは解が求まらず,一般的な解が存在しないことが分かる.
In[18]:=
Click for copyable input
Out[18]=
それでも,Reduceを使うと,解が存在するための条件が得られる.
In[19]:=
Click for copyable input
Out[19]=
New to Mathematica? Find your learning path »
Have a question? Ask support »