Matlab,多种方法求面积

img


多种方法估计该区域的面积
用矩形法我的程序:
x=[2.0,8.6,12.0,21.835*.4,42.9,45.6,61.6,69.8,87.2,120.5,146.8,168.5,189.8,220.4,255.0,286.6,302.5,350.1];
y1=[14.5,21.6,22.4,25.8,20.6,23.8,36.8,28.8,30.4,38.7,52.8,98.6,55.5,69.4,23.4,51.9,46.8,52.8,66.6];
y2=[94.5,76.8,91.5,118.6,124.2,140.6,172.8,206.6,175.5,198.6,145.6,186.8,352.4,423.8,386.7,415.4,358.2*.245*.2*.198*.9];
left_sum=0;mid_sum=0;right_sum=0;
for k=1:1:18
s=x(k+1)-x(k);
e=x(k):s/100:x(k+1);
for i=1:1:100
a=(y1(k+1)-y1(k))/(x(k+1)-x(k))(e(i)-x(k))+y1(k);a=(y2(k+1)-y2(k))/(x(k+1)-x(k))(e(i)-x(k))+y2(k)-a;left_sum=left_sum+a*(s/100);
b=(y1(k+1)-y1(k))/(x(k+1)-x(k))((e(i)+e(i+1))/2-x(k))+y1(k);b=(y2(k+1)-y2(k))/(x(k+1)-x(k))((e(i)+e(i+1))/2-x(k))+y2(k)-b;mid_sum=mid_sum+b*(s/100);
c=(y1(k+1)-y1(k))/(x(k+1)-x(k))(e(i+1)-x(k))+y1(k);c=(y2(k+1)-y2(k))/(x(k+1)-x(k))(e(i+1)-x(k))+y2(k)-c;right_sum=right_sum+c*(s/100);
end
end
left_sum
mid_sum
right_sum
错误:index exceed the number of array elements
Index must not exceed 17
需求,用矩形法和梯形法估计面积

2.0,8.6,12.0,21.835*.4,42.9 改成 2.0,8.6,12.0,21.8,35.4,42.9
358.2*.245*.2*.198*.9 改成 358.2,245.2,198.9
结果
left_sum =

 7.410334544999995e+04

mid_sum =

 7.409509500000002e+04

right_sum =

 7.408684454999995e+04

x=[2.0,8.6,12.0,21.8,35.4,42.9,45.6,61.6,69.8,87.2,120.5,146.8,168.5,189.8,220.4,255.0,286.6,302.5,350.1];
y1=[14.5,21.6,22.4,25.8,20.6,23.8,36.8,28.8,30.4,38.7,52.8,98.6,55.5,69.4,23.4,51.9,46.8,52.8,66.6];
y2=[94.5,76.8,91.5,118.6,124.2,140.6,172.8,206.6,175.5,198.6,145.6,186.8,352.4,423.8,386.7,415.4,358.2,245.2,198.9];
left_sum=0;mid_sum=0;right_sum=0;
for k=1:1:18
s=x(k+1)-x(k);
e=x(k):s/100:x(k+1);
for i=1:1:100
a=(y1(k+1)-y1(k))./(x(k+1)-x(k)).*(e(i)-x(k))+y1(k);
a=(y2(k+1)-y2(k))./(x(k+1)-x(k)).*(e(i)-x(k))+y2(k)-a;
left_sum=left_sum+a*(s/100);
b=(y1(k+1)-y1(k))./(x(k+1)-x(k)).*((e(i)+e(i+1))./2-x(k))+y1(k);
b=(y2(k+1)-y2(k))./(x(k+1)-x(k)).*((e(i)+e(i+1))./2-x(k))+y2(k)-b;
mid_sum=mid_sum+b*(s/100);
c=(y1(k+1)-y1(k))./(x(k+1)-x(k)).*(e(i+1)-x(k))+y1(k);
c=(y2(k+1)-y2(k))./(x(k+1)-x(k)).*(e(i+1)-x(k))+y2(k)-c;
right_sum=right_sum+c*(s/100);
end
end
left_sum
mid_sum
right_sum