利用曲边梯形面积求和的方式对定积分的值进行估计matlab
任务:
利用曲边梯形面积求和的方式对定积分的值进行估计,并与理论值进行比较。
要求:
- 完成基本任务;
- 对求解过程进行图形化展示;
- 分析所得结果与理论值的误差以及总结缩小误差的方法。
一、总体设计
1.程序的总体设计:用循环完成基本结构,并算出定积分的值
2. 数据结构:二维数组
3. 函数原型声明:function qujianmianji
二、功能实现
-
利用曲边梯形面积求和的方式对定积分的值进行估计
-
累加过程动态化
三、测试及调试(测试方案、存在的问题及解决方法) -
推导出曲边梯形面积求和公式并表达出来,建立定义域(-pi,pi),假设循环三次,函数图形在用矩形分开的份数(n)的基础上进行间隔时间0.001秒的动态化处理并画出,将图形和运行结果S(t)分别画在两张图中。由于每次运行都要消耗一定的时间所以运算次数不能过大,只能适当的减小循环次数,即份数(n)减小。
-
写出基本循环语句,并给出一个运算次数,多次运算后总结实验及结论,将运算值进行可视化处理并与理论值进行比较。
-
出现的问题:计算出来的S值把上一次计算的S值覆盖,并且每一个S值会计算t(运行次数)次 对问题的分析:计算S时的区间不一致 解决方法:给次数t建立一个循环
四、总结
包括但不限于以下内容:
- 涉及Matlab语言知识:循环,多点连线
- 对程序设计方法(自顶向下、结构化设计)的体会和掌握程度:对循环结构有了更好的掌握,可以进一步简化算法,掌握良好
- 分析问题和解决问题的能力,并举例说明:分析问题和解决问题的能力有待提高,本任务中对运算区间有一定的理解误区,查阅资料后进行对源码的改善来达到预期的效果。
function qujianmianji
x0=-pi;
xn=pi;
for n=100:1000:2100
t=1:1:3;
h=(xn-x0)/n;
subplot(1,2,1)
x = linspace(x0,xn,n);
y=x.*cos(x.^2);
S(t)=h.*(sum(y(2:n))+(y(1)+y(n))/2)
plot(x,y,'r-')
hold on
for i = 1:length(x)-1
if y(i)>0
subplot(1,2,1)
plot([x(i) x(i) x(i+1)],[0 y(i) y(i)],'b-')
else
subplot(1,2,1)
plot([x(i) x(i) x(i+1)],[0 y(i) y(i)],'r-')
end
pause(0.001)
hold on
end
subplot(1,2,2)
semilogx(n,S(t),'kv')
hold on
end