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

が特殊な値

を取らないことを前提に解法が進められる.
| Out[1]= |  |
一方,
Reduceでは

について何も仮定されず,可能なすべての解が求まる.
| Out[2]= |  |
ReduceとSolveの基本的な違いは,Reduceでは与えた方程式について可能なすべての解が求まるのに対して,Solveでは「一般的な」解だけが求まる.ここで,一般的な解とは,解法の対象になった変数に関連した条件は考慮するが,他のパラメータに関する条件は入らない解を意味する.さらに,ReduceとSolveの違いに,解の出力形式としてReduceが等式の組合せとして解を返すのに対して,Solveは変換規則として返すということもある.
| Solve[eqns,vars] | 方程式の「一般的な」解を求める |
| Reduce[eqns,vars] | すべての解を含む形で,方程式を簡約する |
方程式の解法
| Out[3]= |  |
Reduceを使い解いてみる.

の条件も考慮した完全な解法が得られる.得られた出力において,

は

より優先度が高いことに注意.
| Out[4]= |  |
一般二次方程式の持つすべての解を求める.結果として3組の解が得られる.

が0以外のとき,二次方程式は

について2つの解を持つ.

が0のとき,方程式は一次式になる.また,

,

,

が0のとき,

の値は何でもよい.
| Out[5]= |  |
いくつかの連立方程式があるとき,Reduceを使うとどのような条件下でそれらの方程式が解を持つかが分かる.Solveは一般的な解があるかどうかを示す.
これらの連立方程式を同時に満足させる
xの値は存在しない.
| Out[6]= |  |

が

のときに限り解が存在する.
| Out[7]= |  |
存在する解は一般的な解ではないので,
Solveを使うと何も求まらない.
| Out[8]= |  |

が

であるという制約を付けると,今度は,
Solveでも解が求まる.
| Out[9]= |  |
この方程式は

がどのような値を取っても成立する.
| Out[10]= |  |
方程式が常に成立するとき,
Solveの返す解はこのように表記される.
| Out[11]= |  |
連立一次方程式を解くとき,一般的な解を求めるにはSolveを使い,解が存在するためのパラメータの値を調べるにはReduceを使うのがよいだろう.
| Out[12]= |  |
| Out[13]= |  |
| Out[14]= |  |
Solveでは解けず,一般的な解は存在しないことが分かる.
| Out[15]= |  |
それでも,
Reduceを使うと,パラメータが

になる特殊な条件のもとでは,解が存在し得ることが判明する.
| Out[16]= |  |
非線形な方程式では,解が存在するための条件がはるかに複雑になることがある.
| Out[17]= |  |
Solveでは解が求まらず,一般的な解が存在しないことが分かる.
| Out[18]= |  |
それでも,
Reduceを使うと,解が存在するための条件が得られる.
| Out[19]= |  |