【问题标题】:Simple rectangle method algorithm problem简单矩形法算法问题
【发布时间】:2021-08-23 05:56:44
【问题描述】:

我被要求编写一个矩形方法算法来计算函数的估计面积,但是我的讲师将我的代码发回并要求我更正它,因为结束条件错误?

double prostokaty(double( *f)(double))
{
    double krok, p, suma = 0;
    krok = (c_do - c_od) / lp;
    for (p = c_od + krok; p < c_do; p += krok) {
        suma += (*f)(p);
    }
    return suma * krok;      
}

我花了将近两个小时,找出问题所在,但我失败了。

【问题讨论】:

标签: c algorithm integral


【解决方案1】:

最好使用矩形的中间c_od + krok/2,而不是右边缘c_od + krok

double prostokaty(double( *f)(double)) {
  double p, suma = 0;
  double krok = (c_do - c_od) / lp;
  // for (p = c_od + krok; p < c_do; p += krok) {
  for (p = c_od + krok/2; p < c_do; p += krok) {
    suma += (*f)(p);
  }
  return suma * krok;      
}

如果lp是整数类型,最好避免累积增量错误。

  double suma = 0;
  double krok = (c_do - c_od) / lp;
  for (int i = 0; i < lp; i++) {
    double p = c_od + (i + 0.5)*krok;
    suma += f(p);
  }
  return suma * krok;      

【讨论】:

  • 感谢您的帮助!我会坚持第一个版本,因为 lp 被定义为 double
猜你喜欢
  • 2011-08-11
  • 2017-09-28
  • 2010-11-14
  • 1970-01-01
  • 2011-03-13
  • 2010-12-10
  • 2014-12-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多