新規ノートブックの作成

新規にノートブックを作成するには、「Files」タグの右端にある「New」プルダウンメニューから「SageMath 7.2」を選択します。

New Button

セルを評価してみよう

In[ ]: と表示されている入力用セルに式を入力して、その値を評価してみましょう。

以下の2行を入力して、シフトキーを押さえながらリターンキーを押してください(以下shift-returnと表します)。または既に入力されているIn [n]のセルの式をクリックして選択した後、shift-returnを押します。

5/6と数値ではなく、分数で返ってくるところが数式システムならではの芸当です。

In [1]:
a = 1/2 + 1/3
a
Out[1]:
5/6

複雑な数式を入力すると、テキストベースの結果では分かりづらいです。そんな時には、show関数を使って表示すると数式がきれいに表示されます。

In [2]:
show(a)

多項式

中学の数学に出てきた多項式をSageで処理してみましょう。

以下の様な3次多項式を持つ関数$f(x)$をSageで定義します。 $$ f(x) = x^3 - x^2 - 2x $$

最初に変数xをvar関数で定義します。次に上記の多項式を変数fにセットします。

In [3]:
x = var('x')
f(x) = x^3 - x^2 - 2*x
show(f(x))

多項式の因数分解には、factor関数を使います。

因数分解の結果から、関数fはx=-1, x=0, x=2でX軸と交わります。

In [4]:
factor(f)
Out[4]:
(x + 1)*(x - 2)*x

多項式のグラフ

先ほどの3次多項式$f(x)$をプロットして、X軸と交差する位置を確認してみましょう。

plot関数には、表示したい関数とその範囲を指定します。ここではx=-2.5からx=2.5の範囲を指定します。

Sageの図化機能を使うことで簡単に$f(x)$の特徴を理解することができます。

一番最初は、以下の様なワーニングがでますが、2回目以降はでません。

/usr/lib/sagemath/local/lib/python2.7/site-packages/matplotlib-1.5.1-py2.7-linux-x86_64.egg/matplotlib/font_manager.py:273: UserWarning: Matplotlib is building the font cache using fc-list. This may take a moment.
  warnings.warn('Matplotlib is building the font cache using fc-list. This may take a moment.')
In [5]:
plot(f, [x, -2.5, 2.5], figsize=5)
Out[5]:

関数の極

3次多項式$f(x)$の極は、関数の接線の傾きが0(傾きがX軸と平行)の場所です。 関数の極を求めるには$f(x)$を微分し、その値が0となるxを求めます。

関数の微分には、diff関数を使います。diff関数には、微分したい関数とその変数を引数とします。

In [6]:
df(x) = diff(f, x)
show(df(x))

関数の解

関数solverは関数が0となる変数の値を求めます。solverの引数は、解を求めたい関数とその変数を指定します。

関数fとそれを微分した関数dfのグラフを比べると関数dfがX軸と交わる点で、 関数fの接線の傾きが0となっていることが見て取れます。

In [7]:
sol = solve(df, x)
show(sol)
plot(df, [x, -2.5, 2.5], figsize=5)
Out[7]:

数値解

Sageは数式処理システムなので、関数solverの結果が数式で返ってきます。 数値解が欲しい場合にはfind_root関数を使います。

このようにSageを使って関数fをプロットしたり、解を求めることによって関数fの理解を深めることができます。

In [8]:
print(  find_root(df, -2, 0), find_root(df, 0, 2) )
(-0.5485837703548542, 1.2152504370215302)
In [ ]: