end inum5=inum5*h; fprintf('积分为%g\\n',inum5); 运算结果:积分为-1.33333 2. 分别用梯形法与抛物线法,计算dx?1x,将积分区间[1,2]作120等分.并尝试直接使用函数2trapz()、quad()进行计算求解 (1)梯形法: clear;clc; syms x fx; fx=x*(-1); a=1;b=2;n=120; h=(b-a)/n;Sum=0; for i=1:n xj=a+(i-1)*h; xi=a+i*h; fxj=subs(fx,'x',xj); fxi=subs(fx,'x',xi); Sum=Sum+(fxj+fxi)*h/2; end fprintf('积分为%g\\n',Sum); 运算结果:积分为-1.5 (2)抛物线法: clear;clc; n=120;a=1;b=2; h=(b-a)/n;inum5=0; f=@(x)x*(-1); for i=1:n x1=a+(i-1)*h;x2=a+i*h;x3=(x1+x2)/2; inum5=inum5+(f(x1)+4*f(x3)+f(x2))/6; end inum5=inum5*h; fprintf('积分为%g\\n',inum5); 运行结果:积分为-1.5 (3)trapz(): clear;clc; x=1:1/120:2; y=x*(-1); trapz(x,y) 运行结果:ans =-1.5000 (4)quad(): clear;clc; quad('x*(-1)',1,2,1/120)
运行结果:ans =-1.5000 3.学习fuluBsum.m的程序设计方法,尝试用函数sum改写矩形法和抛物线法的程序,避免for循环 (1)矩形法: clear;clc; syms x fx; fx=(1+x.^2)*(-1); a=0;b=1;n=258; h=(b-a)/n;Sum=0; iv=1:n; xz=a+(iv-1)*h; s=subs(fx,'x',xz)*h; Sum=sum(s); fprintf('积分为%g\\n',Sum); 运行结果:积分为-1.3314 (2)抛物线法: clear;clc; n=258;a=0;b=1; h=(b-a)/n;inum5=0; f=@(x)(1+x.^2)*(-1); iv=1:n; x1=a+(iv-1)*h; x2=a+iv*h; x3=(x1+x2)/2; s=(f(x1)+4*f(x3)+f(x2))/6; inum5=sum(s); inum5=inum5*h; fprintf('积分为%g\\n',inum5); 运行结果:积分为-1.33333 实验结果报告与实验总结: 1.数值积分的常见算法有:矩形法、梯形法、抛物线法。 2.Matlab求积分函数可用: (1) 数值积分函数:trapz、quad、dblquad (2) 符号积分函数:int 3.经过对比易知抛物线法的精确程度最高。 思考与深入: 1. 在使用Matlab编程的过程中,应注意避免犯下“忘记初始化”、“错误输入符号”等“低级错误。” 2. 在学习使用Matlab编程的过程中,不应只通过比照着老师给出的范本“依样画葫芦”完成作业。要真正学会通过Matlab解决某一题型的方法,应该先理解题型的算法,然后通过该算法编程。
相关推荐: