How to | 方程式を解く方法

Wolfram言語にはさまざまな種類の方程式を解くことを可能にする強力な機能が数多く備わっている.

Solveを使って方程式を解くことができる.方程式には「=」ではなく「==」を使用しなくてはならないことに注意:

In[1]:=
Click for copyable input
Out[1]=

結果は2重にネストされたリストの中のRuleである.外側のリストが解のすべてを含み,内側のリストのそれぞれが単独の解を含む.ここでは,3つの解がある:

In[2]:=
Click for copyable input
Out[2]=

方程式系を解く場合は,第1引数にリストを使う:

In[3]:=
Click for copyable input
Out[3]=

ここでは連立方程式に2つの解が存在する.それぞれの解集合はそれ自身のリストにラップされている:

In[4]:=
Click for copyable input
Out[4]=

以下では解が1つの変数を別の変数で表している:

In[5]:=
Click for copyable input
Out[5]=

これらの解の1つを計算で使いたい(ここでは最初の解が示されている)場合は,Partの簡略表記)を使ってそれを解のリストから抽出してから「」(ReplaceAllの短縮形)を使って規則を適用する:

In[6]:=
Click for copyable input
Out[6]=

例えば以下は,最初の解が正しいと想定した場合のの異なる値に対するのプロットである:

In[7]:=
Click for copyable input
Out[7]=

複数の変数を持つ方程式系では,第2引数のリストを使うことによって,一部あるいはすべての変数について解くことができる:

In[8]:=
Click for copyable input
Out[8]=

方程式系が完全には指定されていない場合には,Wolfram言語は残りの変数について答を返す:

In[9]:=
Click for copyable input
Out[9]=

Solveは方程式のいわゆる「一般」解として知られているものを求める.これらは,第2引数で指定されていない変数に依存しない解である.例えば:

In[10]:=
Click for copyable input
Out[10]=

が何であれ,に0を当てはめることによって方程式を解くことができる.しかし,に依存するもう1つの解も存在する.つまりを0に設定するという方法である.第2引数にを加えることによって以下の解が表示される:

In[11]:=
Click for copyable input
Out[11]=

Solveがすべての解を求めないという場合もある.例えば:

In[12]:=
Click for copyable input
Out[12]=

無理方程式を解くこともできる:

In[13]:=
Click for copyable input
Out[13]=

無理方程式では,Solveは寄生の解を破棄することに注意する.寄生の解も含めたすべての候補の解を見たい場合は,VerifySolutionsのオプションをFalseに設定する:

In[14]:=
Click for copyable input
Out[14]=

以下で解を検証する:

In[15]:=
Click for copyable input
Out[15]=

Reduceを使って方程式を解くこともできる:

In[16]:=
Click for copyable input
Out[16]=

Reduceの出力はSolveの出力とは異なる.Reduceはもとの方程式に等しい論理的な式を出力するため,解を削除することは決してない:

In[17]:=
Click for copyable input
Out[17]=
In[18]:=
Click for copyable input
Out[18]=
    

Wolfram言語を使うと,方程式の数値解を得ることもできる.

例えば,NSolveの出力に使って記号解の近似数値を得ることができる:

In[1]:=
Click for copyable input
Out[1]=
In[2]:=
Click for copyable input
Out[2]=

NSolveを使って直接数値解を得ることもできる.この方法は,NおよびSolveを組み合せて使うよりも速い:

In[3]:=
Click for copyable input
Out[3]=

NSolveを使ってより複雑な多項式を解く:

In[4]:=
Click for copyable input
In[5]:=
Click for copyable input
Out[5]=

NSolveは方程式系を数値的に解くのにも使える.Solveと同じシンタックスを使う:

In[6]:=
Click for copyable input
Out[6]=

方程式に一次関数あるいは多項式のみが含まれている場合には,NSolveを使ってすべての解に対する近似数値を得ることができる.しかし,方程式にもっと複雑な関数が含まれる場合には,一般にすべての解を数値的にでも求めるような系統だった方法はない.そのような場合には,FindRootを使って解を探すことができる.

FindRootを使い,1から始め,の数値解を探す:

In[7]:=
Click for copyable input
Out[7]=