复化的积分公式程序实现比较简单,只需要注意到不同节点处函数值的系数可能有所不同即可。下面的程序可以实现[0,1]上的连续函数f(x)的定积分近似计算,分别使用了复化梯形积分公式和Simpson积分公式。剖分段数可以自己定义,f可以自己定义。
- 代码:
clear; clc; close all;format long
a = 0;
b = 1;
n = 8;
m = 16;
h = (b-a)/n;
x = a:h:b;
% 复化梯形积分
Tn = 0;
for i = 2:n
Tn = Tn + f(x(i));
end
Tn = Tn + (f(x(1)) + f(x(n+1)))/2;
Tn = Tn*h;
Tn
% 复化Simpson积分
Sn = 0;
h1 = (b-a)/m;
x1 = a:h1:b;
temp1 = 0;
temp2 = 0;
temp2 = temp2 + f(h1/2);
for i = 2:m
temp1 = temp1 + f(x1(i));
temp2 = temp2 + f(x1(i) + h1/2);
end
Sn = Sn + f(x1(1)) + f(x1(m+1));
Sn = (Sn + 2*temp1 + 4*temp2)/6 * h1;
Sn