方程式の解法
x^2+2x-7
0のような式は,
Mathematica では方程式を表す.このような方程式を解くことがしばしば必要になる.それには等号関係を真とする
xの値を見出せばよい.
Solveを使い2次方程式 x2+2x-7=0を解く.解は2つ求まり, xの変換規則として返される.
| Out[1]= |  |
|
| Out[2]= |  |
|
置換演算子を使い Solveにより生成された規則を xに適用することで, xの実際の解をリスト形式で得ることができる.
| Out[3]= |  |
|
これらの規則は, xを含んだ他の式にも同様に適用することができる.
| Out[4]= |  |
|
Solve[lhs rhs,x] | 方程式 lhs rhs の関係を満たすの値を探し,方程式を解く (答はx への置換規則のリストとして出力する) |
| x/.solution | 答の置換規則を作用させx 値のみをリスト出力する |
| expr/.solution | 答の置換規則を作用させ式の値をリスト出力する |
方程式の解法と解の代入
Solveを使うと,必ず方程式の解の明示的な式の導出が試みられる.しかし,数学の基本的な結果として判明しているように,式が十分に複雑ならば,根基による明示的な形の解を得ることは不可能である.変数が1つしかなく,最大でも次数が4次以下なら,
Mathematica は必ずその解を式として求めることができる.しかし,5次以上の方程式では,すべての解を明示的な代数式として求めることは数学的に不可能である.
単一変数で5次より低い代数方程式なら, Mathematica は必ず解くことができる.
| Out[5]= |  |
|
方程式によっては,それより高次でも解くことができる.
| Out[6]= |  |
|
いくつかの方程式は,解は存在してもそれを明示的な式として表すことは不可能である.ここでは, Rootオブジェクトで解が表現される.
| Out[7]= |  |
|
明示的な式が得られなくても,数値的に解を評価することは可能である.
| Out[8]= |  |
|
Mathematica は,純粋な代数方程式だけでなく,種類は限られているが特殊な関数を含んだ方程式を解くこともできる.
| Out[9]= |  |
|
sin (x)=a のような方程式の解は無限個あることに気を付けなければいけない.この式の場合,解は
2
の倍数で違う.しかし,
Solveは,デフォルトで1つの解だけしか返さない.ただし,他に可能な解が存在する旨を伝えるメッセージは表示する.
Reduceを用いるとより詳しい情報が得られる.
この式のような超越方程式には,「代数閉体内」の解は存在しない.
| Out[10]= |  |
|
FindRootを使い, xの初期値を与えることで,近似数値解を求めることができる.
| Out[11]= |  |
|
Solveを使い未知の関数を含んだ方程式を解くことも可能である.その場合も,警告が発せられるが,形式的な逆関数を使った結果を得ることができる.
Mathematica は fの正式な逆関数として結果を返す.
| Out[12]= |  |
|
Solve[{lhs1 rhs1,lhs2 rhs2,...},{x,y,...}] |
| 変数x, y, ...について連立方程式を解く |
連立方程式の解法
Mathematica を使い,連立方程式も解くことができる.解きたい方程式の組を列挙したリストを与え,解く対象となる変数を列挙したリストを指定するだけでよい.
2つの連立方程式をリスト形式で列挙し,変数 x, y について解く.
| Out[13]= |  |
|
少々複雑な連立方程式を解いてみる.出力される2つの解は xと yの2組の変換規則のリストとして与えられる.
| Out[14]= |  |
|
| Out[15]= |  |
|
Mathematica は,連立した線形方程式あるいは整方程式ならどんな組合せのものでも解くことができる.
複数の変数について連立方程式を解く場合,キャンセルできる変数があればあらかじめ打ち消しておくと解が得やすくなる.
| Out[16]= |  |
|
複数の方程式があるとき,特定の変数について連立解がひとつでも存在するという保証はない.
これらの方程式において矛盾しない解は存在しない.このため, Mathematica は,解の集合が空であることを示したリスト {}を返してくる.
| Out[17]= |  |
|
ほとんどすべての aの値について,これらの方程式の連立解は存在しない.
| Out[18]= |  |
|
一般に連立方程式が解を持つか持たないかは極めて微妙な問題である.例えば,連立方程式
{x
1, x
a}において,
aのほとんどの値に対して連立方程式は矛盾するため,解は存在しない.唯一,
aが
1に等しいときに,連立方程式は解を持つ.
Solveは,方程式の一般解を求めるように設定されている,パラメータ間の特別な制約条件が満たされるときだけに存在する解は切り捨てられる.
Solveの代りに
Reduceを使えば,
Mathematica は,パラメータに関する特別条件を満足する特殊解を含む,連立方程式のすべての可能な解を保持しておく.
これは,方程式が a 1のときのみ解を持つことを示す. a 1&&x 1という表記は a 1と x 1がともに Trueであるという条件を表す.
| Out[19]= |  |
|
これは,方程式の可能な解の完全な集合を与える.答は簡約された方程式の組合せとして表される. &&は,同時に満たされなければならない方程式を示し, ||は代替条件を示す.
| Out[20]= |  |
|
| Out[21]= |  |
|
| Out[22]= |  |
|
Solve[lhs rhs,x] | x について方程式を解く |
Solve[{lhs1 rhs1,lhs2 rhs2,...},{x,y,...}] |
| x, y, ..., ... について連立方程式を解く |
Eliminate[{lhs1 rhs1,lhs2 rhs2,...},{x,...}] |
| 連立方程式においてx, ...を消去する |
Reduce[{lhs1 rhs1,lhs2 rhs2,...},{x,y,...}] |
| 連立方程式を変形・簡約し,条件付きであっても解を探す |
方程式の解法と整理を行う関数
Reduceは実数や整数の方程式を扱う強力な機能も備えている.これについては
領域上の等式と不等式でより詳しく説明する.
これは xと yが複素数であると仮定して式を簡約する.
| Out[23]= |  |
|
これには xと yが実数であるという制約条件が含まれる.
| Out[24]= |  |
|
| Out[25]= |  |
|