我试图在数值方法中使用复合梯形法则来计算积分的函数。但问题是,当我要检查输入数据点是否等间隔时,出现错误。由于浮点数。 这是我的代码
function answer = composite_trapezoidal (X, Y)
lx = length(X);
ly = length(Y);
h = X(2) - X(1);
validity = 1;
series_sum = 0;
answer = 0;
if (lx ~= ly)
fprintf('Error ! Dimensions Of Data Point Vectors Doesn''t Match\n');
else
for i = 1:lx - 1
hTmp = X(i + 1) - X(i);
if (hTmp ~= h)
validity = 0;
fprintf('Invalid Data Points. Data Must Be Equally Spaced !\n');
break;
end
end
end
if (validity == 1)
for i = 2:lx - 1
series_sum = series_sum + Y(i);
end
answer = (h / 2) * (2 * series_sum + Y(1) + Y(ly));
end
考虑输入x = linspace(0, 2, 7);
然后函数终止于"数据点不是等间隔的"。但问题是它们是使用linspace计算的。
我能理解这个问题。点数为0,0.3333333,0.6666667等。因此,在向上舍入时它们的间距不等。但问题是我们可以解决这个问题吗?