matlab中几种求积分的方法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_27008079/article/details/54928512

matlab中几种求积分的方法

最近看了几天matlab的基础知识,总结一下求简单积分的方法

举例图形

x = linspace(0, 2*pi, 100);
y = sin(x) + cos(x);
plot(x, y);

line([0, 2*pi], [0, 0]);
set(gca, 'XLim', [0, 2*pi]);
set(gca, 'XTick', 0:pi/2:2*pi);
set(gca, 'FontName', 'symbol');
set(gca, 'XTickLabel', {'0', 'p/2', 'p', '3p/2', '2p'});

这里写图片描述

Midpoint Rule

fi = f((x1 + x2) / 2)
取两点之间中点的平均值作为该区域的高
这里写图片描述

h = pi/100;
x = 0:h:2*pi;
mid = (x(1:end-1) + x(2:end)) / 2;
y = sin(x) + cos(x);
s1 = h * sum(y)

Trapezoid Rule

fi = (f(x1) + f(x2)) / 2;
取两点函数值得平均值作为该区域的高
这里写图片描述

h = pi/100;
x = 0:h:2*pi;
y = sin(x) + cos(x);
yy = (y(1:end-1) + y(2:end))/2;
s2 = h * sum(yy)

除此以外,matlab中的trapz函数可用来调用求其值,如下

h = pi/100;
x = 0:h:2*pi;
y = sin(x) + cos(x);
s3 = h * trapz(y)

1/3 Simpson’s

fi = 3/h*(f0 + 4f1 + f2),利用公式求解即可
这里写图片描述

h = pi/100;
x = 0:h:2*pi;
y = sin(x) + cos(x);
s4 = h * (y(1) + y(end) + 2*sum(y(3:2:end-2)) + 4*sum(y(2:2:end-1)))

利用integral

f = @(x) sin(x) + cos(x);
s5 = integral(f, 0, 2*pi)

结果显示

对比一下各种方式求出的积分值
这里写图片描述

猜你喜欢

转载自blog.csdn.net/qq_27008079/article/details/54928512