复化求积公式求数值积分

上传人:夏** 文档编号:554354280 上传时间:2022-11-01 格式:DOCX 页数:7 大小:31.47KB
返回 下载 相关 举报
复化求积公式求数值积分_第1页
第1页 / 共7页
复化求积公式求数值积分_第2页
第2页 / 共7页
复化求积公式求数值积分_第3页
第3页 / 共7页
复化求积公式求数值积分_第4页
第4页 / 共7页
复化求积公式求数值积分_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《复化求积公式求数值积分》由会员分享,可在线阅读,更多相关《复化求积公式求数值积分(7页珍藏版)》请在金锄头文库上搜索。

1、应用软件课程设计实验二:复化求积公式求数值积分一、实验题目已知积分精确值1=4.006994,分别用复化梯形公式和复化辛普森公式求积分I = J :1 + exp(x)dx0要求:不允许用MATLAB内部函数;分析用复化梯形公式时,剖分区间n对误差的影响;比 较两种方法哪种最接近精确值并分析原因;与MATLAB中的quad、quadl命令比较结果。 附:复化梯形公式和复化辛普森公式, i = 0,1,nh=记Jbf (x)dx 沁 Tn a匕 U f(a)+艺 f (a + i口) + 2 f (b)n 12n 2i=1Jbf (x)dx =Jxi f (x)dx u 工axi=lxixi =

2、1 i 一1=h f (a) + f (b) + 2乙 f (x ) +6f (XJ + 4 f (一1产)+ f (X-)ii =l4 工 f (x Ji=1二、算法说明复化梯形公式算法的 N-S 图:n 表示积分区间被拆分成小区间个给定f表示被积函数,a,b表示积分区间, 数function T=JF(f,a,b,n)w= f(a)/2s=(b-a)/n;i=l iv=n-lyy= f(a+i* s);y二sum(yy);z=f (b)/2;T=s*(w+y+z);算法的伪代码描述:1、定义函数 function T=JF(f,a,b,n)2、w= f(a)/2 % f(a)表示在a点函数

3、的值3、s=(b-a)/n; %每个小区间的宽度4、对于 i=1,2,3, 4,5 , n-1yy=f (a+i*s);%每一个i都计算出一个yy,形成一个向量5、y=sum(yy);%对向量yy所有元素求和6、z=f (b)/2;% 在 b 点函数的值7、T=s*(w+y+z); %形成最终值,既积分结果复化 Simpson 求积算法的 N-S 图:给定f表示被积函数,a,b表示积分区间,n表示积分区间被拆分成小区间个数func tion Q=SJF(f,a,b,n)g= f(a)w=f (b)h=(b-a)/n;i=1i=n-1yy= f(a+i*h);y=2*sum(yy)k=1K=nl

4、l=f(a+k*h-h/2);l=4*sum(ll);Q=(g+w+y+l)*h/6;算法的伪代码描述:1、定义函数 function Q=SJF(f,a,b,n)2、g= f(a) % f(a)表示在a点函数的值3、h=(b-a)/n; %每个小区间的宽度w=f (b)% 在 b 点函数的值4、对于 i=1,2,3, 4,5 , n-1yy=f (a+i*h);%每一个i都计算出一个yy,形成一个向量5、y=2*sum(yy);%对向量yy所有元素求和6、对于 k=1,2,3, 4,5 , nll=f(a+k*h-h/2);%每一个k都计算出一个ll,形成一个向量7、l=4*sum(ll);

5、%对向量ll所有元素求和8、Q=(g+w+y+l)*h/6; %形成最终值,既积分结果调用函数的脚本文件 N-S 图:输入被积区间0,2;被积函数+利仪)a=0;b=2;f=sqrt(1+exp(x);k=1k=10n=2.k;T=JF(f,a,b,n);Q=SJF(f,a,b,n)q=quad(f,a,b)p=quadl(f,a,b)算法的伪代码描述:1、a=0;b=2;%从0开始积分到2结束 f=(x)sqrt(l+exp(x);% (x)表示自变量为 x2、进行循环 for k=0:10;n=2.k;%对于k=0,l,2,310都有一个n 调用自定义函数T=JF(f,a,b,n);n,T

6、;%每个n都得出一个利用复化梯形公式求得的积分 调用自定义函数Q=SJF(f,a,b,n);n,Q;%每个n都得出一个利用复化Simpson公式求得的积分 disp(n,T,Q)%显示三个结果end3、q=quad(f,a,b)p=quadl(f,a,b)%用 MATLAB 中的 quad、quadl 自带命令求积分测试结果运行附录中的程序,输入输出结果为:变量 n复化梯形积分复化Simpson求积14.31060029396314.0079130120309924.083584832514024.0070549278574344.026187404021574.006998066001758

7、4.011795400506714.00699446417137164.008194698255214.00699423832358324.007294353306494.00699422419669644.007069256474144.006994223313581284.007012981603724.006994223258392564.006998912844724.006994223254935124.006995395652384.0069942232547210244.006994516354134.0069942232547q =4.00699422414512p =4.00

8、6994223227以n为横坐标轴,积分值T和Q为纵轴所得图:(原图)两积分比较5 3 5 .3 4. .2 44复化梯形积分 复化辛普森积分2415 44. .044也 :40060080010001200小区间个数n经放大处理后的图)000000000444444444Q 和 T 值 分 积两积分复化梯形积分复化辛普森积分20406080100120140160180小区间个数n四、分析与探讨测试结果分析:/ )和/(b)为底,以b-a为高的梯形的面积值,故通称为梯形公式,它的原理是通过取中值来计算,当区间个数较少时误差很大,积分区间越小即个数越多,求积误差就越小;而辛普森公式,由于求积结

9、点选得恰当,积分区间更加细化所得结果误差更小,它是梯形公式的改进。在结果中可以看出,取相同的区间个数时辛普森公式比梯形公式更加精确。当区间个数取到1024时梯形公式求积结果还是无法达到MATLAB中的quad、quadl命令结果,辛普森公式已经达到。本题思路很简单,只要根据复化公式编写命令即可,而本人理解是编写函数文件,而对 于任意自定义的目标函数和积分区间都能求得结果。此题编写程序的关键是对于每个i所得 f的值,然后进行求和时容易出错,可以用sum函数也可用for进行循环求得。而此题中运 用了每一个i都计算出一个yy,形成一个向量然后对向量yy所有元素用sum求和,但是这 种做法在调用函数时

10、容易出错。而在脚本文件调用函数文件时对于x要定义成自变量,有三 种方法:用符号(x),如f=(x)sqr t(1+exp(x);用内部函数func ti on ;用inline命令, 如 f=inline(sqrt(1+exp(x)。缺点与改进:调用函数的脚本文件中,每个n,所得的n,T,Q都是独立的个体,无法整 合在一体形成矩阵和向量的格式,这对后续的作图造成了困难,不知如何改进,稍微改动整 个程序就出错。因此在最后作图时采用了单个数据输入的形式,既麻烦又复杂费时,有待改 正。附录:调用函数的脚本文件:%利用复化公式求sqrt(1+exp(x)在0,2之间的积分a=0;b=2;f=(x)sq

11、rt(1+exp(x);% (x)表示变量为 xdisp(blanks(23) 变量 n blanks(9) 复化梯形积分 blanks(14) 复化 Simpson 求积 )for k=0:10;n=2.k;T=JF(f,a,b,n);%调用自定义函数n,T;%每个n都得出一个利用复化梯形公式求得的积分Q=SJF(f,a,b,n);n,Q;format long g disp(n,T,Q) end q=quad(f,a,b) p=quadl(f,a,b) %用 MATLAB 中的 quad、 quadl 自带命令求积分利用函数文件定义的函数:%复化梯形公式%f表示函数,a,b表示区间,n表示

12、小区间个数 function T=JF(f,a,b,n)w=feval(f,a)/2; % feval(f,a)求在 a 点函数的值 i=1:n-1;s=(b-a)/n;% 每个小区间的宽度 yy=feval(f,a+i*s); %每一个i都计算出一个yy,形成一个向量y=sum(yy); %对向量 yy 所有元素求和z=feval(f,b)/2;T=s*(w+y+z);format long%复化Simpson求积,a,b表示区间,n表示小区间个数f表示函数 function Q=SJF(f,a,b,n)g=feval(f,a);w=feval(f,b);h=(b-a)/n;i=1:n-1;

13、yy=feval(f,a+i*h);y=2*sum(yy);k=1:n;ll=feval(f,a+k*h-h/2);l=4*sum(ll);Q=(g+w+y+l)*h/6;format long将积分结果画图的命令:n = 1 2 4 8 16 32 64 128 256 512 1024;4.011795400506714.007012981603724.006994464171374.00699422325839T=4.3106002939631 4.08358483251402 4.026187404021574.00819469825521 4.00729435330649 4.007069256474144.00699891284472 4.00699539565238 4.00699451635413;Q=4.007913012030994.007054927857434.006998066001754.006994238323584.006994224196694.006994223313584.00699422325493 4.00699422325472 4.0069942232547; plot(n,T,-.*,n,Q,r-o)legend(复化梯形积分,复化辛普森积分,1)title(两积分比较)xlabel(小区间个数n),ylabel(积分值T和Q)

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

当前位置:首页 > 办公文档 > 解决方案

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