方程式を解くために、 Solve[], NSolve[] という二つの手続きがあります。
Solve[左辺==右辺,未知数] は式変形で解きます (等式を表すために = を二つ続けた == を 使うのが大事なところ)。
Solve[x^2+3x+2==0, x] |
この結果は {x->1} のような、 置き換え規則のリストの形で得られますが、 x /. % とすれば (置き換えを実行するわけです)、 解のリストが得られます (5.14 参照)。
次のような連立方程式も解けます。
Solve[{x+y+z==6, 2x-y+z==5,-3x+y+2z==0},{x,y,z}] |
Mathematica は 次方程式だけでなく、 次方程式、 次方程式の根の公式も覚えていて解くことが出来ますが、 やってみれば分かるように、結果は分かりにくくなることが多いです。 複素数について、C.2 を見ておいて下さい (特に ComplexExpand[] を使うなど)。
どの程度の値なのか知りたい場合、 つまり近似値でよければ、 直後に % // N あるいは N[%, 50] のように入力すれば求められます。
Solve[x^3+2x^2+3x+4==0, x] % // N 直前の結果を小数で N[%%, 50] 二つ前の結果を 50 桁の小数で |
文字を係数に含む方程式も解くことが出来ます。
|
もっとも、特別簡単なものを除けば、 方程式は式変形のみで解くことは難しく、 できないことの方が多いです。 そういう場合は、近似値を求めることで我慢することにすれば、 NSolve[], FindRoot[] などの関数が利用できます。
|
実数解だけが欲しい場合は、Reals を指定する。
f[x_, y_] := x^4 - x y + y^4 sol = Solve[{D[f[x, y], x], D[f[x, y], y]} == {0, 0}, {x, y}, Reals](, Reals を指定しないと虚数解も表示される。) |
なお、未知数の消去は Eliminate[]
桂田 祐史