利用MATLAB计算无限级数和泰勒级数

本篇内容主要对于利用MATLAB来计算无限级数和泰勒级数。

目录

1 无限级数

1.1 无限级数的定义:

1.2 symsum函数

1.3 利用MATLAB对于无限级数的示例进行求解

2 泰勒级数

2.1 泰勒级数的定义:

2.2 taylor函数

2.3 利用MATLAB对于无限级数的示例进行求解


1 无限级数

1.1 无限级数的定义:

无穷级数是研究有次序的可数或者无穷个数函数的和的收敛性及和的数值的方法,理论以数项级数为基础,数项级数有发散性和收敛性的区别。只有无穷级数收敛时有一个和,发散的无穷级数没有和。(本段定义引用自百度百科无限级数)

1.2 symsum函数

在MATLAB中提供了symsum函数用于计算无限级数,其中symsum函数的调用方式为:symsum(y,x,start,end),其中y是一个符号表达式,表示的是该无限级数的通项,x表示的是进行计算的自变量,而start表示的是开始项,end表示的是结束项。

下面对于symsum函数进行举例,例如利用MATLAB判断下面的级数和为多少:

\frac{1}{2}+\frac{1}{6}+\frac{1}{12}+...+\frac{1}{n(n+1)}

MATLAB代码如下所示:

syms n
s=symsum(1/(n*(n+1)),n,1,Inf)

运行结果如下所示:

s =
     1

利用MATLAB对于无限级数的计算可以极大地简化我们计算速度。例如,如果我们对于上述的无限级数进行计算的话,过程如下所示:

S_n=\sum_{k=1}^{n}=(1-\frac{1}{2})+(\frac{1}{2}-\frac{1}{3})+....+(\frac{1}{n}-\frac{1}{n+1})=1-\frac{1}{n+1}

\lim_{x \to \infty }S_n=1

计算结果与上面MATLAB计算所得结果相同,利用对于部分求无限级数的问题MATLAB可以一定程度上进行简化操作。

1.3 利用MATLAB对于无限级数的示例进行求解

下面对于一些无限级数的示例进行求解,例如:

\frac{1}{1\times 3}-\frac{1}{2\times 4}+\frac{1}{3\times 5}+...+\frac{(-1)^{n-1}}{n(n+2)}

\frac{1}{1\times 6}+\frac{1}{6\times 11}+...+\frac{1}{(5n-4)(5n+1)}

1+\frac{1}{4}+\frac{1}{9}+...+\frac{1}{n^2}

1-\frac{1}{4}+\frac{1}{9}+...+\frac{(-1)^{n+1}}{n^2}

 MATLAB代码如下所示:

syms n
x1=(-1^(n-1))/(n*(n+2))
x2=1/((5*n-4)*(5*n+1))
x3=1/(n^2)
x4=((-1)^(n+1))/(n^2)
y1=symsum(x1,n,1,Inf)
y2=symsum(x2,n,1,Inf)
y3=symsum(x3,n,1,Inf)
y4=symsum(x4,n,1,Inf)

运行结果如下所示:

y1 =
     -3/4
y2 =
     1/5
y3 =
     pi^2/6
y4 =
     pi^2/12

2 泰勒级数

2.1 泰勒级数的定义:

如果f(x)在x=x_0具有任意接的导数,则幂函数

\sum_{n=0}^{\infty }\frac{f^{(n)}(x_0)}{n!}(x-x_0)^n=f(x_0)+f'(x_0)(x-x_0)+\frac{f''(x_0)}{2!}(x-x_0)^2+...\frac{f^{(n)}(x_0)}{n!}(x-x_0)^{(n)}+...

称为f(x_0)x=x_0处的泰勒级数。

在泰勒级数中,取x_0=0,得到的级数:

\sum_{x\to 0 }^{\infty }\frac{f^{(n)}(0)}{n!}x^n

 称为麦克劳林级数。函数f(x)的麦克劳林级数是x的幂函数,那么这种展开是唯一的,且必然与f(x)的麦克劳林级数一致。

(上述定义引用自百度百科泰勒级数)

2.2 taylor函数

在MATLAB中提供了taylor函数对符号表达式求其泰勒级数的表达式,taylor函数的调用方式为:taylor(y,x,a,Name,Value),其中上式子中:

  • y表示的是待展开的函数表达式。
  • x表示自变量。
  • a表示的是函数y在x=a的展开值。
  • Name有三个取值,包括ExpansionPoint、Order以及OrderMode,而Value表示Name的取值,具体的细节如下所示:
  • Order:指定截断阶,所取的是一个正整数,未设置的时候,截断阶为6,表示的最高阶为5。
  • ExpansionPoint:指定展开点,系统的默认值为0。
  • OrderMode:指定展开式相对阶和绝对阶,有两个取值,分别为Absolute和Relative,如果未设置,那么系统默认为Absolute。

下面举例利用MATLAB中taylor函数对于符号表达式的泰勒级数进行计算。例如对于e^x在x=0处求其泰勒级数。

利用MATLAB进行求解如下所示:

syms x
y=exp(x);
taylor(y)

运行结果如下所示:

ans =
    x^5/120 + x^4/24 + x^3/6 + x^2/2 + x + 1

通过上述运行结果可以看出系统默认的输出结果的最高阶是5,并且默认情况下取变量x在x=0时的情况。

2.3 利用MATLAB对于无限级数的示例进行求解

利用MATLAB我们还可以对一些较为符号表达式进行求解。例如:

e^{-\frac{x^2}{2}}

\frac{1}{x-1}

sin(4x)

\frac{x}{2}cosx

MATLAB代码如下所示:

syms x
f1=exp(-x^2/2);
f2=1/(x-1);
f3=sin(4*x);
f4=x/2*cos(x);
y1=taylor(f1,x,0)
y2=taylor(f2,x,0,'Order',7)
y3=taylor(f3,x,0,'Order',6)
y4=taylor(f4,x,0)

运行结果如下所示:

y1 = 
    x^4/8 - x^2/2 + 1 
y2 = 
    - x^6 - x^5 - x^4 - x^3 - x^2 - x - 1 
y3 = 
    (128*x^5)/15 - (32*x^3)/3 + 4*x 
y4 = 
    x^5/48 - x^3/4 + x/2

你可能感兴趣的:(数学建模,matlab)