{ "cells": [ { "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": "iVBORw0KGgoAAAANSUhEUgAAAeQAAAFnCAYAAAB3ijqPAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAIABJREFUeJzt3Xl0VdX5xvHnBgQkBASJCSAiaIuIoAwqClqtMlmBImgT\nxDrVCW1LsQ51+VtVOyhqHTrYUi0iCkQFwYRBwqiIgIhCEARERAYNUIQEA4QM5/fH2wAqQxLuvfuc\nc7+fte5CTHLuSyD3uXufvd8d8TzPEwAAcCrJdQEAAIBABgDAFwhkAAB8gEAGAMAHCGQAAHyAQAYA\nwAcIZAAAfIBABgDABwhkIOA8z1NhYaHo8QMEG4EMBNyuXbvUoEED7dq1y3UpAI4BgQwAgA8QyAAA\n+ACBDACADxDIAAD4AIEMAEA1fP65tGVL9K5HIAMAUA2//rXUq5cUrR2HNaNzGQAAEsfixVJOjvTy\ny1IkEp1rRjy6CQCBVlhYqAYNGqigoED169d3XQ6QEH7yE+mzz6QVK6QaNaJzTUbIAABUwaJF0tSp\n0tix0QtjiREyEHiMkIH46tVL2rBBWr48uoHMCBkAgEp67z1p+nTp1VejG8YSI2Qg8CpGyL1791bN\nmjWVmZmpzMxM12UBodS9u5SfLy1bJiVFeZ8SI2QgJLKyspiyBmJo7lxp5kxp/Pjoh7HECBkIPO4h\nA7HnedKFF0qlpdL770dvq9PBGCEDAHAU2dnSwoXSjBmxCWOJETIQeIyQgdgqK5Pat5eaNLEp61hh\nhAwAwBGMGSOtXCm9+GJsn4cRMhBwjJCB2Ckullq3ljp1kiZMiO1zMUIGAOAwRoyQNm6Upk2L/XNx\n2hMAAIewa5f0xz9K118vtWkT++cjkAEAOITHHrNQfvjh+DwfgQwAwHds2CA99ZT0299KzZvH5zkJ\nZAAAvuOBB6QGDaR7743fc7KoCwCAg7z/vm11ev55KSUlfs/Lticg4Nj2BESP50kXXywVFEgffRT9\nE52OhBEyAAD/88Yb0rvvSrm58Q1jiREyEHiMkIHoKC6W2ra1RiBTpsT/+RkhAyGRkZHBecjAMfjH\nP6T16+0gCRcYIQMBxwgZOHb5+TYyHjzYgtkFtj0BABLeffdJxx0n/eEP7mpgyhoAkNDmz5dGj7Zt\nTo0auauDKWsg4JiyBqqvtFTq3FmqVUtauFBKcjhvzAgZAJCwRoyQ8vKkRYvchrHEPWQAQILatk16\n8EHp5pulc891XQ2BDABIUPffL0Ui0qOPuq7EMGUNAEg48+ZJI0faFqfGjV1XY1jUBQQci7qAqiku\nls45RzrhBGuTGe8WmYfDCBkAkFCGD5fWrpU+/NA/YSxxDxkAkEBWr5b+9Cfpnnukdu1cV/NtTFkD\nAceUNVA5niddeqm0aZO0fLl0/PGuK/o2pqwBAAnhxRelt9+WZs70XxhLTFkDABLA5s3SsGHSz38u\nXXaZ62oOjUAGQiIjI0N9+/bVuHHjXJcC+IrnSbfeKtWtKz39tOtqDo8payAksrKyuIcMHMKoUdLU\nqVJOjtvDI46GETIAILQ2bZKGDrWp6iuvdF3NkRHIAIBQ8jzpllukevWkZ55xXc3RMWUNAAilkSOl\nt96SpkyRGjZ0Xc3RMUIGAITO+vW2qvqGG6QrrnBdTeUQyACAUCktlQYPtlGxn1dVfxdT1gCAUHns\nMWnBAmnuXDtAIigYIQMAQmPRIumhh6QHHpAuush1NVVDL2sg4OhlDZhdu6QOHaQTT7RjFY87znVF\nVcOUNQAgFH71K2nLFltZHbQwlghkAEAIvPSSdeQaNUo6/XTX1VQP95ABAIH28cfSHXdIN94oXX+9\n62qqj3vIQMBxDxmJbNcu6dxzpVq1pIUL7QCJoGLKGgAQSBWnOG3eLC1ZEuwwlpiyBkKD4xeRaP71\nLykrS/rPf6Qf/tB1NceOKWsg4JiyRiL64AOpa1cbIf/tb66riQ4CGQg4AhmJJj9f6txZatZMeucd\nqXZt1xVFB1PWAIDAKC6WrrpKKi+XJk4MTxhLLOoCAASE50m33y59+KGNjJs2dV1RdBHICJ3iYmnj\nRumLL6StW6Xt26X//td+3blT2rfPHiUl9mtpqVSzpm2bqFVLOv54a0h/wgl2WkzDhlJqqnTyyVLz\n5lLjxlIk4vpPCSSeZ5+1xh+jR0vnnee6mugjkBFYX38tLVtmTQE+/lhauVL6/HPpyy/tnXSFWrWs\nt+2JJ1rI1q59IHzr1pVq1LBQLimR9u61665YYeG9Y4dUWPjt561d2+5dNW9uKzvPOOPAo0ULux6A\n6MrNle6+W7rnHum661xXExss6kIglJdLy5dL771nm/8XLpTWrLGP1aoltWkjtW0rnXaadOqp9mjR\nQjrpJKlevWMb0ZaVSdu2SZs2HXhs3Cht2GA1rFol7d5tn1u7ttXSqZMtOunUSWrfPrb3uVjUhbBb\nscJWVF94oZSTE943vQQyfCs/X5o+XZoxwx5bt9rU8tlnSxdcIHXpInXsKP3gB/b/XSkvt8YEq1ZJ\nn3wi5eXZlowVKw5Mh7drZ1NsF11kj1NOid7zE8gIsy+/tJ/1hg2lefOkMP8TJ5DhK198Ib3xhjRh\ngo2GPc9Ct0cPqXt3+8EMSjeevXstnJcssYBesMACW7Lp7osuki65xP5cp55a/echkBFWu3ZJF19s\na0AWLrRbRWGW8Nue6GoUe0f7HhcUSCNG2Kj31FOl+++3d8MjR9qoeMkS6dFHpR//ODhhLEl16tio\n+I47rJPQypU29T1pknTNNdLatfaxli3tXvRdd0nZ2d+/Zw1/4LUi9g7+HpeUSAMHSuvWSVOnhj+M\nJQKZH7I4ONT32POkt9+Wrr1WSk+XhgyRGjWSxoyx0MrJkW64wVY3h0njxlK/ftKTT0qLFtk7/zfe\nkC67zF50+vWzxWcXXyw9/viB++Rwj9eK2Kv4HpeXWweuOXNsr3G7do4Li5OED2TE1969tm2hQweb\nrv3gA+mhh2yR1JQp0qBB4b5H9F0nnCD17y/98582Eli7VvrrX+3/P/SQ1Lq1LRK7/36b8i4vd10x\nEFueJw0bZucbv/iizYwlikoHcrTeHfrtOtHgtz+T364j2TTsn/9si5luvNH29Obm2kKo++6r3Ab/\naNTjt+/Nd69z2mk2jZ2dbaPnSZNsKv8//7EVpk2bSrfcYt+70tKolHDEesJwHT+9Vkj++t748ToP\nPWT7jZ97zmbQXNYS7387BHIU+O3P5Kfr7Nxp064tWkiPPCJdfbW0erU0ebItZqrKdiQ/vTjH4zp1\n69oU9siRtuJ83jzbfzl3rtSzp9SkiYX3u+9GpZSj1hPU6/jptULy1/fGb9f57DN7nXjsMevI5bKW\naF6nsiq1WcTzPJWWlqowCqtNwngdP9Xil+vs3i39/e92Css335Tq1lsLNXSohYhUvYVLif531b69\nPR580BqiTJhg95//9S/7+mHDCjVokO19ru6+6yB/f4JQC9c5vFGjpJUrSzVsWKHuuOPYFjf65c90\nsJSUFEWO8oNZqW1PFdsqAABA1VVmW2KlAtnzPO3atStqhSGc3nvP2tp9/LEtVPr9721LD2KrsLBQ\nzZs31/r1G7V8eX2NH2/3ngsKbLQ8aJA0YIBtJQP85t//tteN22+3qeqw9omP2ggZOJJt2+wH6qWX\npPPPl55+2hYiIT4O1Rhk717bOjZqlHU7q1HD7kdff73df3bZ2Qyo8Oyz0tChtqr6ySfDG8aVRSCj\n2jzPVv/ee6/9/rHHpF/8QkpiM11cHa1TV36+7e9+6SXrB56WZqtXb7ghcfZ3wn+efNLeyN97b7hH\nxlVBIKNaNm608M3NtVHXE0+Er4lHUFS2dabnSUuXWjCPGWPbqs47z/4eMzKklJQ4Fo2E5Xm21fGJ\nJ2yB4iOPEMYVGMugSjzPXtDbtbN7xVOn2rQoYex/kYg1ZHnmGTsM4403rHPYbbcd2N/8/vvfProS\niKbSUummmyyMn31W+sMfCOODJWQgl5aW6r777lP79u1Vr149NWvWTNdff72++uor16X52vbttljr\nhhukvn0tkHv3PvLXTJw4Ub169VJqaqqSkpKUl5cXl1pxZLVq2d/llCl2oMdvf2v3ms8/XzrnHNuy\ntmOH6yrdmzdvnvr27atmzZopKSlJ2dnZrksKrN277d/cK6/YDM2vfmX//9FHH9V5552n+vXrKy0t\nTf3799eaBO0Zm5CBvHv3bi1dulS///3v9dFHH2nixIlavXq1+vXr57o033rvPRtdvfuu9ZYdPbpy\nq3aLiorUrVs3DR8+/KgrDOFG8+a2Iv7zz23G4/TTpd/8xkbN110nvfNO4o6ai4qKdM455+gf//gH\n/36PQX6+tcCcM8eaAg0adOBj8+bN0y9/+UstWrRIM2fOVElJiXr06KE9e/a4K9gVD57ned7ixYu9\npKQkb+PGja5L8ZWyMs8bPtzzatTwvK5dPW/DhupdZ/369V4kEvGWLVsW3QLhFRQUeJK8goKCqF3z\nq68877HHPO/00z1P8rzWrT3viSc8b+vWqD1F4EQiEe/NN990XUbgLF3qec2be17Tpp63ePHRP3/b\ntm1eJBLx5s2bF/vifCYhR8iHsnPnTkUiEZ1wwgmuS/GN7dulPn1sAcY999i72+bNXVeFeEhPt7/3\nNWuk2bNtP/ODD9oReNdcI82YwUEXOLqcHKlrV1tj8v77UufOR/+aitfiRo0axb5AnyGQJRUXF+v+\n++/XoEGDVK9ePdfl+MKKFXY/cdEim8Z89FHpuONcV4V4i0SkSy+1e36bN9tinBUrpB49bGr7z3+W\nWHqB7yovt9eMfv3s38o771TuPGPP8zR06FB169ZNZ555ZuwL9ZmECOSxY8cqJSVFKSkpql+/vubP\nn7//Y6Wlpbr66qsViUT03HPPOazSPyZPtsYexx8vLV589IVbFY70fUbwnXii9Otf22K++fOlH/1I\n+uMfbdakf39p2jSprMx1lXBtxw4L4gcesFmV8eOl5OTKfe2QIUO0cuVKZWVlxbZIn0qIfj39+vVT\nly5d9v++2f/eqlWE8caNGzV79uyEHx17nvT449LvfmerqF9+uWp7Uw/3fUa4RCJ2FOSFF1pXtrFj\nrf3hFVfY8Zo33WQPbm8kno8+sjatO3faG/uf/KTyX3vXXXdp6tSpmjdvnppUnEKTYBJihJycnKxW\nrVrtf9SuXXt/GK9bt06zZs1SwwRv9FtSYi+i999v72zfeKPqjSIO9X0+GKtUw+eEE6QhQ+yF+P33\nbXryiSekU0+VrrzSznWOxbnN8BfPs61yF1xguy+WLKl6GL/55puaM2eOTjnllNgV6nMJMUL+rrKy\nMg0YMEBLly7V5MmTVVJSoi1btkiSGjVqpOMS7GZpUdGBhTqvvFL9Q8EPZceOHdqwYYM2b94sz/O0\natUqeZ6n9PR0paWlRe+J4FQkIp17rj2eekoaN056/nmbumzaVLrxRusIduqpriutmqKiIq1du1be\n//Z9rVu3TsuWLVOjRo3UnCkASbal6aab7JbFnXdaS8w6dSr/9UOGDNG4ceOUnZ2t5OTk/a/FDRo0\nUJ2qXCgM3C7ydmP9+vVeUlLStx6RSMRLSkry3n77bdflxdW2bZ53/vmeV6+e5+XmRv/6o0aN2v+9\nPfjx8MMPR//JElTFtqfevXt7ffr08caOHeu6pP0+/NDz7rjD8+rX97xIxPN69PC811/3vOJi15VV\nzty5cw/57/fGG290XZovvPmm5zVu7HlpaZ43ZUr1rnGo729SUpL30ksvRbfYAKCXdQJbv17q1Uv6\n+mt7d9upk+uKUB2V7WXtUlGR9NprNmpesEA66STr+PaLX0g/+IHr6lBV27ZZ85gxY2xr5Asv2N8p\njk1C3EPG961ebfsDS0qsCxdhjFhKTrZp6/fesxOnMjJsIdgPfyhddJG9oBcUuK4SR+N51qWvTRt7\nE//ii9KbbxLG0UIgJ6CVK23Lygkn2PaV0093XRESyVln2cECX35pI6y6daVbb7VmJIMGWU9ttk/5\nz2ef2aK9ijO1P/nEZjlYqxk9BHKCWb5cuuQSe0c7d669CAIuHH/8gQDeuFF66CE7HrJXL9s+dd99\n9uYRbhUW2t/FmWdKn35qjYLGjGFUHAvcQ04gS5dKl19u+0NnzLCj9xB8QbiHXFmeJ33wgR3xOW6c\nrW/o3NlW/l99deW6PSE6ysqkkSOtucc330j33munglW2yQeqjkBOEHl5NjJu1UrKzZUSsE1saIUp\nkA9WXGzHQ44ebfcrS0rsfvPPfiYNHMgILVbKy20B3kMP2VqT666zFqknn+y6svBjyjoBfPqp3ftp\n2VKaOZMwRjDUri1ddZU0aZK0ZYuN1urWtXN0mzSRune3xWBff+260nAoL5cmTJDOPlvKzJROO81m\nK0aPJozjhRFyyG3cKHXrZi9k77xjp64gXMI6Qj6c//7XOsllZdk6iBo1LJx/+lPbgpOgXRerbc8e\nC92//MXevF9+ufTII9Z1C/FFIIfY1q3SxRdLe/dK777Lu9ywSrRAPlh+vh1eMH68NG+ejfLOO896\nsffrJ7Vtyyrgw9m82faF/+MfNstw1VXS3XdLB7WjR5wRyCG1c6cdm5efby9UbG0Kr0QO5INt324r\ngLOzpbfesoVILVtaOPfsaW9OE31BUkmJfY9eeMF+rVPH2l4OHWpT1HCLQA6h4mK7Z7x8ufT221K7\ndq4rQiwRyN+3d69NZ7/5ppSTY6PBWrWsGU737vbz0aGDlJQAq2g8z841f/11O5krP996jt98szVo\nadDAdYWoQCCHTHm5NHiw3WObPduOyEO4EchH5nnSqlW21W/GDGnOHGvleeKJtmq7a1f7OenUyRaS\nhUFJibRwoTRxok3nb9wopaXZITI332wLt+A/BHLIPPCA9Nhjtm1h4EDX1SAeCOSq2bfPwmrmTLud\ns2iRLWyqVcv2PB8c0CefHIx70OXl1jlr3jzb1jhrljX0SE+384mvvtoWd9ao4bpSHAmBHCL//rd0\n2212/Nndd7uuBvFCIB+bkhJp2TJrI/vee/br5s32sUaNpPbtbURZ8Wjd2u29aM+z+pYvt2Y/FXXv\n2GGBe8EFds+8Vy+pY8fEmJYPCwI5JKZPtwPBb79d+tvfgvGuHtFREci9e/dWzZo1lZmZqczMTNdl\nBZbn2RTv0qUW1BWPzz6zj0k2/XvaafZo1cp+bdLEmpWcdJJ1wat5DKfN79tne683bJC++MIe69db\nK9GPP7ZFm5KUkmIB3LWrPc4/X6pX75i/BXCEQA6BNWtsq0fXrrbClGmpxMIIOT6++cbC8NNPLZwP\nfmzd+u3PjUTsHnWjRjaarlvXHscfbx8rL7fWlGVl9t9799oIt+Kxe/e3r9ewodSihXTGGbZI86yz\n7NcWLRgBhwmBHHAFBfauOBKx+2KsmEw8BLJ7RUU2ot269duP7dvt/vTu3fY5FUFbo8aBR1KSLSZr\n2PDbj8aNLXBPOUXirzUxHMOkClwrK7Om+/n50vvvE8aAK8nJNnXdqpXrShBkBHKAPfigNd2fOtUO\negcABBeBHFCvvmrbm554wlZUAgCCjeUAAfTJJ7a5f9AgtjcBQFiwqCtgiopsRbXn2X1jtjiARV1A\nODBlHSCeJ91xh+1HXLyYMAaAMCGQA+SFF6SXX5ZeeUU680zX1QAAool7yAGxdKn0y19aa8xrr3Vd\nDQAg2riHHABFRdaTNjnZetbWqeO6IvgJ95CBcGDKOgCGDpU2bZI++ogwBoCwIpB9bsIEu3f8/PM0\n/wCAMOMeso9t2iTdcot01VW27xgAEF4Esk+Vl0s//7mdEPP88xynCABhx5S1Tz35pDR3rjRzph3h\nBhxNRkYG5yEDAcYqax9avlzq1MkWcz3+uOtq4HessgbCgUD2mZISqUsXO7D8ww/tnFTgSAhkIByY\nsvaZ4cOlZcukBQsIYwBIJCzq8pG8POmRR6R775XOPdd1NQCAeGLK2icqpqqLi6UlSxgdo/KYsgbC\ngSlrn6iYql64kDAGgETElLUPLF9+YKq6c2fX1QAAXGDK2rGyMumCC+wACVZVozqYsgbCgSlrx/75\nT2nxYmn+fMIYABIZU9YObd4sPfCAnXF84YWuqwEAuEQgO/TrX1uv6kcfdV0JAMA1pqwdycmxoxXH\njZMaNnRdDQDANRZ1OfDNN1LbtlKbNtK0aZzkhGPDoi4gHBghO/DQQ9LWrdKcOYQxAMBwDznOVqyQ\nnnlG+r//k1q1cl0NwiQjI0N9+/bVuHHjXJcCoBqYso4jz5Muv1zauNGagbDNCdHAlDUQDkxZx9GE\nCdLs2dKUKYQxAODbGCHHye7dtoirfXtbYQ1ECyNkIBwYIcfJY49J+fnSrFmuKwEA+BGLuuJg3Trp\n8cel3/5WOv1019UAAPyIQI6Du++WUlOtTSYAAIfClHWMzZkjTZokjR0rJSe7rgYA4Fcs6oqh8nLp\n3HOl446TFiygCQhig0VdQDgwZR1DY8bYGcd/+QthjMq58cYblZSU9K3HFVdc4bosAHHAlHWM7N5t\n94wHDJC6dnVdDYKkd+/eGjVqlComr2qzaR1ICARyjDz9tLRli213Aqqidu3aSk1NdV0GgDhjyjoG\nKoL4zjvZ5oSqmzt3rtLS0nTGGWdoyJAh+vrrr12XBCAOWNQVA7ffLr32mrR2rdSoketqECSvvfaa\n6tatq5YtW+qzzz7T7373O6WkpGjBggWKHGYhAou6gHBgyjrKPvlEev556cknCWMc2dixY3XbbbdJ\nkiKRiKZNm6Zrrrlm/8fbtm2rdu3a6bTTTtPcuXN16aWXuioVQBwwQo6ygQOlDz6QVq/mAAkcWVFR\nkbZs2bL/982aNTvkAq6TTjpJf/rTn3TLLbcc8joVI+TevXurZs1vv8fOzMxUZmZmdAsHEBOMkKPo\ngw/sRKcXXySMcXTJyclqdZRDsTdt2qTt27erSZMmR71eVlYWU9ZAgDFCjqKePQ+cdVyjhutqEDRF\nRUV6+OGHNWDAAKWnp2vt2rW67777VFRUpLy8PB133HGH/DruIQPhwAg5SubOlXJzpfHjCWNUT40a\nNZSXl6fRo0dr586datq0qXr27KlHHnnksGEMIDwYIUeB51nzj337pMWL6cqF+GKEDIQDI+QomDLF\nelVPn04YAwCqhxHyMSovlzp0kBo2tJOdCGTEGyNkIBwYIR+jV1+V8vKk+fMJYwBA9TFCPgYlJdKZ\nZ0pnnCHl5LiuBomKETIQDoyQj8Err1h7zNdfd10JACDoOFyimkpLpT/9SerfXzrnHNfVAACCjhFy\nNY0dK332GaNjAEB0cA+5GkpL7d5xmzbSm2+6rgaJjnvIQDgwQq6GV1+VPv1UGjfOdSUAgLBghFxF\nZWVS27bS6adLkye7rgZghAyEBSPkKnrtNTtacfRo15UAAMKEEXIVlJdLZ50ltWghTZvmuhrAfPc8\nZM5ABoKJQK6C116TfvYz61vdpYvragDDlDUQDgRyJXme9axOTZVmzHBdDXAAgQyEA/eQK2n6dGnZ\nMmn2bNeVAADCiBFyJV1yibRnj7RwIYdIwF8YIQPhwAi5EhYskN5+W3rjDcIYABAb9LKuhOHDpdat\npX79XFcCAAgrRshHsXKltcccOVJK4u0LACBGiJijePxxqVkz6dprXVcCAAgzAvkINmyQxoyR7r5b\nqlXLdTUAgDAjkI/gqaeklBTplltcVwIACDsC+TB27JCef1666y6pXj3X1QAAwo5APox//9tOdrrr\nLteVAAASAYF8CPv2SX/9qzR4sHTSSa6rAQAkAgL5EF5/XfryS+k3v3FdCQAgUdA68zs8T+rc2Q6R\neOst19UAR8fxi0A40BjkO955R/rwQztMAgiSrKwselkDAcaU9Xc89ZTUtq3UvbvrSgAAiYQR8kHW\nrJFycmy7E4dIAADiiRHyQZ59VmrcmDaZAID4I5D/5+uvpRdflO68U6pTx3U1AIBEQyD/z/PPS+Xl\n0h13uK4EAJCICGRZR67nnpMyMmgEAgBwg0CWNHmynexEm0wAgCsEsqS//13q0sUaggAA4ELCb3v6\n5BNp5kzplVdcVwIASGQJP0J+7jm7bzxwoOtKAACJLKEDubBQGjVKuvVWqXZt19UAABJZQgfyyy9L\ne/ZIt93muhIAQKJL2ED2PFvM1b+/dPLJrqsBACS6hA3k2bOlVavY6oTwyMjIUN++fTVu3DjXpQCo\nhoQ9D7l/f2ntWikvj4MkEGwV5yEXFBRw/CIQYAm57WnDBik721ZYE8YAAD9IyCnrF16QkpM51QkA\n4B8JF8ilpdJ//mNhXK+e62oAADAJF8hTpkhffslWJwCAvyRcII8YIZ17rnTOOa4rAQDggIRa1LV+\nvfTWW3b2MQAAfpJQI+QXXpBSUuzcYwAA/CRhArmkRBo5Uho82FZYAwDgJwkTyJMnS199ZQdJAADg\nNwkTyCNGSOefL519tutKAAD4voRY1PX551Juru0/BgDAjxJihDxypC3muuYa15UAAHBooQ/ksjJp\n1Chp0CAWcwEA/Cv0gTxzprRpk3TTTa4rAQDg8EIfyCNHSm3bSp07u64EiC3OQwaCLdTnIX/9tdSk\nifToo9KwYa6rAWKD85CBcAj1CHnsWKm83JqBAADgZ6EO5JEjpT59pJNOcl0JAABHFtpA/ugje9x4\no+tKAAA4utAG8osvSunpUu/erisBAODoQhnIxcXSmDHSz38u1UyIXmQAgKALZSBnZ9sKa6arAQBB\nEcpAHjlSuuAC6YwzXFcCAEDlhC6QN22Spk+nMxf8aeLEierVq5dSU1OVlJSkvLy8731OcXGx7rzz\nTjVu3FgpKSkaOHCgtm7d6qBaAPEUukAeM0aqXZuDJOBPRUVF6tatm4YPH65IJHLIzxk6dKimTJmi\nCRMm6J133tGXX36pAQMGxLlSAPEWqk5dnie1a2cPugfCz7744gu1bNlSS5cuVfv27ff//8LCQqWm\npiorK0v9+/eXJK1evVpt2rTRwoULdd55533vWnTqAsIhVCPkpUulFSuk665zXQlQPUuWLFFpaaku\nu+yy/f8qeKVeAAAKNUlEQVSvdevWOuWUU7RgwQKHlQGItVAF8ssvW1euHj1cVwJUT35+vmrVqvW9\nkW5aWpry8/MdVQUgHkITyKWl1rs6M5O9x/CHsWPHKiUlRSkpKapfv77mz59f7Wt5nnfYe84AwiE0\n0TVzprRlC9PV8I9+/fqpS5cu+3/frFmzo35Nenq69u3bp8LCwm+Nkrdu3aq0tLQjfm1GRoZqfufd\naGZmpjIzM6tYOQAXQhPIL78stWkjdezouhLAJCcnq1WrVof9+KFGvJ06dVLNmjU1a9as/Yu61qxZ\now0bNuiCCy444vNlZWWxqAsIsFAE8q5d0sSJ0v/9n8SsHvxsx44d2rBhgzZv3izP87Rq1Sp5nqf0\n9HSlpaWpfv36uvnmmzVs2DA1bNhQKSkp+tWvfqWuXbsecoU1gPAIxT3kN96Q9uyRrr3WdSXAkWVn\nZ6tDhw7q06ePIpGIMjMz1bFjR40YMWL/5zz99NO68sorNXDgQF1yySVq2rSpJkyY4LBqAPEQin3I\nl18ulZVJc+a4rgSIP/YhA+EQ+BHypk3S7Nks5gIABFvgA7miVebAga4rAQCg+gIdyJ5nq6t/+lOJ\nmToAQJAFOpCXL7dWmYMHu64EAIBjE+hAzsqSGjWSund3XQkAAMcmsIHseRbIAwZItWq5rgYAgGMT\n2EBetEj6/HPrXQ0AQNAFNpCzsqQmTaSLL3ZdCQAAxy6QgVxWJr36qnTNNVKNGq6rAQDg2AUykN9+\nW8rPZ7oaABAegQzkrCypZUuJXvvAARkZGerbt6/GjRvnuhQA1RC4Xtb79knp6dLtt0t//rPragD3\n6GUNhEPgRsgzZkg7djBdDQAIl8AF8rhxUtu2Urt2risBACB6AhXIu3dLkyZJGRmuKwEAILoCFchT\npkhFRQQyACB8AhXIr70mde4snX6660oAAIiuwARyUZGNkK++2nUlAABEX2ACeepUac8eaeBA15UA\nABB9gQnk8eOljh2lVq1cVwIAQPQFIpB375YmT2Z0DAAIr0AE8rRpFsoEMgAgrAIRyOPHS2efLf3g\nB64rAQAgNnwfyHv2SDk5rK4GAISb7wN5+nTb8sR0NQAgzHwfyK+/bn2rW7d2XQkAALHj60Deu5fp\naqCyOA8ZCLaargs4ktxcadcupquBysjKyuI8ZCDAfD1Cfv11O2qxTRvXlQAAEFu+DeTiYik7m9Ex\nACAx+DaQZ8yQCgu5fwwASAy+DeQJE2xl9Zlnuq4EAIDY82Ugl5ba6uqrrpIiEdfVAAAQe74M5Hff\nlbZvl376U9eVAAAQH74M5EmTpGbNpM6dXVcCAEB8+C6QPc8CuV8/Kcl31QEAEBu+i7ylS6UvvpD6\n93ddCQAA8eO7QJ40SWrQQPrRj1xXAgBA/PgykK+8UjruONeVAAAQP74K5HXrpLw8pqsBAInHV4E8\naZJUu7bUs6frSgAAiC/fBXKPHlK9eq4rAYKH4xeBYIt4nue5LkKStm6V0tOlF16QbrrJdTVAcBQW\nFqpBgwYqKCjg+EUgwHwzQs7JsTaZffq4rgQAgPjzTSBPnCh16yalprquBACA+PNFIO/aJc2cyepq\nAEDi8kUgT58uFRdbu0wAABKRLwJ54kTp7LOlli1dVwIAgBvOA7mkRJoyhaMWAQCJzXkgv/uuVFAg\n9e3ruhIAANxxHsiTJ0tNm0odOriuBAAAd5wHck6OHSYRibiuBAAAd5wG8urV0qef0gwEAACngTx5\nslSnjvTjH7usAgAA95wGck6OdPnlUt26LqsAAMA9Z4G8Y4etsL7ySlcVAADgH84C+a23pLIyAhmI\nFo5fBILN2fGLgwbZoq4lS1w8OxAeHL8IhIOTEXJpqTRtGqNjAAAqOAnk+fOlnTvZ7gQAQAUngZyT\nI6WnSx07unh2AAD8x0kgT55s09VJzvuEAQDgD3GPxE8/tcVcTFcDAHBA3AM5J0eqXVu67LJ4PzMA\nAP4V90CePNlaZSYnx/uZAQDwr7gG8q5d1p3rJz+J57MCAOB/cQ3kWbOkkhKpd+94PivgHxMnTlSv\nXr2UmpqqpKQk5eXlfe9zLrnkEiUlJe1/1KhRQ0OGDHFQLYB4imsgT5sm/fCHUqtW8XxWwD+KiorU\nrVs3DR8+XJHDHAIeiUR06623asuWLcrPz9dXX32lxx9/PM6VAoi3mvF6Is+Tpk6VBgyI1zMC/jN4\n8GBJ0hdffKEjda2tW7euUlNT41UWAB+I2wh5xQpp0ybpiivi9YxAcI0ZM0apqalq166dHnjgAe3Z\ns8d1SQBiLG4j5GnT7Nzjiy+O1zMCwXTttdeqRYsWatq0qfLy8nTvvfdqzZo1Gj9+vOvSAMRQXAP5\n0kulOnXi9YyAW2PHjtVtt90mye4LT5s2TV27dj3q1/3iF7/Y/99t27ZVenq6Lr/8cn3++edq2bJl\nzOoF4FZcArmwUJo3T3rmmXg8G+AP/fr1U5cuXfb/vlmzZtW6zvnnny/P87R27dojBnJGRoZq1vz2\nj3RmZqYyMzOr9bwA4isugTxrlh25yHYnJJLk5GS1OsKWgsOtsv6ujz76SJFIRE2aNDni52VlZXEe\nMhBgcQnkadOk1q3Z7gTs2LFDGzZs0ObNm+V5nlatWiXP85Senq60tDStW7dOY8eO1RVXXKETTzxR\ny5Yt07Bhw/SjH/1IZ511luvyAcRQzFdZe54FMqNjQMrOzlaHDh3Up08fRSIRZWZmqmPHjhoxYoQk\nqVatWpo5c6Z69uypNm3a6J577tHVV1+t7Oxsx5UDiLWId6TNkFHw8cdSu3bS9OlSjx6xfCYgMRUW\nFqpBgwYqKChgyhoIsJiPkKdOZbsTAABHE/NAnjbNTndiuxMAAIcX00AuLLTTnbh/DADAkcU0kNnu\nBABA5cQ0kKdOte1ONBcCAODIYhbInmcrqxkdAwBwdDEL5NWrpY0bpZ49Y/UMAACER8wCOTdXqlWL\n7U4AAFRGTAP5ootsDzIAADiymARycbE0Zw6duQAAqKyYBPKCBdLu3QQyEE8ZGRnq27evxo0b57oU\nANUQk9OecnOl1FSpfftYXB3AoXD8IhBsMRkh5+ZK3btLSTFvzAkAQDhEPTK3bZM+/JDpagAAqiLq\ngTxrljUF6d492lcGACC8oh7IubnSWWdJTZtG+8oAAIRXVAPZ8yyQma4GAKBqohrIn3wibd5MIAMA\nUFVRDeTcXKl2bevQBQAAKi/qgUy7TAAAqi5qgVxcLM2dy3Q1AADVEbVAnj9f2rOHQAYAoDqiFsi5\nuVJamtSuXbSuCABA4ohqINMuEwCA6ona4RLTptkJTwAAoOoinud5rosAUH2FhYVq0KCBevfurZo1\nayozM1OZmZmuywJQRQQyEHAVgVxQUMDxi0CAcccXAAAfIJABAPABAhkAAB8gkAEA8AEWdQEB53me\ndu3apZSUFEUiEdflAKgmAhkAAB9gyhoAAB8gkAEA8AECGQAAHyCQAQDwAQIZAAAfIJABAPABAhkA\nAB/4f6n2xE/DsH08AAAAAElFTkSuQmCC\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.5.1", "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.13" } }, "nbformat": 4, "nbformat_minor": 0 }