[MATLAB]级数(symsum/taylor)

本实验取材于mooc中南大学的《科学计算与MATLAB语言》。

  • 级数求和
  • 泰勒级数

级数求和

求无穷级数的和需要符号表达式求和函数symsum(),其调用格式为:

symsum(s,v,n,m)

其中,s表示一个级数的通项,是一个符号表达式。v是符号变量,v省略时使用系统的默认变量。n和m是求和变量v的初值和末值。

例题级数求和

在这里插入图片描述
分析:第一项有限和,找到通项1/n^2,第二题和第三题都已经给出通项,因此直接可以按照symsum函数进行求结果。

>> syms n;
>> s1=symsum(n^2,1,100)
 
s1 =
 
338350
 
 
>> s2=symsum((-1)^(n-1)/n,1,inf)
 
s2 =
 
log(2)
 
 
>> s3=symsum((-1)^(n-1)/(2*n-1),n,1,inf)
 
s3 =
 
1/4*pi
 
 
>> eval(s3)*4

ans =

    3.1416

>> 

第一题代码,我不做介绍了,第二题代码是个符号表达式,所以没舍入小数,第三题是个pi/4,学过数学分析的同学应该清楚了解,在做泰勒展开的时候,接触过这个无穷级数,所以再对符号表达式的时候,我再把它转换为pi的值,matlab计算3.1416

银行利率计算问题

在这里插入图片描述
接触到题目,需要慌张一下。先把变量设出来。
假设存款(初始总金额)为p,年利率为r,计息期数为k。
第一期后总金额为p
(1+r/k).
第二期后总金额为p*(1+r/k)^2.
第三期后总金额为p*(1+r/k)^3.
依次类推,第k期后总金额为p*(1+r/k)^k.

虽然是无穷级数的公式,大家也知道,有穷是无穷的一种特殊情况,所以本题中,确立出有限的情况,把n和m改成相同的值。

symsum(s,v,n,m)

代码完整应该是:

>> syms k r;
>> p2 = symsum(50000*(1+0.045/k)^k,k,2,2);
>> eval(p2)

ans =

  5.2275e+004

>> p4 = symsum(50000*(1+0.045/k)^k,k,4,4);
>> eval(p4)

ans =

  5.2288e+004

>> p12 = symsum(50000*(1+0.045/k)^k,k,12,12);
>> eval(p12)

ans =

  5.2297e+004

>> limit((1+r/k)^k,k,inf)
 
ans =
 
exp(r)
 
 
>> 50000*exp(0.045)

ans =

  5.2301e+004

在级数的计算中,因为小数都表示为有理分数的形式,容易导致分子或分母出现极大整数从而无法计算的情况。比如下面的例子
计算1/n^2,分别测试有限项和无限项。

>> syms n;
>> s=symsum(1/n^2,n,1,inf)
 
s =
 
1/6*pi^2
 
 
>> s1=symsum(1/n^2,n,1,500)
 
s1 =
 
40989667509417020364501093692502176755794024501985947368498081469230342364939347555775843536098002493121731261331858135756475744199062009423381225462568225215022718381129005000153848871666523784518165560401243113429779402097946238148872369449334015612850425653111305343965419490889763150366838155123100493039642129524497054560780313022903733433651913622499306932093491632638005625140236671330899848602520081053712248084984597965892703/24949033848478399732316621994367635898375217667514634128765175039823065702657515118886782955481397685044789502582244491488082811734990406142410714839994352240346799672671096653373050370003043766917200446990341656932050870930805694029352425457933927448095391600589858411116463642340462127248532668094699055899615372607856782889973726927714049952209285000598428267546847008420299147556794800616080865314955961842908939704768451993600000
 
 
>> eval(s1)

ans =

   NaN

想想也是头的事情,想到这里,就需要引用泰勒级数这个概念了。

泰勒级数

MATLAB提供了taylor()函数将函数展开为幂级数。
其调用格式为:

taylor(f,v,a,Name,Value)

该函数将函数f按变量v在a点展开为泰勒级数,v省略时按默认规则确定变量,a的默认值是0,Name和Value为选项设置,经常成对使用,前者为选项名,后者为该选项的值。
Name有3个取值:

  1. ExpansionPoint:指定展开点,对应值可以是标量或者是向量。未设置时,展开点为0.
  2. Order指定截断参数,对应值为一个正整数。未设置时,横断参数为6,即展开式的最高阶为5.
  3. OrderMode:指定展开式采用绝对阶或相对阶,对应值为’Absolute’或’Relative’,未设置时取’Absolute’

泰勒级数例子

在这里插入图片描述
按照taylor函数调用方式可以得到下面代码:

>> syms x;
>> f=(1+x+x^2)/(1-x+x^2);
>> taylor(f,x,1,'Order',6)

总结:在无穷级数的时候symssum,因为过大或者可能趋于0,我们学习了泰勒级数,因此掌握这两种,应对级数环节,应该是药到病除。

>> syms x;
>> f=taylor(cos(x),x,pi)
 
f =
 
-1+1/2*(x-pi)^2-1/24*(x-pi)^4
 
 
>> x=3;
>> eval(f)

ans =

   -0.9900

>> cos(3)

ans =

   -0.9900

>> 

运用泰勒级数,也可以像数字加减乘除一样,得出某点的函数值!

  • 14
    点赞
  • 77
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值