Mathematica で方程式を解こう

演習問題を行う前に Mathematica を使うときの注意を良く読んでください.


内容

  1. 代数方程式
  2. 一般の方程式
  3. 微分方程式
  4. 数列を求める
  5. 課題

代数方程式

もっとも簡単なのは、一変数代数方程式です。x^3-2x+1=0 を解いてみましょう。

入力
出力

しかしながら、アーベルの定理により5次以上の方程式は一般には解けません。

入力
出力

上では、Mathematica は正確に解く事が出来ないので与えられた多項式を返してきています。代数学の基本定理より、5次方程式は5つの根を持つはずです。これを数値的に求めてみましょう。

入力
出力

Mathematica では根を任意の精度まで計算する事が出来ます。精度を20桁までとって計算してみましょう。

入力
出力

2変数代数方程式も同様にして解く事が出来ます。x+y-1=0, x^2 y - y +1=0 を解きます。

入力
出力

一般の方程式

次に代数方程式でない、一般の方程式を解く事を考えます。まず、
     (sin x)^2 + 3x - 1 = 0
を取り上げます。これは代数方程式でないので Solve を使って解く事は出来ません。
     f(x) = (sin x)^2 + 3x - 1
として、f(x) のグラフを描いてみます。

入力
出力
入力
出力

どうやら、x=0.3 の辺りに根があるようです。FindRoot を使って計算してみましょう( FindRoot は Newton 法を使って根を計算します)。

入力
出力

精度を20桁とってみます。

入力
出力

微分方程式

Mathematica では微分方程式を解く事も出来ます。
    y'(t) + y(t) = 1
を解いてみましょう。

入力
出力

と答えが出ましたね (c(1) は積分定数です)。

次に初期条件をつけた問題
     y'(t) = a y(t), y(0) = 1
を解いてみましょう。

入力
出力

と求まりましたね。


数列を求める

Mathematica では数列の漸化式から、数列を求めることが出来ます.まず、パッケージを読みこみます.

入力
出力

次の漸化式をもつ数列を求めてみましょう.

入力
出力

a[n] は初項 5 公比 2 の等比数列なので

入力
出力

ですね.今度はもう少し複雑な数列を取り扱ってみましょう。
次の数列を考えます.これはフィボナッチ数列と呼ばれる数列です.

n >0 の場合を扱うので Mathematica に n が正であることを知らせます.

入力
出力
入力
出力

a[n] を Mathematica で計算してみます.

入力
出力

a[n] は一見、自然数にならないように思えますが、n に自然数を代入すると a[n] も自然数となります.

入力
出力
入力
出力
入力
出力

次に、漸化式が2つ与えられた場合を取り扱います.次の漸化式を見て下さい。

入力
出力

課題

(1)次の方程式の解を求めよ.正確に計算できるときは、その答えを、そうでないときは30桁の精度の数値根で答えよ.

(2)次の方程式の -2 < x < 2 における数値根を、FindRoot による方法で求めよ.

(3)次の微分方程式の解を求め、0 < t < 5 範囲でプロットせよ.

(4)次の漸化式より a[n] を求めよ.n = 2,3,4 について答えが正しいことを確認せよ.

ヒント:Mathemtica では Sum[f[k],{k,0,n}] で表せます.

(5)x^n+y^n は x と y の対称式なので 基本対称式 x+y, x*y を用いて書き表せるはずである.例えば n = 2 のときはx^2+y^2 は

と x+y と x*y を用いて表せる. an を

と定義したとき、

が成り立つことを用いて、anを x+y, x*y を用いて表せ.ただし、n > 0 .

(ヒント:x,y をそのままの形で置いたのではうまくとけない。z = x+y, w = x y と置いて、RSolve で an を z, w で表し、最後に x, y に戻す。)