栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

2022年5月22日-Taylor级数的python实验

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2022年5月22日-Taylor级数的python实验

Taylor级数的python实验 引言

众所周知,对于任意一个函数,我们可以选用一组基函数拟合这个函数。什么,你不知道!好吧,没有关系,这是一个很简单的东西,相信在我的解释下,你很快就懂了!

泰勒级数

高等数学里我们学习了一个叫Taylor公式的玩意,即:
f ( x ) = f ( x 0 ) 0 ! + f ′ ( x 0 ) 1 ! ( x − x 0 ) + f ′ ′ ( x 0 ) 2 ! ( x − x 0 ) 2 + . . . + f ( n ) ( x 0 ) n ! ( x − x 0 ) n + R n ( x ) f(x)=frac{f({{x}_{0}})}{0!}+frac{{{f}^{'}}({{x}_{0}})}{1!}(x-{{x}_{0}})+frac{{{f}^{''}}({{x}_{0}})}{2!}{{(x-{{x}_{0}})}^{2}}+...+frac{{{f}^{(n)}}({{x}_{0}})}{n!}{{(x-{{x}_{0}})}^{n}}+{{R}_{n}}(x) f(x)=0!f(x0​)​+1!f′(x0​)​(x−x0​)+2!f′′(x0​)​(x−x0​)2+...+n!f(n)(x0​)​(x−x0​)n+Rn​(x)
这里我们从选择 x 0 = 0 x_0 = 0 x0​=0来拟合任意一个函数,这样我们的公式就变成麦克劳林公式。

python实验

我们就用上面的泰勒级数里的每一项作为基来拟合 s i n ( x ) sin(x) sin(x)好了,看一下拟合的效果。首先上代码:

import torch
from matplotlib import pyplot as plt
import math
from matplotlib_inline import backend_inline

X = torch.arange(-20, 20, 0.1, dtype=torch.float64)
Y_sin = torch.sin(X)
def sin_taylor(X):
    m = 10 # 指Tyle公式的阶数
    Y = torch.zeros_like(X)
    for i in range(1, m + 1):
        Y += (-1)**(i - 1) / math.factorial((2 * i - 1)) * torch.pow(X, 2 * i - 1)
    return Y
Y_taylor = sin_taylor(X)
 
f = plt.figure(figsize=(10, 3))
backend_inline.set_matplotlib_formats('svg')
axes = f.gca()
axes.set_ylim(-2, 2)
axes.plot(X, Y_sin, 'r-', X, Y_taylor, 'b--')

注意我们 s i n _ t a y l o r sin_taylor sin_taylor函数里的 m m m用来指示我们用多少阶的泰勒来拟合,即泰勒公式多项式的个数。这个多项式的个数决定了我们拟合的精确度,让我们改变阶数看一下实际效果就清楚了。





很明显因为我们选用 x 0 = 0 x_0 = 0 x0​=0来拟合 s i n ( x ) sin(x) sin(x),所以在 0 0 0附近曲线基本上一致,但离远了就不行了。不过随着阶数(order)的提高,这个一致的范围会变大。可以猜想如果阶数趋于无穷的话,泰勒公式是可以完全拟合任意一个函数的。

向量空间

学过线性代数的我们肯定知道什么是向量空间,那一个函数能否看成一个向量能?很显然是可以的,例如 s i n ( x ) sin(x) sin(x)可以看成 [ s i n ( x 1 ) , s i n ( x 2 ) , s i n ( x 3 ) . . . s i n ( x n ) ] [sin(x_1), sin(x_2), sin(x_3)...sin(x_n)] [sin(x1​),sin(x2​),sin(x3​)...sin(xn​)]其中: n = + ∞ n = +infty n=+∞,这是一个无穷维的向量。那么这个向量肯定存在于一个无穷维的线性空间中,那么这个线性空间对应的基应该也有无穷个才对。
最后,很自然的如果要拟合一个函数的话就需要无穷多个基才行,这就解释了为什么泰勒公式上面的实验现象

后记

CSDN just a pice of shit,还不支持 s v g svg svg╰(‵□′)╯

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/923215.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号