Matlab梯形法则

Matlab梯形法则,matlab,function,integration,Matlab,Function,Integration,我创建了一个fas.m脚本,但得到了错误的结果 功能 function [fnc2] = fas(x) if x>=0 && x<1 fnc2 = x^3; elseif x>=1 && x<2 fnc2 = 2-((x^2)/5); elseif x>2 fnc2 = x^2+x; elseif x<0 fprintf('x is smaller than 0, func

我创建了一个fas.m脚本,但得到了错误的结果

功能

 function [fnc2] = fas(x)
if x>=0 && x<1
fnc2 = x^3;
elseif x>=1 && x<2
        fnc2 = 2-((x^2)/5);
elseif x>2
            fnc2 = x^2+x;
 elseif x<0 
     fprintf('x is smaller than 0, function is not defined');

end
功能[fnc2]=fas(x)
如果x>=0&&x=1&&x2
fnc2=x^2+x;
elseif x梯形法则是

所以

h=0.05;
x=0;
I=0;
而x<3
I=I+h*(fas(x)+fas(x+h))/2;
x=x+h;
结束
disp(I);

您将获得
I=11.3664
,而
I
的实际值为
10.3667

或矢量化:
x=0:h:3;f=fas(x);I=和(h*(f(1:end-1)+f(2:end))/2)
@Kamtal-也可以看看这篇文章,了解更多信息:。此代码通过增加估计面积所需的梯形数来不断计算梯形规则,直到相对误差小于一定量。无论哪种方式,都能很好地修正OP的答案。非常感谢@rayryeng
clear
clc
h=0.05;
x=0.05;
x0=0;
xn=3;
while x<=2.95
fas(x);
I=0.025*(fas(x0)+2*fas(x)+fas(x0));
x=x+h;
end
h = 0.05;
x = 0;
I = 0;
while x < 3
   I = I + h * (fas(x) + fas(x + h)) / 2;
   x = x + h;
end
disp(I);