泰勒展开基本原理,三角函数、指数函数的泰勒展开表达式

基本原理

  给定函数 f ( x ) f(x) f(x),用 n n n 阶多项式 p ( x ) p\left( x \right) p(x) x = x 0 x=x_0 x=x0 邻域内,拟合该函数 f ( x ) f(x) f(x)。将 p ( x ) p\left( x \right) p(x) 表示为一般形式:
p ( x ) = a 0 + a 1 ( x − x 0 ) + a 2 ( x − x 0 ) 2 + . . . + a n ( x − x 0 ) n p\left( x \right) = {a_0} + {a_1}\left( {x - {x_0}} \right) + {a_2}{\left( {x - {x_0}} \right)^2} + ... + {a_n}{\left( {x - {x_0}} \right)^n} p(x)=a0+a1(xx0)+a2(xx0)2+...+an(xx0)n

  设置 p ( x ) p\left( x \right) p(x) f ( x ) f\left( x \right) f(x)的前 n n n 阶导数在 x = x 0 x=x_0 x=x0 处相等,从而求解系数 a 0 , a 1 , a 2 , . . . , a n a_0,a_1,a_2,...,a_n a0,a1,a2,...,an,如下所示:
{ p ( x 0 ) = f ( x 0 ) p ′ ( x 0 ) = f ′ ( x 0 ) p ′ ′ ( x 0 ) = f ′ ′ ( x 0 ) ⋮ p ( n ) ( x 0 ) = f ( n ) ( x 0 ) → { a 0 = f ( x 0 ) a 1 = f ′ ( x 0 ) 1 ! a 2 = f ′ ′ ( x 0 ) 2 ! ⋮ a n = f ( n ) ( x 0 ) n ! \left\{ {\begin{array}{c} {p\left( {{x_0}} \right) = f\left( {{x_0}} \right)}\\ {p'\left( {{x_0}} \right) = f'\left( {{x_0}} \right)}\\ {p''\left( {{x_0}} \right) = f''\left( {{x_0}} \right)}\\ \vdots \\ {{p^{\left( n \right)}}\left( {{x_0}} \right) = {f^{\left( n \right)}}\left( {{x_0}} \right)} \end{array}} \right. \to \left\{ {\begin{array}{c} {{a_0} = f\left( {{x_0}} \right)}\\ {{a_1} = \frac{{f'\left( {{x_0}} \right)}}{{1!}}}\\ {{a_2} = \frac{{f''\left( {{x_0}} \right)}}{{2!}}}\\ \vdots \\ {{a_n} = \frac{{{f^{\left( n \right)}}\left( {{x_0}} \right)}}{{n!}}} \end{array}} \right. p(x0)=f(x0)p(x0)=f(x0)p′′(x0)=f′′(x0)p(n)(x0)=f(n)(x0) a0=f(x0)a1=1!f(x0)a2=2!f′′(x0)an=n!f(n)(x0)

  从而得到 f ( x ) f\left( x \right) f(x) x = x 0 x=x_0 x=x0处的 n n n阶泰勒展开表达式:
p ( x ) = f ( x 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 p\left( x \right) = f\left( {{x_0}} \right) + \frac{{f'\left( {{x_0}} \right)}}{{1!}}\left( {x - {x_0}} \right) + \frac{{f''\left( {{x_0}} \right)}}{{2!}}{\left( {x - {x_0}} \right)^2} + ... + \frac{{{f^{\left( n \right)}}\left( {{x_0}} \right)}}{{n!}}{\left( {x - {x_0}} \right)^n} p(x)=f(x0)+1!f(x0)(xx0)+2!f′′(x0)(xx0)2+...+n!f(n)(x0)(xx0)n

三角函数的泰勒展开表达式

  正弦函数 sin ⁡ ( x ) \sin(x) sin(x) x = 0 x = 0 x=0处的泰勒展开:
sin ⁡ ( x ) = x − x 3 3 ! + x 5 5 ! − x 7 7 ! + ⋯ \sin(x) = x - \frac{x^3}{3!} + \frac{x^5}{5!} - \frac{x^7}{7!} + \cdots sin(x)=x3!x3+5!x57!x7+

  余弦函数 cos ⁡ ( x ) \cos(x) cos(x) x = 0 x = 0 x=0处的泰勒展开:
cos ⁡ ( x ) = 1 − x 2 2 ! + x 4 4 ! − x 6 6 ! + ⋯ \cos(x) = 1 - \frac{x^2}{2!} + \frac{x^4}{4!} - \frac{x^6}{6!} + \cdots cos(x)=12!x2+4!x46!x6+

  正切函数 tan ⁡ ( x ) \tan(x) tan(x) x = 0 x = 0 x=0处的泰勒展开:
tan ⁡ ( x ) = x + x 3 3 + 2 x 5 15 + 17 x 7 315 + ⋯ \tan(x) = x + \frac{x^3}{3} + \frac{2x^5}{15} + \frac{17x^7}{315} + \cdots tan(x)=x+3x3+152x5+31517x7+

  以正弦为例,对比不同阶次泰勒展开的拟合效果,如下所示:
在这里插入图片描述
  三角函数泰勒展开效果对比,Matlab代码如下:

% MATLAB代码:比较不同阶数的泰勒多项式拟合效果
clc; clear; close all;

% 定义 x 范围
x = linspace(-pi, pi, 400);

% 原函数
f = @(x) sin(x);

% 泰勒展开的各阶数
n_values = [1, 3, 5, 7];

% 颜色设置
colors = {'r', 'g', 'b', 'm'};
figure;
hold on;

% 绘制原函数
plot(x, f(x), 'k', 'LineWidth', 2, 'DisplayName', 'sin(x)');

% 绘制不同阶数的泰勒多项式
for i = 1:length(n_values)
    n = n_values(i);
    p = taylor_series(f, n, 0);
    plot(x, p(x), colors{i}, 'LineWidth', 1, 'DisplayName', ['n = ' num2str(n)]);
end

% 图示设置
legend show;
title('Comparison of Taylor Series Approximation for sin(x)');
xlabel('x');
ylabel('y');
grid on;
hold off;

% 泰勒展开多项式生成函数
function p = taylor_series(f, n, x0)
    syms x;
    p_sym = taylor(f(x), x, 'Order', n+1);
    p = matlabFunction(p_sym);
end

指数函数的泰勒展开表达式

  指数函数 e x e^x ex x = x 0 x = x_0 x=x0 处的泰勒展开:
e x = e x 0 + e x 0 ( x − x 0 ) + e x 0 ( x − x 0 ) 2 2 ! + e x 0 ( x − x 0 ) 3 3 ! + ⋯ e^x = e^{x_0} + e^{x_0}(x - x_0) + \frac{e^{x_0}(x - x_0)^2}{2!} + \frac{e^{x_0}(x - x_0)^3}{3!} + \cdots ex=ex0+ex0(xx0)+2!ex0(xx0)2+3!ex0(xx0)3+

  特别地, e x e^x ex x = 0 x = 0 x=0处的泰勒展开:
e x = 1 + x + x 2 2 ! + x 3 3 ! + ⋯ e^x = 1 + x + \frac{x^2}{2!} + \frac{x^3}{3!} + \cdots ex=1+x+2!x2+3!x3+

  对比不同阶次泰勒展开的拟合效果,如下所示:
在这里插入图片描述
  指数函数泰勒展开效果对比,Matlab代码如下:

% MATLAB代码:比较不同阶数的泰勒多项式拟合效果
clc; clear; close all;

% 定义 x 范围
x = linspace(-pi, pi, 400);

% 原函数
f = @(x) exp(x);

% 泰勒展开的各阶数
n_values = [1, 2, 3, 4];

% 颜色设置
colors = {'r', 'g', 'b', 'm'};
figure;
hold on;

% 绘制原函数
plot(x, f(x), 'k', 'LineWidth', 2, 'DisplayName', 'exp(x)');

% 绘制不同阶数的泰勒多项式
for i = 1:length(n_values)
    n = n_values(i);
    p = taylor_series(f, n, 0);
    plot(x, p(x), colors{i}, 'LineWidth', 1, 'DisplayName', ['n = ' num2str(n)]);
end

% 图示设置
legend show;
title('Comparison of Taylor Series Approximation for exp(x)');
xlabel('x');
ylabel('y');
grid on;
hold off;

% 泰勒展开多项式生成函数
function p = taylor_series(f, n, x0)
    syms x;
    p_sym = taylor(f(x), x, 'Order', n+1);
    p = matlabFunction(p_sym);
end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值