做的网站是怎么被收录,上海网络营销的企业,如何做网站seo韩小培,本地网站建设开发信息大全泰勒级数 (Taylor Series) 动画展示 包括源码
flyfish
泰勒级数#xff08;英语#xff1a;Taylor series#xff09;用无限项连加式 - 级数来表示一个函数#xff0c;这些相加的项由函数在某一点的导数求得。 定义了一个函数f(x)表示要近似的函数 sin ( x ) \sin(x) …泰勒级数 (Taylor Series) 动画展示 包括源码
flyfish
泰勒级数英语Taylor series用无限项连加式 - 级数来表示一个函数这些相加的项由函数在某一点的导数求得。 定义了一个函数f(x)表示要近似的函数 sin ( x ) \sin(x) sin(x)以及一个函数taylor_series(x, n)来计算泰勒级数的前n项。动画展示了泰勒级数如何逐步逼近 sin ( x ) \sin(x) sin(x)函数。这个例子展示了泰勒级数的逼近效果以及随着项数的增加近似效果变得更好。
)
级数 (Series)
定义
级数是数列求和的过程。具体来说给定一个数列 a 1 , a 2 , a 3 , … a_1, a_2, a_3, \ldots a1,a2,a3,…它的级数是所有项相加得到的总和 S a 1 a 2 a 3 ⋯ S a_1 a_2 a_3 \cdots Sa1a2a3⋯ 通常我们会使用符号表示 S ∑ n 1 ∞ a n S \sum_{n1}^{\infty} a_n Sn1∑∞an
收敛与发散
一个级数可以是收敛的也可以是发散的。如果级数的部分和 S n ∑ n 1 N a n S_n \sum_{n1}^{N} a_n Sn∑n1Nan 在 N N N 趋向于无穷大时趋向于某个有限的值 L L L则称该级数是收敛的记作 ∑ n 1 ∞ a n L \sum_{n1}^{\infty} a_n L n1∑∞anL 否则称该级数是发散的。
泰勒级数 (Taylor Series)
定义
泰勒级数是一种特殊的级数用于表示一个函数在某点附近的近似。对于一个在 x a x a xa 点具有 n n n 阶可导数的函数 f ( x ) f(x) f(x)它的泰勒级数可以表示为 f ( x ) f ( a ) f ′ ( a ) ( x − a ) f ′ ′ ( a ) 2 ! ( x − a ) 2 f ′ ′ ′ ( a ) 3 ! ( x − a ) 3 ⋯ f(x) f(a) f(a)(x-a) \frac{f(a)}{2!}(x-a)^2 \frac{f(a)}{3!}(x-a)^3 \cdots f(x)f(a)f′(a)(x−a)2!f′′(a)(x−a)23!f′′′(a)(x−a)3⋯ 一般地泰勒级数的形式为 f ( x ) ∑ n 0 ∞ f ( n ) ( a ) n ! ( x − a ) n f(x) \sum_{n0}^{\infty} \frac{f^{(n)}(a)}{n!} (x - a)^n f(x)n0∑∞n!f(n)(a)(x−a)n其中 f ( n ) ( a ) f^{(n)}(a) f(n)(a) 表示函数 f ( x ) f(x) f(x) 在 x a x a xa 处的第 n n n 阶导数 n ! n! n! 表示 n n n 的阶乘。
麦克劳林级数
泰勒级数在 a 0 a 0 a0 时的特殊形式称为麦克劳林级数Maclaurin Series f ( x ) f ( 0 ) f ′ ( 0 ) x f ′ ′ ( 0 ) 2 ! x 2 f ′ ′ ′ ( 0 ) 3 ! x 3 ⋯ f(x) f(0) f(0)x \frac{f(0)}{2!}x^2 \frac{f(0)}{3!}x^3 \cdots f(x)f(0)f′(0)x2!f′′(0)x23!f′′′(0)x3⋯ 即 f ( x ) ∑ n 0 ∞ f ( n ) ( 0 ) n ! x n f(x) \sum_{n0}^{\infty} \frac{f^{(n)}(0)}{n!} x^n f(x)n0∑∞n!f(n)(0)xn
例子
用无限项连加式——级数来表示一个函数这些相加的项由函数在某一点的导数求得。
1. 指数函数的泰勒级数
对于函数 e x e^x ex它在 x 0 x 0 x0 处的泰勒级数也是麦克劳林级数为 e x 1 x x 2 2 ! x 3 3 ! ⋯ ∑ n 0 ∞ x n n ! e^x 1 x \frac{x^2}{2!} \frac{x^3}{3!} \cdots \sum_{n0}^{\infty} \frac{x^n}{n!} ex1x2!x23!x3⋯n0∑∞n!xn
2. 正弦函数的泰勒级数
对于函数 sin ( x ) \sin(x) sin(x)它在 x 0 x 0 x0 处的泰勒级数麦克劳林级数为 sin ( x ) x − x 3 3 ! x 5 5 ! − ⋯ ∑ n 0 ∞ ( − 1 ) n x 2 n 1 ( 2 n 1 ) ! \sin(x) x - \frac{x^3}{3!} \frac{x^5}{5!} - \cdots \sum_{n0}^{\infty} \frac{(-1)^n x^{2n1}}{(2n1)!} sin(x)x−3!x35!x5−⋯n0∑∞(2n1)!(−1)nx2n1
前几项展开式为 sin ( x ) ≈ x − x 3 3 ! x 5 5 ! − x 7 7 ! ⋯ \sin(x) \approx x - \frac{x^3}{3!} \frac{x^5}{5!} - \frac{x^7}{7!} \cdots sin(x)≈x−3!x35!x5−7!x7⋯ 通过增加项数可以使泰勒多项式对原函数的近似更加精确。
动画源码
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation# 定义泰勒级数逼近的项数
N 10# 定义函数和泰勒级数的函数
def f(x):return np.sin(x)def taylor_series(x, n):result 0for i in range(n 1):result ((-1)**i * x**(2 * i 1)) / np.math.factorial(2 * i 1)return result# 创建图形和轴
fig, ax plt.subplots()
x np.linspace(-2 * np.pi, 2 * np.pi, 1000)
y f(x)
line, ax.plot(x, y, labelsin(x))
line_taylor, ax.plot([], [], labelTaylor Series)
ax.set_ylim(-2, 2)
ax.legend()# 初始化函数
def init():line_taylor.set_data([], [])return line_taylor,# 更新函数
def update(n):y_taylor taylor_series(x, n)line_taylor.set_data(x, y_taylor)ax.set_title(fTaylor Series Approximation with {n} terms)return line_taylor,# 创建动画
ani animation.FuncAnimation(fig, update, framesN, init_funcinit, blitTrue)# 保存动画为GIF
ani.save(taylor_series_approximation.gif, writerimagemagick)plt.show()应用
用泰勒级数在某一点上近似计算一个函数的值。 使用泰勒级数近似计算 e x e^x ex 在 x 0.1 x 0.1 x0.1 处的值 e x e^x ex 的泰勒级数在 x 0 x 0 x0 处展开是 e x 1 x x 2 2 ! x 3 3 ! x 4 4 ! ⋯ e^x 1 x \frac{x^2}{2!} \frac{x^3}{3!} \frac{x^4}{4!} \cdots ex1x2!x23!x34!x4⋯为了近似计算 e 0.1 e^{0.1} e0.1我们可以只取前几项进行计算。
第一步计算各项的值 x 0.1 x 0.1 x0.1 e x ≈ 1 x x 2 2 ! x 3 3 ! x 4 4 ! e^x \approx 1 x \frac{x^2}{2!} \frac{x^3}{3!} \frac{x^4}{4!} ex≈1x2!x23!x34!x4
第二步逐项计算 第一项 1 1 1 第二项 0.1 0.1 0.1 第三项 ( 0.1 ) 2 2 ! 0.01 2 0.005 \frac{(0.1)^2}{2!} \frac{0.01}{2} 0.005 2!(0.1)220.010.005 第四项 ( 0.1 ) 3 3 ! 0.001 6 ≈ 0.000167 \frac{(0.1)^3}{3!} \frac{0.001}{6} \approx 0.000167 3!(0.1)360.001≈0.000167 第五项 ( 0.1 ) 4 4 ! 0.0001 24 ≈ 0.00000417 \frac{(0.1)^4}{4!} \frac{0.0001}{24} \approx 0.00000417 4!(0.1)4240.0001≈0.00000417
第三步求和
将这些项相加 e 0.1 ≈ 1 0.1 0.005 0.000167 0.00000417 ≈ 1.10517117 e^{0.1} \approx 1 0.1 0.005 0.000167 0.00000417 \approx 1.10517117 e0.1≈10.10.0050.0001670.00000417≈1.10517117
第四步与实际值比较
用计算器计算 e 0.1 e^{0.1} e0.1 的实际值 e 0.1 ≈ 1.105170918 e^{0.1} \approx 1.105170918 e0.1≈1.105170918我们看到使用泰勒级数前几项的近似值 1.10517117 1.10517117 1.10517117 与实际值 1.105170918 1.105170918 1.105170918 非常接近误差在 1 0 − 6 10^{-6} 10−6 量级上。 这个例子展示了如何使用泰勒级数在某一点上近似计算一个函数的值。通过逐项计算并求和我们可以得到一个非常接近实际值的近似结果。 绘制不同项数的泰勒级数曲线比较近似值和实际值
import numpy as np
import matplotlib.pyplot as plt# 定义 e^x 的泰勒级数近似函数
def taylor_series_exp(x, n_terms):taylor_sum 0for n in range(n_terms):taylor_sum (x**n) / np.math.factorial(n)return taylor_sum# 定义实际的 e^x 函数
def actual_exp(x):return np.exp(x)# x 的范围
x_values np.linspace(-1, 1, 400)# 不同项数的泰勒级数近似
terms_list [1, 2, 3, 5, 10] # 泰勒级数的项数列表# 创建图形
plt.figure(figsize(10, 6))# 绘制实际的 e^x 曲线
plt.plot(x_values, actual_exp(x_values), labelActual $e^x$, colorblue)# 绘制不同项数的泰勒级数近似曲线
colors [red, orange, green, purple, brown]
for i, n_terms in enumerate(terms_list):taylor_values [taylor_series_exp(x, n_terms) for x in x_values]plt.plot(x_values, taylor_values, labelfTaylor Series (n{n_terms}), colorcolors[i], linestyle--)# 标注在 x0.1 处的点
plt.scatter(0.1, taylor_series_exp(0.1, 5), colorgreen, zorder5, labelApproximation at x0.1)
plt.scatter(0.1, actual_exp(0.1), colorpurple, zorder5, labelActual at x0.1)# 标注和标签
plt.xlabel(x)
plt.ylabel(y)
plt.title(Taylor Series Approximation of $e^x$)
plt.legend()
plt.grid(True)
plt.axhline(0, colorblack,linewidth0.5)
plt.axvline(0, colorblack,linewidth0.5)
plt.show()# 打印在 x0.1 处的近似值和实际值
approx_value taylor_series_exp(0.1, 5)
actual_value actual_exp(0.1)
print(fTaylor Series Approximation at x0.1 with n5: {approx_value})
print(fActual value at x0.1: {actual_value})数学思想的演变
古希腊时期
芝诺悖论古希腊哲学家芝诺提出了著名的芝诺悖论探讨了如何利用无穷级数求和来得到有限结果的问题。芝诺的结论是无法完成的这在当时引发了广泛的讨论和争论。
亚里士多德亚里士多德对芝诺悖论进行了哲学上的反驳但并没有解决数学上的问题。
德谟克利特和阿基米德德谟克利特和后来著名的数学家阿基米德进一步研究了无穷级数问题。阿基米德利用穷竭法逐步细分无穷级数从而得到了有限的结果。这种方法为后来的数学发展奠定了基础。
中国古代
刘徽几个世纪之后中国数学家刘徽也独立提出了类似于穷竭法的方法用于解决类似的问题。他的工作与阿基米德的穷竭法有很多相似之处。
中世纪
马德哈瓦进入14世纪印度数学家马德哈瓦是最早使用泰勒级数及相关方法的数学家之一。尽管他的数学著作没有流传下来但后来印度数学家的著作表明他发现了一些特殊的泰勒级数这些级数包括正弦、余弦、正切、和反正切三角函数等。喀拉拉学派在他的基础上进行了延伸和合理逼近这些工作一直持续到16世纪。
17世纪
詹姆斯·格雷果里在17世纪詹姆斯·格雷果里继续这方面的研究并发表了若干麦克劳林级数的相关工作。
18世纪
布鲁克·泰勒直到1715年布鲁克·泰勒提出了一个通用的方法来构建适用于所有函数的级数这就是后来的泰勒级数。泰勒的方法能够用于构建各种函数的无穷级数表示使得这一概念成为数学分析中的重要工具。
科林·麦克劳林麦克劳林级数是泰勒级数的特例是由爱丁堡大学的科林·麦克劳林教授在18世纪发表的并以其名字命名。
泰勒级数展开
泰勒级数展开与直线方程的关系
泰勒级数是基于函数在某一点 x 0 x_0 x0 处的所有阶导数来展开的。公式为 f ( x ) ≈ f ( x 0 ) f ′ ( x 0 ) ( x − x 0 ) 1 ! f ′ ′ ( x 0 ) ( x − x 0 ) 2 2 ! ⋯ f ( n ) ( x 0 ) ( x − x 0 ) n n ! f(x) \approx f(x_0) f(x_0) \frac{(x - x_0)}{1!} f(x_0) \frac{(x - x_0)^2}{2!} \cdots f^{(n)}(x_0) \frac{(x - x_0)^n}{n!} f(x)≈f(x0)f′(x0)1!(x−x0)f′′(x0)2!(x−x0)2⋯f(n)(x0)n!(x−x0)n当 n n n 趋于无穷时该级数可以等于函数本身 f ( x ) f ( x 0 ) f ′ ( x 0 ) ( x − x 0 ) f ′ ′ ( x 0 ) 2 ! ( x − x 0 ) 2 ⋯ f ( n ) ( x 0 ) n ! ( x − x 0 ) n ⋯ f(x) f(x_0) f(x_0) (x - x_0) \frac{f(x_0)}{2!} (x - x_0)^2 \cdots \frac{f^{(n)}(x_0)}{n!} (x - x_0)^n \cdots f(x)f(x0)f′(x0)(x−x0)2!f′′(x0)(x−x0)2⋯n!f(n)(x0)(x−x0)n⋯
一阶展开线性近似
如果只考虑泰勒级数的前两项得到函数在 x 0 x_0 x0 处的线性近似也叫做一阶泰勒展开 f ( x ) ≈ f ( x 0 ) f ′ ( x 0 ) ( x − x 0 ) f(x) \approx f(x_0) f(x_0) (x - x_0) f(x)≈f(x0)f′(x0)(x−x0) 这是因为所有高于一次项的项都被忽略了。
直线方程的推导
一阶泰勒展开的形式与直线方程形式一致。可以将 f ( x ) ≈ f ( x 0 ) f ′ ( x 0 ) ( x − x 0 ) f(x) \approx f(x_0) f(x_0) (x - x_0) f(x)≈f(x0)f′(x0)(x−x0) 写成直线方程 f ( x ) f ( x 0 ) f ′ ( x 0 ) ( x − x 0 ) f(x) f(x_0) f(x_0) (x - x_0) f(x)f(x0)f′(x0)(x−x0)如果令 f ( x 0 ) k 1 f(x_0) k_1 f(x0)k1 f ′ ( x 0 ) k 2 f(x_0) k_2 f′(x0)k2那么上述方程变为 f ( x ) k 1 k 2 ( x − x 0 ) f(x) k_1 k_2 (x - x_0) f(x)k1k2(x−x0)这就是直线的方程形式其中 k 1 k_1 k1 是直线在 x x 0 x x_0 xx0 处的函数值即截距 k 2 k_2 k2 是直线的斜率即导数。线性近似的应用 x \sqrt{x} x 的例子找到 f ( x ) x f(x) \sqrt{x} f(x)x 在 x 9 x 9 x9 处的线性近似并估算 9.1 \sqrt{9.1} 9.1 计算 f ( 9 ) f(9) f(9) f ( 9 ) 9 3 f(9) \sqrt{9} 3 f(9)9 3 计算 f ′ ( x ) f(x) f′(x) 并在 x 9 x 9 x9 处求导 f ′ ( x ) 1 2 x f(x) \frac{1}{2\sqrt{x}} f′(x)2x 1 f ′ ( 9 ) 1 2 9 1 6 f(9) \frac{1}{2\sqrt{9}} \frac{1}{6} f′(9)29 161 代入线性近似公式 L ( x ) f ( 9 ) f ′ ( 9 ) ( x − 9 ) L(x) f(9) f(9)(x - 9) L(x)f(9)f′(9)(x−9) L ( x ) 3 1 6 ( x − 9 ) L(x) 3 \frac{1}{6}(x - 9) L(x)361(x−9) 估算 9.1 \sqrt{9.1} 9.1 L ( 9.1 ) 3 1 6 ( 9.1 − 9 ) L(9.1) 3 \frac{1}{6}(9.1 - 9) L(9.1)361(9.1−9) L ( 9.1 ) 3 1 6 ( 0.1 ) L(9.1) 3 \frac{1}{6}(0.1) L(9.1)361(0.1) L ( 9.1 ) 3 0.0167 ≈ 3.0167 L(9.1) 3 0.0167 \approx 3.0167 L(9.1)30.0167≈3.0167 所以 9.1 ≈ 3.0167 \sqrt{9.1} \approx 3.0167 9.1 ≈3.0167。 通过泰勒级数的一阶展开可以得到函数在某一点附近的线性近似。 另一种描述方式 y m x b y mx b ymxb其中 m m m 是斜率 b b b 是截距。对于一阶泰勒展开可以将其写成类似直线方程的形式 y f ( x ) y f(x) yf(x) m f ′ ( x 0 ) m f(x_0) mf′(x0) b f ( x 0 ) − f ′ ( x 0 ) x 0 b f(x_0) - f(x_0)x_0 bf(x0)−f′(x0)x0实际上一阶泰勒展开的形式 f ( x ) ≈ f ( x 0 ) f ′ ( x 0 ) ( x − x 0 ) f(x) \approx f(x_0) f(x_0)(x - x_0) f(x)≈f(x0)f′(x0)(x−x0) 正是线性函数的形式其中 f ( x 0 ) f(x_0) f(x0) 表示在 x x 0 x x_0 xx0 处的函数值是线性函数的截距 f ′ ( x 0 ) f(x_0) f′(x0) 表示在 x x 0 x x_0 xx0 处的导数是线性函数的斜率。