辛普森算法

double func(double a, double b, double x) {
  double r = a * exp(- x*x) + b * sqrt(x);
  return r*r;//return的积分常数,例如这里f(x*x)dx|[0,h]
}

double integrate(double a, double b, double h) {
  unsigned long steps = 1, it = 1;
  double V = h * (func(a, b, 0) + func(a, b, h)) / 2.0;
  double Vold;

  do {
    double tmp = 0;
    steps *= 2;
    //cout << V << endl;

    for (unsigned long i = 1; i < steps; i += 2) {
      tmp += func(a, b, (h * i) / steps);
    }

    Vold = V;
    V = (V / 2.0) + ((tmp * h) / steps);
  } while (fabs(V - Vold) > eps);

  return V;
}
/*上述模板:func()为积分的函数,integrate()为区间【0,h】上的积分*/

转载于:https://www.cnblogs.com/little-w/p/3379203.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值