{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "\tHiroshi TAKEMOTO\n", "\t(take.pwave@gmail.com)\n", "\n", "# Sageを使ってみよう\n", "## ブラウザーで使える数式処理システムSage\n", "Sageの最大の特徴は、 FirefoxやInternet Explorer等のブラウザーからSage Notebook Serverにアクセスして、 気軽に数式処理を楽しむことが出来ることです。\n", "\n", "ノートブックは、Sageでの一連の計算を記録したノートであり、計算に関する説明文を挿入したり、 値を変更して再計算することができます。" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "## 新規ノートブックの作成\n", "新規にノートブックを作成するには、「Files」タグの右端にある「New」プルダウンメニューから「SageMath 7.2」を選択します。\n", "\n", "![New Button](images/New_Menu.png)" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "## セルを評価してみよう\n", "In[ ]: と表示されている入力用セルに式を入力して、その値を評価してみましょう。\n", "\n", "以下の2行を入力して、シフトキーを押さえながらリターンキーを押してください(以下shift-returnと表します)。または既に入力されているIn [n]のセルの式をクリックして選択した後、shift-returnを押します。\n", "\n", "5/6と数値ではなく、分数で返ってくるところが数式システムならではの芸当です。" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "5/6" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a = 1/2 + 1/3\n", "a" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "複雑な数式を入力すると、テキストベースの結果では分かりづらいです。そんな時には、show関数を使って表示すると数式がきれいに表示されます。" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "5/6" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "show(a)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 多項式\n", "中学の数学に出てきた多項式をSageで処理してみましょう。\n", "\n", "以下の様な3次多項式を持つ関数$f(x)$をSageで定義します。\n", "$$\n", "f(x) = x^3 - x^2 - 2x\n", "$$\n", "\n", "最初に変数xをvar関数で定義します。次に上記の多項式を変数fにセットします。" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "x^3 - x^2 - 2*x" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "x = var('x')\n", "f(x) = x^3 - x^2 - 2*x\n", "show(f(x))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "多項式の因数分解には、factor関数を使います。\n", "\n", "因数分解の結果から、関数fはx=-1, x=0, x=2でX軸と交わります。" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "(x + 1)*(x - 2)*x" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "factor(f)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 多項式のグラフ\n", "先ほどの3次多項式$f(x)$をプロットして、X軸と交差する位置を確認してみましょう。\n", "\n", "plot関数には、表示したい関数とその範囲を指定します。ここではx=-2.5からx=2.5の範囲を指定します。\n", "\n", "Sageの図化機能を使うことで簡単に$f(x)$の特徴を理解することができます。\n", "\n", "一番最初は、以下の様なワーニングがでますが、2回目以降はでません。\n", "```\n", "/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.\n", " warnings.warn('Matplotlib is building the font cache using fc-list. This may take a moment.')\n", "```" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nTWwUAAAAAElFTkSuQmCC\n", "text/plain": [ "Graphics object consisting of 1 graphics primitive" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "plot(f, [x, -2.5, 2.5], figsize=5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 関数の極\n", "3次多項式$f(x)$の極は、関数の接線の傾きが0(傾きがX軸と平行)の場所です。 関数の極を求めるには$f(x)$を微分し、その値が0となるxを求めます。\n", "\n", "関数の微分には、diff関数を使います。diff関数には、微分したい関数とその変数を引数とします。" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "3*x^2 - 2*x - 2" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "df(x) = diff(f, x)\n", "show(df(x))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 関数の解\n", "関数solverは関数が0となる変数の値を求めます。solverの引数は、解を求めたい関数とその変数を指定します。\n", "\n", "関数fとそれを微分した関数dfのグラフを比べると関数dfがX軸と交わる点で、 関数fの接線の傾きが0となっていることが見て取れます。" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "[x == -1/3*sqrt(7) + 1/3, x == 1/3*sqrt(7) + 1/3]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "Graphics object consisting of 1 graphics primitive" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sol = solve(df, x)\n", "show(sol)\n", "plot(df, [x, -2.5, 2.5], figsize=5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 数値解\n", "Sageは数式処理システムなので、関数solverの結果が数式で返ってきます。 数値解が欲しい場合にはfind_root関数を使います。\n", "\n", "このようにSageを使って関数fをプロットしたり、解を求めることによって関数fの理解を深めることができます。" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(-0.5485837703548542, 1.2152504370215302)\n" ] } ], "source": [ "print( find_root(df, -2, 0), find_root(df, 0, 2) )" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "SageMath 7.2", "language": "", "name": "sagemath" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.10" } }, "nbformat": 4, "nbformat_minor": 0 }