一変数の方程式
Solveやこれに関連した
Mathematica の関数は,主に整方程式(代数方程式)を扱う.
| Out[1]= |  |
|
二次方程式も簡単な公式を適用すればだれでも解ける.
| Out[2]= |  |
|
Mathematica では,三次方程式の厳密な解も求めることができる.ここでは,比較的単純な三次方程式の最初の解を求めてみる.
| Out[3]= |  |
|
方程式が三次と四次になると解は非常に複雑になりがちだが,それでも,
Mathematica は四次までの方程式なら明示的な式として解を必ず見付けることができる.
解として与えられる式の重要な特徴は,根基(ベキ根)のみを含むということである.つまり,平方根,3乗根,さらに高次の根に四則演算を施した形で表される.
数学的に証明されている基本的事項であるが,一般に,五次以上の方程式にはベキ根を使った明示的な式で解を表すことができない.
限られた方程式についてはそのような解が存在することもあるが,多くの方程式では存在しない.
| Out[4]= |  |
|
この例の式のように因数に分解する多項式なら, Solveを使うだけで簡単に根が見付かる.
| Out[5]= |  |
|
| Out[6]= |  |
|
この多項式は因数分解できないが,多項式の多項式という形をしているので, Solveで明示的な解を求めることができる.(今の例では,二次式の二次式の二次式という構造をしているので二次方程式を3回解くことになる.)
| Out[7]= |  |
|
| Root[f,k] | 方程式 f[x] 0における k 番目の根を返す |
根を陰的に表すオブジェクト
この方程式にはベキ根で表せるような解が存在しない.このため, Mathematica はシンボル的に解を表す.
| Out[8]= |  |
|
| Out[9]= |  |
|
最終的に数値解がほしいのであれば,はじめから NSolveを使った方が速いことが多い.
| Out[10]= |  |
|
Rootオブジェクトは多項式の根の陰的ではあるが厳密な表現を与える.これは
Sqrt[2]あるいは厳密な数値を表すその他の表現と同じように扱うことができる.
これは上で論じた多項式の最初の根を表す Rootオブジェクトである.
| Out[11]= |  |
|
| Out[12]= |  |
|
Roundは根に最も近い整数を求める厳密計算を行う.
| Out[13]= |  |
|
この根をもとの多項式に代入し,結果を簡約すると零になる.
| Out[14]= |  |
|
| Out[15]= |  |
|
| Out[16]= |  |
|
方程式に存在する唯一の記号パラメータがそれについて解こうとしている変数の場合,方程式のすべての解はただの数になる.しかし,方程式にこの他のパラメータがあれば,一般に解はそれらのパラメータの関数になる.
この方程式の解もまた Rootオブジェクトで表すことができる.しかしここでは,各 Rootオブジェクトがパラメータ aを含んでいる.
| Out[17]= |  |
|
aに 1を代入すると, Rootオブジェクトは簡約され,中には明示的な根として与えられるものもある.
| Out[18]= |  |
|
| Out[19]= |  |
|
| Out[20]= |  |
|
Solveに
n 次の整方程式を与えると,厳密に
n 個の解を返す.ただし,解の中には
Rootオブジェクトで表されるものもある.中に変質した解がある場合,その特定の解が現れる回数はその重複度に一致する.
| Out[21]= |  |
|
これは十次方程式の最初の4つの解である.解はペアで与えられる.
| Out[22]= |  |
|
Mathematica は明示的に多項式の形式を持たない方程式の解き方も知っている.
| Out[23]= |  |
|
| Out[24]= |  |
|
方程式を何らかの多項式の形に簡約できる限り,
Mathematica は常にその解を
Rootオブジェクトによって表現することができる.しかし,より一般的な,例えば超越関数を含む方程式の場合,
Rootオブジェクトを使う系統立った方法はなく,数値近似を求める必要もない.
| Out[25]= |  |
|
標準的な関数を使ってこの方程式を解くことはできない.
| Out[26]= |  |
|
しかし, Mathematica はこの場合でも数値解を求めることができる.
| Out[27]= |  |
|
1変数の整方程式は有限個の解を持つ.しかし超越方程式はしばしば無限の解を持つことがある.
Sinのような関数が事実上無限の可能な逆方程式を持つから,というのがその理由である.しかし,デフォルトのオプション設定
InverseFunctions->Trueだと,
Solveはこのような関数には1つの逆関数があると仮定する.この場合,
Solveはこの逆関数について特定の解を返すことができる場合がある.
Mathematica は ArcSinについて特定の解を返し,併せて他の解が失われたことを示す警告メッセージを表示する.
| Out[28]= |  |
|
| Out[29]= |  |
|
fのような任意の関数を含んだ方程式を
Solveに解かせると,デフォルトにより逆関数が使われ形式的な解が構築される.
Solveはデフォルトで関数 fの形式的な逆関数を使う.
| Out[30]= |  |
|
Out[31]//InputForm= |
| |  |
|
逆関数
| Out[32]= |  |
|
Mathematica は逆関数について形式的な操作を行うことができる.
| Out[33]= |  |
|
Solveは式の特定の解しか返さないが,
Reduceはすべての解のセットの表現を返すことができる.超越方程式の場合は例えば値の範囲がすべての可能な整数に及ぶような新たなパラメータを導入してしまうことがある.
| Out[34]= |  |
|
| Out[35]= |  |
|
「領域上の等式と不等式」で詳しく説明してあるように,
Reduceを使うと変数の領域を制限することができる.これによって超越方程式の具体的な解を生成したり,あるいはそれが存在しないことを示したりできることがある.
| Out[36]= |  |
|
| Out[37]= |  |
|
| Out[38]= |  |
|