主要内容

taylor

泰勒级数

说明

T = taylor(f,var) 使用 f 在点 var = 0 处的泰勒级数展开(展开至五阶)来逼近 f。如果您不指定 var,则 taylor 会使用由 symvar(f,1) 确定的默认变量。

示例

T = taylor(f,var,a) 使用 f 在点 var = a 处的泰勒级数展开来逼近 f

示例

除了上述语法中的任意输入参量组合之外,T = taylor(___,Name=Value) 还使用一个或多个名称-值参量来指定选项。例如,您可以指定泰勒级数展开的展开点、截断阶数或阶数模式。

示例

示例

全部折叠

求指数函数、正弦函数和余弦函数的麦克劳林级数展开(展开至五阶)。

syms x
T1 = taylor(exp(x))
T1 = 

x5120+x424+x36+x22+x+1

T2 = taylor(sin(x))
T2 = 

x5120-x36+x

T3 = taylor(cos(x))
T3 = 

x424-x22+1

您可以使用 sympref 函数来修改符号多项式的输出顺序。按升序重新显示多项式。

sympref("PolynomialDisplayStyle","ascend");
T1
T1 = 

1+x+x22+x36+x424+x5120

T2
T2 = 

x-x36+x5120

T3
T3 = 

1-x22+x424

使用 sympref 设置的显示格式会在当前和以后的 MATLAB® 会话中持续有效。通过指定 "default" 选项恢复默认值。

sympref("default");

求这些函数在 x=1 处的泰勒级数展开。默认展开点为 0。要指定其他展开点,请使用 ExpansionPoint

syms x
T = taylor(log(x),x,ExpansionPoint=1)
T = 

x-x-122+x-133-x-144+x-155-1

或者,将展开点指定为 taylor 的第三个参量。

T = taylor(acot(x),x,1)
T = 

π4-x2+x-124-x-1312+x-1540+12

f = sin(x)/x 的麦克劳林级数展开。默认截断阶数为 6。此表达式的泰勒级数逼近没有五次项,因此 taylor 使用四次多项式逼近此表达式。

syms x
f = sin(x)/x;
T6 = taylor(f,x);

使用 Order 控制截断阶数。例如,用 7 阶和 9 阶逼近该同一表达式。

T8 = taylor(f,x,Order=8);
T10 = taylor(f,x,Order=10);

绘制原始表达式 f 及其逼近 T6T8T10。注意逼近的准确度如何依赖于截断阶数。

fplot([T6 T8 T10 f])
xlim([-4 4])
grid on
legend("approximation of sin(x)/x with error O(x^6)", ...
       "approximation of sin(x)/x with error O(x^8)", ...
       "approximation of sin(x)/x with error O(x^{10})", ...
       "sin(x)/x",Location="Best")
title("Taylor Series Expansion")

Figure contains an axes object. The axes object with title Taylor Series Expansion contains 4 objects of type functionline. These objects represent approximation of sin(x)/x with error O(x^6), approximation of sin(x)/x with error O(x^8), approximation of sin(x)/x with error O(x^{10}), sin(x)/x.

求以下表达式的泰勒级数展开。默认情况下,taylor 使用绝对阶数,即计算所得级数的截断阶数。

syms x
T = taylor(1/exp(x) - exp(x) + 2*x,x,Order=5)
T = 

-x33

使用 OrderMode 求具有相对截断阶数的泰勒级数展开。对于某些表达式,相对截断阶数可提供更准确的逼近。

T = taylor(1/exp(x) - exp(x) + 2*x,x,Order=5,OrderMode="relative")
T = 

-x72520-x560-x33

求以下多元表达式的麦克劳林级数展开。如果您不指定变量向量,taylor 会将 f 视为包含一个自变量的函数。

syms x y z
f = sin(x) + cos(y) + exp(z);
T = taylor(f)
T = 

x5120-x36+x+cos(y)+ez

通过指定变量向量来求多元麦克劳林级数展开。

syms x y z
f = sin(x) + cos(y) + exp(z);
T = taylor(f,[x,y,z])
T = 

x5120-x36+x+y424-y22+z5120+z424+z36+z22+z+2

您可以使用 sympref 函数来修改符号多项式的输出顺序。按升序重新显示多项式。

sympref("PolynomialDisplayStyle","ascend");
T
T = 

2+z+z22+z36+z424+z5120-y22+y424+x-x36+x5120

使用 sympref 设置的显示格式会在当前和以后的 MATLAB 会话中持续有效。通过指定 "default" 选项恢复默认值。

sympref("default");

通过同时指定变量向量和定义展开点的值向量,求多元泰勒级数展开。

syms x y
f = y*exp(x - 1) - x*log(y);
T = taylor(f,[x y],[1 1],Order=3)
T = 

x+x-122+y-122

如果您将展开点指定为标量 ataylor 会将该标量转换为与变量向量长度相同的向量。展开向量的所有元素都等于 a

T = taylor(f,[x y],1,Order=3)
T = 

x+x-122+y-122

求在使用泰勒级数展开逼近函数 f(x)=log(x+1) 时的误差估计。此处,假设计算在展开点 a=0 处的 7 阶泰勒逼近(截断阶数 n=8)。

泰勒逼近的误差(余项)由拉格朗日形式给出:

Rn-1(x)=fn(c)n!(x-a)n.

误差估计的上界可通过求正实数 M 来计算,使得所有介于 ax 之间的 c 均满足 |fn(c)|M

通过将 Order 指定为 8,求函数 f(x)=log(x+1) 的 7 阶泰勒级数展开。

syms x
f = log(x+1)
f = log(x+1)
T = taylor(f,Order=8)
T = 

x77-x66+x55-x44+x33-x22+x

为了估计泰勒逼近中的误差,首先计算项 f8(c)

syms c
fn(c) = subs(diff(f,8),x,c)
fn(c) = 

-5040c+18

对于正的 x 值,可以通过使用关系 |f8(c)|5040 来计算误差估计的上界(因为 c 必须是介于 0 和正数 x 之间的正值)。然后,使用拉格朗日形式 R7(x) 和关系 |f8(c)|5040 求误差估计的上界 Rupper(x)

Rupper(x) = 5040*x^8/factorial(8)
Rupper(x) = 

x88

计算点 x=0.5 处的泰勒级数展开。求泰勒逼近中误差估计的上界。

Teval = subs(T,x,0.5)
Teval = 

9092240

Rmax = double(Rupper(0.5))
Rmax = 
4.8828e-04

为进行比较,计算 x=0.5 处的精确函数值,并求泰勒逼近中的余项。

feval = subs(f,x,0.5)
feval = 

log(32)

R = double(abs(feval-Teval))
R = 
3.3846e-04

输入参数

全部折叠

要逼近的输入,指定为符号表达式或符号函数。也可以是由符号表达式或符号函数组成的向量、矩阵或多维数组。

展开变量,指定为符号变量。如果您不指定 var,则 taylor 会使用由 symvar(f,1) 确定的默认变量。

展开点,指定为数字、符号数、符号变量、符号函数或符号表达式。展开点不能依赖于展开变量。您也可以将展开点指定为名称-值参量。如果以两种方式同时指定展开点,则名称-值参量优先。

名称-值参数

全部折叠

将可选参量对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但对各个参量对组的顺序没有要求。

示例: taylor(log(x),x,ExpansionPoint=1,Order=9)

如果使用的是 R2021a 之前的版本,请使用逗号分隔每个名称和值,并用引号将 Name 引起来。

展开点,指定为数字、符号数、符号变量、符号函数或符号表达式。展开点不能依赖于展开变量。您也可以使用输入参量 a 来指定展开点。如果以两种方式同时指定展开点,则名称-值参量优先。

泰勒级数展开的截断阶数,指定为正整数或符号正整数。taylor 计算阶数为 n - 1 的泰勒级数逼近。截断阶数 nO 项中的指数:O(varn)

阶数模式指示符,指定为 "absolute""relative"。该指示符指定计算泰勒多项式逼近时使用绝对阶数还是相对阶数。

绝对阶数是指计算所得级数的截断阶数。相对阶数 n 是指计算所得级数中 var 的指数范围从首项阶数 m 到最高指数 m + n - 1。其中 m + nO 项中 var 的指数:O(varm + n)

详细信息

全部折叠

提示

  • 如果您同时使用第三个参量 aExpansionPoint 来指定展开点,则以 ExpansionPoint 指定的值为准。

  • 如果 var 是向量,则展开点 a 必须是标量或与 var 长度相同的向量。如果 var 是向量而 a 是标量,则将 a 扩展为与 var 长度相同的向量,且所有元素均等于 a

  • 如果展开点为无穷大或负无穷大,则 taylor 会计算洛朗级数展开,即关于 1/var 的幂级数。

  • 您可以使用 sympref 函数来修改符号多项式的输出顺序。

  • 如果 taylor 无法求泰勒级数展开,可使用 series 求更通用的皮瑟级数展开。

版本历史记录

在 R2006a 之前推出