p.s 文末附试验测试工程下载链接
复合 Simpson 求积算法
函数接口
double SimpsonIntegral (func fun, double a, double b, double eps, int& N)
其中,b 与 a 为积分上下限,eps 为误差精度,N 为区间等分数,L 为加速次数,fun 为被积分函数的名称
实现代码
#include "stdafx.h"
#include "Simpson.h"
#include <cmath>
#include <iostream>
double Simpson(func fun, double a, double b, double eps,int &n)
{
double S1, S2, Sn, S2n, delta = 1;
while (delta > eps)
{
S1 = 0;
S2 = 0;
//复合simpson公式中每个区间中间点的累计
for (int k = 0; k < n; k++)
{
double x1=a+(k+0.5)*(b-a)/n;
S1=S1+4*fun(x1);
}
//复合simpson公式中每个区间拼接点的累计
for (int k = 1; k < n; k++)
{
double x2=a+k*(b-a)/n;
S2=S2