题号:
编写文件:在matlab中创建新脚本,并保存,然后在命令行执行。
function ss=exam3_1(t,a,b,n)
dx=(b-a)/n;
syms x;
ff=x*exp(x)*sin(x);
xx=a:dx:b;
ss=0;
if t==1
for i =1:n
f1=subs(ff,x,xx(i));
ss=ss+dx*f1;
end
elseif t==2
for i =1:n
f1=subs(ff,x,xx(i+1));
ss=ss+dx*f1;
end
elseif t==3
for i=1:n
yy=(xx(i)+xx(i+1))/2;
f1=subs(ff,x,yy);
ss=ss+dx*f1;
end
elseif t==4
for i =1:n
f1=subs(ff,x,xx(i));
f2=subs(ff,x,xx(i+1));
ss=ss+dx*(f1+f2)/2;
end
else
for i=1:n
f1=subs(ff,x,xx(i));
f2=subs(ff,x,xx(i+1));
yy=(xx(i)+xx(i+1))/2;
f12=subs(ff,x,yy);
ss=ss+dx*(f1+f2+4*f12)/6;
end
end
输入:(t,a,b,n)% t 用于控制积分方法、【a,b】为对应积分区间、n表示分割份数
方法一:左矩形法
ss=vpa(exam3_1(1,0,1,200))
方法二:右矩形法
ss=vpa(exam3_1(2,0,1,200))
方法三:中矩形法
ss=vpa(exam3_1(3,0,1,200))
方法四:梯形法
ss=vpa(exam3_1(4,0,1,200))
方法五:辛普生方法
ss=vpa(exam3_1(5,0,1,200))
输出结果如图: