一変数の方程式

Solveやこれに関連したWolfram言語の関数は,主に整方程式(代数方程式)を扱う.

の一次方程式は簡単に解ける.
In[1]:=
Click for copyable input
Out[1]=
二次方程式も簡単な公式を適用すればだれでも解ける.
In[2]:=
Click for copyable input
Out[2]=
Wolfram言語では,三次方程式の厳密な解も求めることができる.ここでは,比較的単純な三次方程式の最初の解を求めてみる.
In[3]:=
Click for copyable input
Out[3]=

方程式が三次と四次になると解は非常に複雑になりがちだが,それでも,Wolfram言語は四次までの方程式なら明示的な式として解を必ず見付けることができる.

解として与えられる式の重要な特徴は,根基(ベキ根)のみを含むということである.つまり,平方根,3乗根,さらに高次の根に四則演算を施した形で表される.

数学的に証明されている基本的事項であるが,一般に,五次以上の方程式にはベキ根を使った明示的な式で解を表すことができない.

限られた方程式についてはそのような解が存在することもあるが,多くの方程式では存在しない.

六次方程式を構築する.
In[4]:=
Click for copyable input
Out[4]=
この例の式のように因数に分解する多項式なら,Solveを使うだけで簡単に根が見付かる.
In[5]:=
Click for copyable input
Out[5]=
八次式を構築する.
In[6]:=
Click for copyable input
Out[6]=
この多項式は因数分解できないが,多項式の多項式という形をしているので,Solveで明示的な解を求めることができる.(今の例では,二次式の二次式の二次式という構造をしているので二次方程式を3回解くことになる.)
In[7]:=
Click for copyable input
Out[7]=
Root[f,k]方程式 における 番目の根を返す

根を陰的に表すオブジェクト

この方程式にはベキ根で表せるような解が存在しない.このため,Wolfram言語はシンボル的に解を表す.
In[8]:=
Click for copyable input
Out[8]=
これは各根の数値近似を求める.
In[9]:=
Click for copyable input
Out[9]=
最終的に数値解がほしいのであれば,はじめからNSolveを使った方が速いことが多い.
In[10]:=
Click for copyable input
Out[10]=

Rootオブジェクトは多項式の根の陰的ではあるが厳密な表現を与える.これはSqrt[2]あるいは厳密な数値を表すその他の表現と同じように扱うことができる.

これは上で論じた多項式の最初の根を表すRootオブジェクトである.
In[11]:=
Click for copyable input
Out[11]=
これはその値の数値近似である.
In[12]:=
Click for copyable input
Out[12]=
Roundは根に最も近い整数を求める厳密計算を行う.
In[13]:=
Click for copyable input
Out[13]=
この根をもとの多項式に代入し,結果を簡約すると零になる.
In[14]:=
Click for copyable input
Out[14]=
もとの多項式のすべての根の積を求める.
In[15]:=
Click for copyable input
Out[15]=
第3根の複素共役は第2根である.
In[16]:=
Click for copyable input
Out[16]=

方程式に存在する唯一の記号パラメータがそれについて解こうとしている変数の場合,方程式のすべての解はただの数になる.しかし,方程式にこの他のパラメータがあれば,一般に解はそれらのパラメータの関数になる.

この方程式の解もまたRootオブジェクトで表すことができる.しかしここでは,各Rootオブジェクトがパラメータを含んでいる.
In[17]:=
Click for copyable input
Out[17]=
を代入すると,Rootオブジェクトは簡約され,中には明示的な根として与えられるものもある.
In[18]:=
Click for copyable input
Out[18]=
これはの関数としての第1根の動きを示している.
In[19]:=
Click for copyable input
Out[19]=
これはについての第1根の導関数を求める.
In[20]:=
Click for copyable input
Out[20]=

Solve 次の整方程式を与えると,厳密に 個の解を返す.ただし,解の中にはRootオブジェクトで表されるものもある.中に変質した解がある場合,その特定の解が現れる回数はその重複度に一致する.

Solveはこの方程式に2つの同一の解を与える.
In[21]:=
Click for copyable input
Out[21]=
これは十次方程式の最初の4つの解である.解はペアで与えられる.
In[22]:=
Click for copyable input
Out[22]=

Wolfram言語は明示的に多項式の形式を持たない方程式の解き方も知っている.

これは平方根を含む方程式である.
In[23]:=
Click for copyable input
Out[23]=
これは対数を含む方程式である.
In[24]:=
Click for copyable input
Out[24]=

方程式を何らかの多項式の形に簡約できる限り,Wolfram言語は常にその解をRootオブジェクトによって表現することができる.しかし,より一般的な,例えば超越関数を含む方程式の場合,Rootオブジェクトを使う系統立った方法はなく,数値近似を求める必要もない.

これはについての単純な超越方程式である.
In[25]:=
Click for copyable input
Out[25]=
標準的な関数を使ってこの方程式を解くことはできない.
In[26]:=
Click for copyable input
Out[26]=
しかし,Wolfram言語はこの場合でも数値解を求めることができる.
In[27]:=
Click for copyable input
Out[27]=

1変数の整方程式は有限個の解を持つ.しかし超越方程式はしばしば無限の解を持つことがある.Sinのような関数が事実上無限の可能な逆方程式を持つから,というのがその理由である.しかし,デフォルトのオプション設定InverseFunctions->Trueだと,Solveはこのような関数には1つの逆関数があると仮定する.この場合,Solveはこの逆関数について特定の解を返すことができる場合がある.

Wolfram言語はArcSinについて特定の解を返し,併せて他の解が失われたことを示す警告メッセージを表示する.
In[28]:=
Click for copyable input
Out[28]=
ここではProductLogについての解が返される.
In[29]:=
Click for copyable input
Out[29]=

のような任意の関数を含んだ方程式をSolveに解かせると,デフォルトにより逆関数が使われ形式的な解が構築される.

Solveはデフォルトで関数の形式的な逆関数を使う.
In[30]:=
Click for copyable input
Out[30]=
これは逆関数の構造である.
InverseFunction[f]f の逆関数
InverseFunction[f,k,n]n 個の引数を持つ関数 fk 番目の引数についての逆関数

逆関数

これは明示的な逆関数を返す.
In[32]:=
Click for copyable input
Out[32]=
Wolfram言語は逆関数について形式的な操作を行うことができる.
In[33]:=
Click for copyable input
Out[33]=

Solveは式の特定の解しか返さないが,Reduceはすべての解のセットの表現を返すことができる.超越方程式の場合は例えば値の範囲がすべての可能な整数に及ぶような新たなパラメータを導入してしまうことがある.

これは解の集合の完全な表現である.
In[34]:=
Click for copyable input
Out[34]=
これは一般的な解の表現である.
In[35]:=
Click for copyable input
Out[35]=

「領域上の等式と不等式」で詳しく説明してあるように,Reduceを使うと変数の領域を制限することができる.これによって超越方程式の具体的な解を生成したり,あるいはそれが存在しないことを示したりできることがある.

の領域を制限すると,これは有限解を与える.
In[36]:=
Click for copyable input
Out[36]=
を実数に限ると可能な解は1つになる.
In[37]:=
Click for copyable input
Out[37]=
Reduceを使うと解が存在しないことが分かる.
In[38]:=
Click for copyable input
Out[38]=