{ "cells": [ { "cell_type": "markdown", "metadata": { "toc": "true" }, "source": [ "# Table of Contents\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 線形代数\n", "\n", "## グラムシュミットの直交化\n" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from sympy import *\n", "\n", "init_printing()\n", "x1 = Matrix([1,1,1])\n", "x2 = Matrix([0,1,0])\n", "x3 = Matrix([-1,1,0])" ] }, { "cell_type": "code", "execution_count": 135, "metadata": { "scrolled": true }, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$$\\left [ \\left[\\begin{matrix}1\\\\1\\\\1\\end{matrix}\\right], \\quad \\left[\\begin{matrix}- \\frac{1}{3}\\\\\\frac{2}{3}\\\\- \\frac{1}{3}\\end{matrix}\\right], \\quad \\left[\\begin{matrix}- \\frac{1}{2}\\\\0\\\\\\frac{1}{2}\\end{matrix}\\right]\\right ]$$" ], "text/plain": [ "⎡⎡1⎤, ⎡-1/3⎤, ⎡-1/2⎤⎤\n", "⎢⎢ ⎥ ⎢ ⎥ ⎢ ⎥⎥\n", "⎢⎢1⎥ ⎢2/3 ⎥ ⎢ 0 ⎥⎥\n", "⎢⎢ ⎥ ⎢ ⎥ ⎢ ⎥⎥\n", "⎣⎣1⎦ ⎣-1/3⎦ ⎣1/2 ⎦⎦" ] }, "execution_count": 135, "metadata": {}, "output_type": "execute_result" } ], "source": [ "GramSchmidt([x1,x2,x3])" ] }, { "cell_type": "code", "execution_count": 141, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAACsAAABYCAMAAABbNf6dAAAANlBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABHL6OuAAAAEXRSTlMAMquZdlQQ\nQN0iRIm7Zs3vfEQ8efgAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAGhSURBVEgN7VfBsoMgDAyCVrTa\n8v8/+xLgRQwG2xlvlYNmYNmGuF0ATIitA9FSNz4BxhQDmGAdtl5Ap3nrWAjQ4SQTzNa7Rc8BZme7\ngXsWFds7sAuAfX6ARYzFLIgsN5V3QU5qn/Dmnx5e21oqXp/KkaviVpfo6Smx0xxo4QOvqJnDSmW1\nExFR84HrLnkBJiT28RvGXH3Ii6xzQKbVQucj54gv9+KPUfMi8ZSlYWY352k09wALa0i0kbt4HGFN\nUacCeshbjpex4GXJ7oI8QWBLmirWsHvlpmkKVii3jd0rt4mlwUI1Z9hSuSfYnXJPsF/lUCq3xSuV\n28KCUG4TK5TbxMZB1k+CtjRZel9EK3qgsZ/zvkd45AqiQzW8713tAbf3ceGUQOiMJbsL8lyBVRhT\nt4a9wvsGx1vNfw5i107dHvcGQ//wulXe14/aWeP2Pizf194nS67pgXCstTypgb19Emt0nxHx8Hn9\nGZFluAvONZkR20vT7xXed3AfOvQ+LQfMsvI+HfuL3he/fnmPld7H99iBLqnO8dVqUwBH8R7rHPwB\nl1MlDUDSQ34AAAAASUVORK5CYII=\n", "text/latex": [ "$$\\left[\\begin{matrix}\\frac{\\sqrt{3}}{3}\\\\\\frac{\\sqrt{3}}{3}\\\\\\frac{\\sqrt{3}}{3}\\end{matrix}\\right]$$" ], "text/plain": [ "⎡√3⎤\n", "⎢──⎥\n", "⎢3 ⎥\n", "⎢ ⎥\n", "⎢√3⎥\n", "⎢──⎥\n", "⎢3 ⎥\n", "⎢ ⎥\n", "⎢√3⎥\n", "⎢──⎥\n", "⎣3 ⎦" ] }, "execution_count": 141, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a1 = x1/x1.norm()\n", "a1" ] }, { "cell_type": "code", "execution_count": 149, "metadata": { "collapsed": true }, "outputs": [], "source": [ "y2 = x2-x2.dot(a1)*a1" ] }, { "cell_type": "code", "execution_count": 150, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAADsAAABYCAMAAAB8m391AAAANlBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABHL6OuAAAAEXRSTlMAMquZdlQQ\nQN0iRM2Ju2bvfAoHCaEAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAJESURBVFgJ7ZjBloMgDEVjQatg\ndfj/n50AgoLEhDlndmVRoc0lCKQvAIML5QVMiWb4CTDHOsDglMYyMqhZT4PNAy/sZHDD+S1d+0wA\n66q3bLGJ2VEDWAPL/gf2A6BxSibs4ihivxuOdS+nRMyiW3Cj1grfWup3ib78KixOAZg5ocD5Navz\njibvdnK+H2cSzLE4t35ZVQAC5vIi8axBx0vcc9ZjPX7BKngtYZwGRz7aNGT2fdHQOJO2+qbWnnlG\n2LroNjs8Kvz74n4/t1KBS9gCuDQKdrJzLjbEVg7ZotIx5ourolr4LX6pGkXkxt+kbBm5XWwVuV1s\nFbldbBW5PWwduT1sHbk9bAy8M3K72Cpyu9gqcrtYKCNXzuY4iEj+FOzJq4ZlzlcE7E3DUgc8e9cw\nOXvXMDHb0DAx29Awln3QsCv7du/UzM8nDUtGP2TOQGtYYuk1ojWMZ2kNE7CkhglYUsMkLKVhEjbZ\nUE9innPIFpWqE4KtrNpNjl21ep3ZWNkHwyrMbJQPh1bx7KSpnkFhcuVNmmXBXGKY27nIAZB+R0wP\nn3Pvaacyc+Z9MWe2RJYj+p8kx8z69alvmXLneXtmw7sutf4l+JkFvwJ6J5aQYYdVr0cSm7ydT4Y9\nDRu1HjbH1NFPB3vTww72pody9q6Hcvauh2K2oYditqGHLPughxz7pIcc+z3TnQHFz5XwTPc9l6VJ\n/Z7LcCYk+wrNqhuVOIVC9p/OZUEt0uVJWtPiWZ3L8j3h5C/9tM53SwXUboR7Qq3hFxiNKEnBV83G\nAAAAAElFTkSuQmCC\n", "text/latex": [ "$$\\left[\\begin{matrix}- \\frac{\\sqrt{6}}{6}\\\\\\frac{\\sqrt{6}}{3}\\\\- \\frac{\\sqrt{6}}{6}\\end{matrix}\\right]$$" ], "text/plain": [ "⎡-√6 ⎤\n", "⎢────⎥\n", "⎢ 6 ⎥\n", "⎢ ⎥\n", "⎢ √6 ⎥\n", "⎢ ── ⎥\n", "⎢ 3 ⎥\n", "⎢ ⎥\n", "⎢-√6 ⎥\n", "⎢────⎥\n", "⎣ 6 ⎦" ] }, "execution_count": 150, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a2 = y2/y2.norm()\n", "a2" ] }, { "cell_type": "code", "execution_count": 154, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAC0AAABNCAMAAAAFMB3yAAAAPFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAo1xBWAAAAE3RSTlMA\nMquZdlQQQOkwRM3d7yKJu2ZsJAn0OwAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAbtJREFUSA3tl9F2\ngyAMhqMI65SKjvd/15Fg0KgYe9qrnXFhRD5jgIA/AJelGS6bRWNjWi8eQBOptPIp12ymfYYg0aZL\nxXK7tAs9I9JGpBsJiNpC07P579LPtdNaL0fjY9sxr9HMZfsG7QZfynA2Y4rvnBzp+nYksku5Fsxk\nHDcokUAYAdqyHjTaJ7qJ6UJFpXuAMabLLRohGzlwzTfS/pWZDwZfoaL7nlcYVLoPAD1ngUY3g7V2\nutvLJ2XK/biZRKtFsmU/RTsT5sBDUT5Qi2RIu6LDlBKlQs+0LYSSqss7FXqi7XlNp2s6Et3H3S59\n7ttFSo4+luzLzs/pMabswEVDZgkjmRpNvm/SV5F8Pb7Xj+W73Eu77+XP4/S/M0341lwW5OLtPG7I\ns2Nuzg54nPnnPlEqvsGF9Hfcw5URXMI8mJrvA0gP/h59pnlqvTxqHhyUGp127Z1C+qdfHpON5qEE\nvBhvqXk0mtulrc+l5HLtI/RO8/B3qr6FitFoqWI0WqoYlRYqRqOx/fDbuVg7WxVzw/dGxej0VsWo\ntFAxGi1VjKRposXpSKqYRJfTkcODT9exRGRH0tLpqOvgF7YaHN4b/C3TAAAAAElFTkSuQmCC\n", "text/latex": [ "$$\\left[\\begin{matrix}- \\frac{1}{2}\\\\0\\\\\\frac{1}{2}\\end{matrix}\\right]$$" ], "text/plain": [ "⎡-1/2⎤\n", "⎢ ⎥\n", "⎢ 0 ⎥\n", "⎢ ⎥\n", "⎣1/2 ⎦" ] }, "execution_count": 154, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y3 = x3 - x3.dot(a1)*a1-x3.dot(a2)*a2\n", "y3" ] }, { "cell_type": "code", "execution_count": 155, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAADsAAABXCAMAAACNzc2gAAAAP1BMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADFBd4eAAAAFHRS\nTlMAMquZdlQQQO0wRM3dibtmIu98bDjK63sAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAJdSURBVFgJ\n7ZhbdoQgEETbUZkERZyE/a81vERBHsXk5C98KCiXBuwWChqUTQ/C0+oQokGNk04zjpI0wEMZdoAw\nZ0tffW2Js1wkFjrYjZEYt5GFFnB2nkjsRI/lDXYjWjU7KH1xCbYrpWY50a70pZPVZm2aVRhw0+7u\nPnv4+uvkGyFqsVxYO+wwK8aANlmixXzW0Q9SXlCA5drw7n3duAcPTtjqs7a5jPRw32VY5nnWLuIT\nwHLFvdmX9egDBfqsDZ/uEDiTAezScH6WMsuWNaQlTElU/1po2A0hG2V8Aw32auaWR9k4cl0zIJtE\nbhebRG4fG0duF2sqXyK3m71Ebi97jdxONorcPjaO3C42idwuNoncLtZVTq6gTybUn9tlo5Ci9Bdo\n9HnRqwIzgZBLdVa+DCPOZTNqwrBP9YyenYXN/lxvQeArfFX3DMqyXOW3MdU+M2WXH67yP9kquyu7\nPRnc7RyKzzVYa/ct9jd9JjdX8ztzRZtd7uW5xYjGXB0vOd8YK75R2U+uxidfBYeu2yUm9Ha1gELr\nbzTIS8HYfX58Xp7g2e8PfP+cttoYb1o9Kv+z0XTYQtjjJK+Aubrpk6MJgL3pE5y96xOcvesTmM3o\nE5g9hELmB1+cq4o+admt6ZMWW9MnbbasT9psWZ8AbFGfAGxRnyBsSZ8g7FGndC/4RgjZKJM0UmCT\nWvlii83pk6OlBpvVJyCb1Scom9MnIGuqZSLX0Y3xmko3feJIRP/e9QnMZvQJyub0Cchm9QnIZvVJ\nzFqP9wcRx5vqPZz1MXNwN03hbKlKuZf2rG+a6AfHxii2mqy0TQAAAABJRU5ErkJggg==\n", "text/latex": [ "$$\\left[\\begin{matrix}- \\frac{\\sqrt{2}}{2}\\\\0\\\\\\frac{\\sqrt{2}}{2}\\end{matrix}\\right]$$" ], "text/plain": [ "⎡-√2 ⎤\n", "⎢────⎥\n", "⎢ 2 ⎥\n", "⎢ ⎥\n", "⎢ 0 ⎥\n", "⎢ ⎥\n", "⎢ √2 ⎥\n", "⎢ ── ⎥\n", "⎣ 2 ⎦" ] }, "execution_count": 155, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a3 = y3/y3.norm()\n", "a3" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 直交補空間" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAANUAAAAyBAMAAAA5L4OKAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAEImZRO/dMlQiu6vN\nZnZmcXX2AAAACXBIWXMAAA7EAAAOxAGVKw4bAAADz0lEQVRYCbVYzUtUURT/vZnRmTfjzDwE3Rg6\nFS1C0KnoA0Wcv6APKKMIMoggEhsKWgUaEWSbBgoXUWibFm2aCAKhcmjRooUKUTtrTFpEkWNEWVLT\n/XxvBsf37n2DZ3HPvff8zvndL895I0CkOU3bDZQ7ozJ4aCAruxuk48ctEfmm17bMXQ/rXM34Kc5l\n/vHaTRsCP7ww7nZzldtjy+444DFwxAvjYe/nB5MseOAwAEzXeYgjRUaSzHtxzVp1c3WkGUmHJxeB\nnbeMb1P7u7xWVWFv/3L7Y9EeCxIVrtB3NONdcQiBRXJ5KmKk4sONBXT1WgytwdWYx2Z0W2PoQ48K\nExCwAsuRXHAuOKnLtQuw8Jp47cQHNS4DTYQlmIqXNLkS7Gb/MS/FfQHJIsVr7+sqzBzCv6ivcZS2\nKjKSpagW1kL5vsJpJHJXEiUsAF+LKjxAxFpCwkJihsOVuca3bH0aWomWzDniqHiGB0Yf4R6B657h\nbLn803ixsDhP1zgxSltPafvW3keXZq4wqPK+nMDktiZoBFVpyZp/GdYHF87ik6VKRHCNucQh31wX\nPk5pUCHc1ZljeJF0J1I63j6xyUnm+CHj01/HranE0GdYW5WWSfrTkeoScK6Wa4Q9kcBvahNpOVyg\nA7RwxfoKjSgBPTso1jhR02Oa3tu2DLXxtBzuHaQDXeElYDueuTjGDgObeD3iaRmRQQduvDpDZCiL\nZLla+NE7QFECzmKErl1IhQufuVZEK9s4GbK0XMklvVQ0LQGnMZFxwV5KAbuzHMDSsk8uXgJw01qf\nK0DOEEFWKkRa9sclSgCG16dCN9sSe/MiLQsur3fYUaiMKktAIE1na7/DEC+0SxmCEGlZcHn9fTWK\nT2Yam0QXJeANH57jqrqNlti4Mke5neGMdXFUBhiTnQodSoXYOdlTTQvhfXIgPnjFZyKbjRyUxrX6\nZPm7PZmye07n8vUbljMivYZyOSUn1tYUc89qUVrX6JcvcnLOqIU6WS5LO9dNnZ/tibVctqlWJ+9M\nxp2uSy9WYfPPVRHEpVsH1/P3e10C1zDF5hezclpzX/fdc5CM6uioZdo/ETW5gOigE0it90DCtLmC\nrNRJdxXdL5+uHlesoPurmZSz7oxYkR5XQwHBZZW92BhSoPstX1xB8rVXEJ5qKg0MSaTevsw03srT\nlxHc9S3Ej0mE4BKfiXJ2XX2rU5bwdSHVBnPnE3mEEEmXXMTGy0iKccS0X7KPpS1lmZP8/42PCMou\nhvw/1FJR2ccvsPWQ8Iyv2lfoN5aHX+SEzdCW98DWa747RyP8B1w1Dg0NeSxDAAAAAElFTkSuQmCC\n", "text/latex": [ "$$\\left \\{ x_{1} : - \\frac{2 x_{3}}{5}, \\quad x_{2} : \\frac{x_{3}}{5}\\right \\}$$" ], "text/plain": [ "⎧ -2⋅x₃ x₃⎫\n", "⎨x₁: ──────, x₂: ──⎬\n", "⎩ 5 5 ⎭" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x1,x2,x3,a,b=symbols('x1,x2,x3,a,b')\n", "eq1=2*x1-x2+x3\n", "eq2=x1-3*x2+x3\n", "\n", "solve({eq1,eq2},{x1,x2,x3})" ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "collapsed": true }, "outputs": [], "source": [ "eq3 = expand(5/a*(-Rational(2,5)*a*x1+Rational(1,5)*a*x2+a*x3))" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAE0AAAAyBAMAAADrU0uXAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhAimXZEzWa7\n3asFX9bSAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAB4UlEQVQ4EdXVPUvDQBgH8H9bk2i0L6IuiihF\ncFK7OVpQcc0nsJl0UoMvtKBoJ1+2+glanKSg1c1RQRdxKH4A7SIIIooYQUHi5dqLuWtsC+LgDdd7\nnvvdw901bdBnvaBO81tWBB0Tk3UYpInxCDp/VPvaVEw6K9rzTbUc3ZFaquv27nUgHKvraKWs1pgb\nspmzP3kx1UUT7u7hZBk43F5yuV1dfXYTOr7AQkb60BK6U0/qgXJa5YC2YsBEuN9xiolg2sMpb0oO\niW/nO0UiLrpQDv531UCW3EzlnsmSMZHBl4Niho+wQW6GuRguA7ogFSCYC2fI3h2npltv/AKDbOBY\nDx21Gd9Ouh+Y3xEdZodXIKVW7XzN58C18BcukHbVYUOPev/ZWXazH0B/Pn/Qnc+X7HPSJO087/k/\nnxdy8ipun5E09zlm187LSfb9TpOfQjkDSa8MAKmEkQyNmLsD2p1pZxDS4Itwrhd4ijvzbOArIvTK\nuYLm5VRTdGTRrcbKuD+DJlcPaPH+l872Cy5Yogmxuykn2HmBpChorBiCa64kBL1ViZ16o5B1wZAw\nYGCGZplrMtDs4aaATc7NRQcfaYLr5OvoepFzBcv65AgNVPLU867a8Bm2Pz5bHf2Ba/S92uB7+gvq\nEIFwa9g3nQAAAABJRU5ErkJggg==\n", "text/latex": [ "$$\\left [ \\frac{a}{2} + \\frac{5 b}{2}\\right ]$$" ], "text/plain": [ "⎡a 5⋅b⎤\n", "⎢─ + ───⎥\n", "⎣2 2 ⎦" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "solve(eq3.subs({x2:a,x3:b}),x1)" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAEwAAABMCAMAAADwSaEZAAAAPFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAo1xBWAAAAE3RSTlMA\nMquZdlQQQOkwRM3d7yK7ZolsIpyNUQAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAqVJREFUWAntmNmy\n2yAMhtlMT8Eb9fu/ayUgTiyEUaaTi86Ei8QG6fOPzCKs1PtFG73uu1IhRuKsj1wMqb67DeCR7ZMt\nZnNhKKUP66BMd96kLUza56pYvXYkmANhmtgOb0OoJsf6YrsTmLfOxDE7QF8saAsH6CkaAUpgftYg\n9Gx9eer1cgVl+6aUm71yNWwNzEKDnq+OvTsNXdwcIM4XSpQtEE/XvNYJXK4Fu+aPoBZQaE/7K8xj\nPLfdk362sAXsVggHRgQFlHKFqQVDFmA0XkoLSwDBIQYhw9DVQmDBuMnZMUylZBMgtEn4VwuBPaqv\n/62ya/vj7oOwMsHwtz4sRSzzkv/Ot6aeduWqWn9QGTwh2Q3nyaXwMWstqbIEA8icQ7oiWRhjSWEz\nwHCeXAoLYywbGMyPFebJpfCw1pLCEDLRZYOFMZYcbKbz2pNun7KJJQN7LOunS/eCWraw/VzrupDa\n0Fg2sAATN4zXbeC1lhSm4zRNGx21nEbGksKWPNk4Z1rHWFIYdXnr/gt7K1zZ+Buzj8Vstcm6ZTTL\nZC8gYG4RH/tfV7II5hdMGOwzqejgEPbr53entVbbvI6TZZVx+fMjyGkX1OTHma+km/7ATGcahozm\ntIx21ITp3BbV1NtYqptEmYqYuc5GvaRi7FNFMG9c0qtxZG9ugCJY49Wp+MI6gbmp/sbsJjidpv89\nZn5bJCdaaTfj86zTCRhUS2F5SetjSosQFmg2z3KFsCQJmbSb0cB3jPMszsqCSpkyf0QPW8FgCxDC\nygEob1I9VVgvU2bx0Fh2vH+HRTy1hOHwkCk7cq4xHB5CGGxyJXu566UwZgaUbeMDmkwZfFVrPsMw\nGmUwxpGr+sK4qNzXlZjlE6tkLe3Czo++Hj/YumH21QVhQ/7o65z6C1MsIhKquefHAAAAAElFTkSu\nQmCC\n", "text/latex": [ "$$\\left[\\begin{matrix}\\frac{a}{2} + \\frac{5 b}{2}\\\\a\\\\b\\end{matrix}\\right]$$" ], "text/plain": [ "⎡a 5⋅b⎤\n", "⎢─ + ───⎥\n", "⎢2 2 ⎥\n", "⎢ ⎥\n", "⎢ a ⎥\n", "⎢ ⎥\n", "⎣ b ⎦" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a*Matrix([Rational(1,2),1,0]) + b*Matrix([Rational(5,2),0,1])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 微積分\n", "\n", "## Taylor展開" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "IPython console for SymPy 1.0 (Python 3.6.1-64-bit) (ground types: python)\n", "\n", "These commands were executed:\n", ">>> from __future__ import division\n", ">>> from sympy import *\n", ">>> x, y, z, t = symbols('x y z t')\n", ">>> k, m, n = symbols('k m n', integer=True)\n", ">>> f, g, h = symbols('f g h', cls=Function)\n", ">>> init_printing()\n", "\n", "Documentation can be found at http://docs.sympy.org/1.0/\n" ] } ], "source": [ "from sympy import *\n", "init_session()\n", "\n", "t = symbols('t')\n", "v = exp(-t)+1.0" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$$2.0 - t + \\frac{t^{2}}{2} - \\frac{t^{3}}{6} + \\frac{t^{4}}{24} - \\frac{t^{5}}{120} + \\mathcal{O}\\left(t^{6}\\right)$$" ], "text/plain": [ " 2 3 4 5 \n", " t t t t ⎛ 6⎞\n", "2.0 - t + ── - ── + ── - ─── + O⎝t ⎠\n", " 2 6 24 120 " ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "vs = v.series(t,0,6)\n", "vs" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "