[MATLAB]级数(symsum/taylor) |
您所在的位置:网站首页 › 无穷级数求解方法 › [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个取值: ExpansionPoint:指定展开点,对应值可以是标量或者是向量。未设置时,展开点为0.Order指定截断参数,对应值为一个正整数。未设置时,横断参数为6,即展开式的最高阶为5.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 >>运用泰勒级数,也可以像数字加减乘除一样,得出某点的函数值! |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |