Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

09.第九章用Matlab求二元泰勒展开式

6,026 views

Published on

Published in: Technology, Sports
  • If you have any problems with writing, feel free to ask our writers for help! ⇒ HelpWriting.net ⇐ is ready to help with any kind of academic writing!
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Dating direct: ❶❶❶ http://bit.ly/39pMlLF ❶❶❶
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Follow the link, new dating source: ♥♥♥ http://bit.ly/39pMlLF ♥♥♥
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

09.第九章用Matlab求二元泰勒展开式

  1. 1. 第 9章 用 MATLAB 求二元泰勒展开式 1 级数求和 命令 S=symsum(u,t,a,b) b 的功能是计算级数和 S= ∑ u 。其中 u 是包含符号变量 t 的表达式,是待求和级数的通项。当 t=a u 的表达式中只含一个变量时,参数 t 可省略。 例 9.11.1 判断下列级数是否收敛,如收敛则求其和: ∞ ∞ ∞ 1 1 x2 ∑ n , ∑ n2 , ∑ (1 + x 2 )n n =1 n =1 n =0 解 创建符号变量 n 和 x,用 symsum 命令计算各级数的和: syms n x ↙ symsum(1/n,1,inf) ↙ ans= inf ∞ 1 知级数 ∑ 发散至无穷大。 n n =1 symsum(1/n^2,1,inf) ↙ ans= 1/6*pi^2 ∞ 1 π2 知级数 ∑ 2 收敛,且其和为 n =1 n 6 ∞ x2 对级数 ∑ 2 n ,由于其通项中包含两个变量 x 和 n,故使用 symsum 命令时须指定求 n = 0 (1 + x ) 和变量是 n: un=x^2/(1+x^2)^n; ↙ symsun(un,n,0,inf) ↙ ans= 1+x^2 得和函数为 1+x^2 对有些级数, symsum 命令不能求得其和,从而也无法得知其敛散性。此时,可使用 MATLAB 的数值计算功能进行处理。 ∞ 1 例 9.11.2 试求级数 ∑ ln(1 + 2 ) 的和 n n =1 解 用 symsum 命令求解: syms n ↙ symsum(log(1+1/n^2),1,inf) ↙
  2. 2. ans= sum(log(1+1/n^2),n=1..inf) 此 结 果 表 示 symsum 命 令 不 能 求 得 其 和 。 我 们 转 而 采 用 数 值 方 法 计 算 部 分 和 n 1 S n = ∑ ln(1 + ) m k =1 k 2 。将下面的程序存入一个 文件中: clear all n=9000; %部分和的项数 Sn=0; for k=1:n Sn= Sn+log(1+1/k^2); end fprintf(‘Sn=%f,(n=%d)’, Sn,n) 执行该程序,显示结果为 Sn=1.301735,(n=9000) 再对程序中的变量 n 分别赋值 n=9000 ,n=900000 ,n=9000000 并执行程序,得计算结果为: Sn=1.301835,( n=9000 ) Sn=1.301845,( n=900000) Sn=1.301846,( n=9000000) 由此看出,随着 n 增大,Sn 趋于 1.30185。故知该级数收敛,且其和约为 1.30185 2.泰勒级数展开 泰勒级数展开命令是 taylor,其调用格式为 r=taylor(f,n,x,a). 该命令的功能是将符号函数 f 展开成(x-a)的 n-1 阶泰勒多项式。其中 x 是待展开的符号变 量,其缺省值为最接近 x 的字母。n 的缺省值为 n=6,a 的缺省值为 a=0。 x 例 9.11.3 将 分别展开为 x 和 x-1 的幂级数。 1 + x2 解 首先创建符号变量 x 及函数 f: syms x ↙ f=x/sqrt(1+x^2); ↙ 计算关于 x 展式的前 8 项: taylor(f,8) ans= x-1/2*x^3+3/8*x^5-5/16*x^7 计算关于 x-1 展式的前 3 项: taylor(f,3,x,1) ↙ ans= 1/2*2^(1/2)+1/4*2^(1/2)*(x-1)-16/3*2^(1/2)*(x-1)/2 x 2 2 3 2 即 = + ( x − 1) − ( x − 1) 2 + ... 。 1+ x 2 2 4 16 3.傅里叶级数展开
  3. 3. 到目前为止,MATLAB 中还没有专门计算傅里叶展开式的命令。但根据尤拉-傅里叶公式, 用 int 命令很容易算出傅里叶级数的系数: syms n x a0=int(f,-pi,pi)/pi an= int(f*cos(n*x),-pi,pi)/pi bn=int(f*sin(n*x),-pi,pi)/pi 其中 f 为含符号变量 x 的待展开函数。 类似可得,对周期为 2l 的函数,计算其傅里叶系数的命令为 a0=int(f,-l,l)/l an= int(f*cos(n*pi*x/l),-l,l)/l bn=int(f*sin(n*pi*x/l),-l,l)/l. 0, −2 ≤ x < 0, 例 9.11.4 用 MATLAB 求 f ( x) = k , 0 ≤ x < 2, (常数k ≠ 0) 的傅里叶展开式。  解 syms k n x ↙ a0=int(k,x,0,2) ↙ a0= k an=int(k*cos(n*pi*x/2),x,0,2)/2 ↙ an= sin(n*pi)*k/n/pi bn= int(k*sin (n*pi*x/2),x,0,2)/2 ↙ bn= -k*(cos(n*pi)-1)/n/pi n 注意 MATLAB 不能把 sin(n*pi)化为 0,也不能把 cos(n*pi)化为(-1) 例 9.11.5 本例中的程序演示了用正弦波迭加逼近方波的过程。取例 9.11.4 中所得傅里叶级数 的前 m 项作和,记为 S m 这是 m 个正弦波的合成波。执行下面程序可观察到,随着 m 逐渐 增大, S m 的波形逐渐逼近 f(x)(周期性延拓后)的波形,图 1 与图 2 分别是该程序执行中 当 m=3 和 m=6 时的快照 m = 40; k = 1; syms x hold on Sm = k/2; for n = 1:m fn = 2*k*sin((2*n-1)*pi*x/2)/(2*n-1)/pi; Sm = Sm + fn; clf subplot(2,1,1) ezplot(fn,[-6,6])
  4. 4. subplot(2,1,2) ezplot(Sm,[-6,6]) if n<6 pause else pause(5/n) end end 图1 图2

×