#!/usr/bin/env python # coding: utf-8 # ## 新規ノートブックの作成 # 新規にノートブックを作成するには、「Files」タグの右端にある「New」プルダウンメニューから「SageMath 7.2」を選択します。 # # ![New Button](images/New_Menu.png) # ## セルを評価してみよう # In[ ]: と表示されている入力用セルに式を入力して、その値を評価してみましょう。 # # 以下の2行を入力して、シフトキーを押さえながらリターンキーを押してください(以下shift-returnと表します)。または既に入力されているIn [n]のセルの式をクリックして選択した後、shift-returnを押します。 # # 5/6と数値ではなく、分数で返ってくるところが数式システムならではの芸当です。 # In[1]: a = 1/2 + 1/3 a # 複雑な数式を入力すると、テキストベースの結果では分かりづらいです。そんな時には、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) # ## 多項式のグラフ # 先ほどの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) # ## 関数の極 # 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) # ## 数値解 # Sageは数式処理システムなので、関数solverの結果が数式で返ってきます。 数値解が欲しい場合にはfind_root関数を使います。 # # このようにSageを使って関数fをプロットしたり、解を求めることによって関数fの理解を深めることができます。 # In[8]: print( find_root(df, -2, 0), find_root(df, 0, 2) ) # In[ ]: