Mathematica 9 is now available
THIS IS DOCUMENTATION FOR AN OBSOLETE PRODUCT.
SEE THE DOCUMENTATION CENTER FOR THE LATEST INFORMATION.
Mathematica >

方程式の解法

x^2+2x-70のような式は,Mathematica では方程式を表す.このような方程式を解くことがしばしば必要になる.それには等号関係を真とするxの値を見出せばよい.
Solveを使い2次方程式x2+2x-7=0を解く.解は2つ求まり,xの変換規則として返される.
In[1]:=
Click for copyable input
Out[1]=
こうすると,数値解を得ることができる.
In[2]:=
Click for copyable input
Out[2]=
置換演算子を使いSolveにより生成された規則をxに適用することで,xの実際の解をリスト形式で得ることができる.
In[3]:=
Click for copyable input
Out[3]=
これらの規則は,xを含んだ他の式にも同様に適用することができる.
In[4]:=
Click for copyable input
Out[4]=
Solve[lhsrhs,x]方程式 lhsrhs の関係を満たすの値を探し,方程式を解く (答はx への置換規則のリストとして出力する)
x/.solution答の置換規則を作用させx 値のみをリスト出力する
expr/.solution答の置換規則を作用させ式の値をリスト出力する

方程式の解法と解の代入

Solveを使うと,必ず方程式の解の明示的な式の導出が試みられる.しかし,数学の基本的な結果として判明しているように,式が十分に複雑ならば,根基による明示的な形の解を得ることは不可能である.変数が1つしかなく,最大でも次数が4次以下なら,Mathematica は必ずその解を式として求めることができる.しかし,5次以上の方程式では,すべての解を明示的な代数式として求めることは数学的に不可能である.
単一変数で5次より低い代数方程式なら,Mathematica は必ず解くことができる.
In[5]:=
Click for copyable input
Out[5]=
方程式によっては,それより高次でも解くことができる.
In[6]:=
Click for copyable input
Out[6]=
いくつかの方程式は,解は存在してもそれを明示的な式として表すことは不可能である.ここでは,Rootオブジェクトで解が表現される.
In[7]:=
Click for copyable input
Out[7]=
明示的な式が得られなくても,数値的に解を評価することは可能である.
In[8]:=
Click for copyable input
Out[8]=
Mathematica は,純粋な代数方程式だけでなく,種類は限られているが特殊な関数を含んだ方程式を解くこともできる.
警告が出るが,方程式に対して1つの解が求まる.
In[9]:=
Click for copyable input
Out[9]=
sin (x)=a のような方程式の解は無限個あることに気を付けなければいけない.この式の場合,解は2 の倍数で違う.しかし,Solveは,デフォルトで1つの解だけしか返さない.ただし,他に可能な解が存在する旨を伝えるメッセージは表示する.Reduceを用いるとより詳しい情報が得られる.
この式のような超越方程式には,「代数閉体内」の解は存在しない.
In[10]:=
Click for copyable input
Out[10]=
FindRootを使い,xの初期値を与えることで,近似数値解を求めることができる.
In[11]:=
Click for copyable input
Out[11]=
Solveを使い未知の関数を含んだ方程式を解くことも可能である.その場合も,警告が発せられるが,形式的な逆関数を使った結果を得ることができる.
Mathematicafの正式な逆関数として結果を返す.
In[12]:=
Click for copyable input
Out[12]=
Solve[{lhs1rhs1,lhs2rhs2,...},{x,y,...}]
変数x, y, ...について連立方程式を解く

連立方程式の解法

Mathematica を使い,連立方程式も解くことができる.解きたい方程式の組を列挙したリストを与え,解く対象となる変数を列挙したリストを指定するだけでよい.
2つの連立方程式をリスト形式で列挙し,変数xy について解く.
In[13]:=
Click for copyable input
Out[13]=
少々複雑な連立方程式を解いてみる.出力される2つの解はxyの2組の変換規則のリストとして与えられる.
In[14]:=
Click for copyable input
Out[14]=
求まった解を使い式x+yを評価してみる.
In[15]:=
Click for copyable input
Out[15]=
Mathematica は,連立した線形方程式あるいは整方程式ならどんな組合せのものでも解くことができる.
複数の変数について連立方程式を解く場合,キャンセルできる変数があればあらかじめ打ち消しておくと解が得やすくなる.
Eliminateを使い,2つの方程式からyを打ち消し,1つの方程式にまとめ直す.
In[16]:=
Click for copyable input
Out[16]=
複数の方程式があるとき,特定の変数について連立解がひとつでも存在するという保証はない.
これらの方程式において矛盾しない解は存在しない.このため,Mathematica は,解の集合が空であることを示したリスト{}を返してくる.
In[17]:=
Click for copyable input
Out[17]=
ほとんどすべてのaの値について,これらの方程式の連立解は存在しない.
In[18]:=
Click for copyable input
Out[18]=
一般に連立方程式が解を持つか持たないかは極めて微妙な問題である.例えば,連立方程式{x1, xa}において,aのほとんどの値に対して連立方程式は矛盾するため,解は存在しない.唯一,a1に等しいときに,連立方程式は解を持つ.Solveは,方程式の一般解を求めるように設定されている,パラメータ間の特別な制約条件が満たされるときだけに存在する解は切り捨てられる.
Solveの代りにReduceを使えば,Mathematica は,パラメータに関する特別条件を満足する特殊解を含む,連立方程式のすべての可能な解を保持しておく.
これは,方程式がa1のときのみ解を持つことを示す.a1&&x1という表記はa1 x1がともにTrueであるという条件を表す.
In[19]:=
Click for copyable input
Out[19]=
これは,方程式の可能な解の完全な集合を与える.答は簡約された方程式の組合せとして表される.&&は,同時に満たされなければならない方程式を示し,||は代替条件を示す.
In[20]:=
Click for copyable input
Out[20]=
こうするとより複雑な式の組合せが与えられる.
In[21]:=
Click for copyable input
Out[21]=
これはすべての解の記号表示である.
In[22]:=
Click for copyable input
Out[22]=
Solve[lhsrhs,x]x について方程式を解く
Solve[{lhs1rhs1,lhs2rhs2,...},{x,y,...}]
x, y, ..., ... について連立方程式を解く
Eliminate[{lhs1rhs1,lhs2rhs2,...},{x,...}]
連立方程式においてx, ...を消去する
Reduce[{lhs1rhs1,lhs2rhs2,...},{x,y,...}]
連立方程式を変形・簡約し,条件付きであっても解を探す

方程式の解法と整理を行う関数

Reduceは実数や整数の方程式を扱う強力な機能も備えている.これについては領域上の等式と不等式でより詳しく説明する.
これはxyが複素数であると仮定して式を簡約する.
In[23]:=
Click for copyable input
Out[23]=
これにはxyが実数であるという制約条件が含まれる.
In[24]:=
Click for copyable input
Out[24]=
これは整数解しか与えない.
In[25]:=
Click for copyable input
Out[25]=
Ask a question about this page  |  Suggest an improvement  |  Leave a message for the team