计算三角多项式

上传人:m**** 文档编号:497639706 上传时间:2022-08-04 格式:DOCX 页数:5 大小:43.71KB
返回 下载 相关 举报
计算三角多项式_第1页
第1页 / 共5页
计算三角多项式_第2页
第2页 / 共5页
计算三角多项式_第3页
第3页 / 共5页
计算三角多项式_第4页
第4页 / 共5页
计算三角多项式_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《计算三角多项式》由会员分享,可在线阅读,更多相关《计算三角多项式(5页珍藏版)》请在金锄头文库上搜索。

1、计算三角多项式的MATLAB主程序(串行)输入的量:Xl(三角函数坐标),Y1 (三角函数),Xj,阶数m, 输出的量:A1,B1,Y11,Rm11串行代码function A,B,Yl,Rm=sanjiao(X,Y,Xl,m) n= length(X)-1;max1=fix(n-1)/2); if m maxim=max1;endA=zeros(1,m+1);B=zeros(1,m+1); Ym=(Y(1)+Y(n+1)/2; Y(1)=Ym; Y(n+1)=Ym;A(1)=2*sum(Y)/n;for i=1:mB(i+1)=sin(i*X)*Y; A(i+1)=cos(i*X)*Y; e

2、ndA=2*A/n; B=2*B/n; A(1)=A(1)/2;Y1=A(1); for k=1:m Y1=Y1+A(k+1)*cos(k*X1)+ B(k+1)*sin(k*X1); Tm=A(1)+A(k+1).*cos(k*X)+ B(k+1).*sin(k*X); k=k+1;endY;Tm; Rm=(sum(Y-Tm).入2)/n;计算三角多项式的MATLAB主程序(并行)输入的量:X1(三角函数坐标),Y1 ()三角函数,Xj,阶数m, lab数目n 输出的量:A1,B1,Y11,Rm11并行代码function A,B,Y1,Rm=sanjiao spmd(X,Y,X1,m,p)

3、n= length(X)-1;max1=fix(n-1)/2);if m max1m=max1;endA=zeros(1,m+1);B=zeros(1,m+1);Ym=(Y(1)+Y(n+1)/2; Y(1)=Ym; Y(n+1)=Ym; A(1)=2*sum(Y)/n;fix m=fix(m/p);spmd(p)max size=fix m*labindex;min size=(labindex-1)*fix m+1;if labindex=pfor i=min size:mB(i+1)=sin(i*X)*Y; A(i+1)=cos(i*X)*Y;endelsefor i=min size:

4、max sizeB(i+1)=sin(i*X)*Y; A(i+1)=cos(i*X)*Y;endendendif p=4A=A1+A2+A3+A4;B=B1+B2+B3+B4;elseif p=3A=A1+A2+A3;B=B1+B2+B3;elseif p=2A=A1+A2;B=B1+B2;elseA=A1;B=B1;endA(1)=2*sum(Y)/n;A=2*A/n; B=2*B/n; A(1)=A(1)/2;Y1=A(1);for k=1:mYl=Yl+A(k+1)*cos(k*Xl)+ B(k+1)*sin(k*Xl); k=k+1;endspmd(p)max size=fix m*l

5、abindex;min size=(labindex-1)*fix m+1;if labindex=pfor k=min size:mTM=A(k+1).*cos(k*X)+ B(k+1).*sin(k*X);k=k+1;endelsefor k=min size:max sizeTM=A(k+1).*cos(k*X)+ B(k+1).*sin(k*X);k=k+1;endendendfor k=1:pTm=A(1)+TMk;endY;Tm; Rm=(sum(Y-Tm).A2)/n;注意:下例子仅用于测试程序正确性与并行时的加速比,故没有使用例子中全部测试代 码。例 7.7.1根据-冗,冗上的

6、n = 13, 60, 350个等距横坐标点.二-兀+ ix(i = 0,1,2, n)和函数 f (x) = 2sin .3(1) 求f (x)的6阶三角多项式逼近,计算均方误差;(2) 将这三个三角多项式分别与f (x)的傅里叶级数的前6项进行比较;r18咄3百nf (x)=乙(一1)n+1sin nx兀9 n2 -1n = 1(3) 利用三角多项式分别计算X尸-2, 2.5的值;(4) 在同一坐标系中,画出函数f (x),n = 13, 60, 350的三角多项式和数据点的图 形.解 (1)输入程序 X1=-pi:2*pi/13:pi;Y1=2*sin(X1/3);X1i=-2,2.5;

7、 A1,B1,Y11,Rm1 =sanjiao(X1,Y1,X1i,6), matlabpool 4 A1,B1,Y11,Rm1=sanjiao(X1,Y1,X1i,6); %串行代码实现A1 =1.0e-016 *0.0263-0.34160.1708-0.17080-0.17080B1 =01.2189-0.52340.3053-0.18570.1018-0.0326Y11 =-1.19751.5908Rm1 =9.9406e-032 A1,B1,Y11,Rm1=sanjiao_spmd(X1,Y1,X1i,6,4);%并行实现A1 =1.0e-016 *0.0263 -0.34160.1

8、708-0.17080-0.17080B1 =0 1.2189-0.52340.3053-0.18570.1018-0.0326Y11 =-1.1975 1.5908Rm1 =9.9406e-032matlabpool close串行程序和并行程序都得出的结果一致。下面看看并行代码与串行代码的效率对 比:2编写并保存为speed up spmd.mfunction speed_up= speed_up_sanjiao_spmd(Xl,Yl,Xli,m,p)ticsanjiao(Xl,Yl,Xli,m);toet_for = toe;tiesanjiao_spmd(Xl,Yl,Xli,m,p);

9、toet_parfor = toe;speed_up = t_for / t_parforend speed_up_sanjiao_spmd(X1,Y1,X1i,6,4)Elapsed time is 0.000384 seconds.Elapsed time is 0.267290 seconds.speed_up =0.0015matlabpool close输出中第一行是串行代码所用时间,第二行是并行代码所用时间三角多项式取值范围XI大小、函数阶数m, 1334,667 lab数目:1, 2, 3, 4加速比如下:lab数目加速比n2001,10006001,5006001,100060

10、01,3000(串行时间)10.83430.86770.93800.9507(并行时间)21.24921.37711.59151.8526(并行时间)31.38531.54652.04912.5532(并行时间)41.35261.65072.23403.1225表1lab数目加速比n2001,1002001,500(串行时间)10.40250.7134(并行时间)20.37840.9356(并行时间)30.30380.9286(并行时间)40.24350.8511取其中的2001,100,6001,500,6001,3000三个范围的加速比做直观图如下:计算三角多项式值spmd相对于串行加速比3.51.50.5200,1006000,500 口6000,30006000,3000/ 6000,500200,100lab数目从两幅图里都可以看到当计算规模较小时【2001 , 100】, spmd 加速不明显甚至性能比串行 还低,而且lab数量变大可能造成性能下降,这是因为将任务分配给labs会耗时,这种情况 下 spmd 并行得来的性能欠佳,不能弥补这种消耗。矩阵规模较大【6001, 3000】时 spmd 并行化加速明显,而且随着lab数量增加而增加,近似线性加速。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 机械/制造/汽车 > 电气技术

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号