Experiments on showing how Taylor expansion works.

Probably will be added to the Math chapter once finalized.
This commit is contained in:
Roger Labbe 2015-04-03 18:51:23 -07:00
parent 727ca9bed9
commit 9950fb9ec8
2 changed files with 333 additions and 0 deletions

277
experiments/Untitled.ipynb Normal file
View File

@ -0,0 +1,277 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"%matplotlib inline\n",
"\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"from math import sin, cos, factorial\n",
"\n",
"\n",
"def f_sin(x, p):\n",
" if p == 0:\n",
" return sin(x)\n",
"\n",
" return x\n",
" if p % 4 == 1:\n",
" return cos(x)\n",
"\n",
" if p % 4 == 2:\n",
" return -sin(x)\n",
"\n",
" if p % 4 == 3:\n",
" return -cos(x)\n",
"\n",
" return sin(x)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def taylor(df, x, a, n):\n",
"\n",
" f = 0.0\n",
"\n",
" for i in range(n+1):\n",
" term = df(a, i) * (x - a)**i / factorial(i)\n",
" f += term\n",
"\n",
" return f"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": [
"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\n",
"AAAAAElFTkSuQmCC\n"
],
"text/plain": [
"<matplotlib.figure.Figure at 0x7ac3550>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"\n",
"from IPython.html.widgets import interact, interactive, fixed\n",
"from IPython.html.widgets import FloatSliderWidget as fWidget\n",
"from IPython.html.widgets import IntSliderWidget as iWidget\n",
"\n",
"x = 0.1\n",
"a = 0.8\n",
"n = 1\n",
"\n",
"def plot_data(a, n):\n",
" xs = np.linspace(-2, 2, 50)\n",
" ts = [taylor(f_sin, i, a, n) for i in xs]\n",
"\n",
" plt.plot(xs, np.sin(xs))\n",
" plt.plot(xs, ts)\n",
" plt.xlim(-2,2)\n",
" plt.ylim(-2,2)\n",
" plt.axvline(a)\n",
" plt.show()\n",
" \n",
"interact(plot_data, \n",
" a = fWidget(value=0.8, min=-1.9, max=1.9),\n",
" n = iWidget(value=2, min=1, max=8))"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.4.1"
}
},
"nbformat": 4,
"nbformat_minor": 0
}

56
experiments/taylor.py Normal file
View File

@ -0,0 +1,56 @@
# -*- coding: utf-8 -*-
"""
Created on Thu Mar 19 08:26:08 2015
@author: rlabbe
"""
import numpy as np
import matplotlib.pyplot as plt
from math import sin, cos, factorial
def df(x, p):
if p == 0:
return sin(x)
return x
if p % 4 == 1:
return cos(x)
if p % 4 == 2:
return -sin(x)
if p % 4 == 3:
return -cos(x)
return sin(x)
def taylor(df, x, a, n):
f = 0.0
for i in range(n+1):
term = df(a, i) * (x - a)**i / factorial(i)
f += term
return f
x = 0.1
a = 0.8
n = 1
plt.cla()
xs = np.linspace(-2, 2, 100)
ts = [taylor(df, i, a, n) for i in xs]
plt.plot(xs, np.sin(xs))
plt.plot(xs, ts)