C ++多项式:不定积分

时间:2014-03-24 20:21:48

标签: c++ math

我试图找到多项式的不定积分,但是我的数学和编码都不是很好。我的代码编译但我相信我有错误的公式:

Polynomial  Polynomial :: indefiniteIntegral() const
{
    Polynomial Result;
    Result.fDegree = fDegree + 1;
    for ( int i = fDegree; i > 0 ; i--){
        Result.fCoeffs[i] = pow(fCoeffs[i], (Result.fDegree)) / (Result.fDegree);
    }
    return Result;
}

2 个答案:

答案 0 :(得分:2)

看起来像你想要的是

for ( int i = fDegree; i > 0; --i ) {
  Result.fCoeffs[i]  = fCoeffs[i-1] / static_cast<float>(i);
}

我不知道你班级的基本实施,所以我不知道你是如何实施fCoeffs(如果它的双打或浮动),如果你需要担心{{1超出范围。如果它是一个向量,那么它肯定需要初始化为正确的大小;如果是地图,那么你可能不需要。

答案 1 :(得分:1)

尝试类似

的内容
Polynomial  Polynomial::indefiniteIntegral() const 
{
  Polynomial Result;
  Result.fDegree = fDegree + 1;
  for (int i = fDegree; i > 0 ; i--) {
    Result.fCoeffs[i] = fCoeffs[i-1] / i;
  }
  Result.rCoeffs[0] = 0;
  return Result;
}

每个单项式 ax ^ i fCoeffs [i] 中存储为值 a ,集成后应将其移至 fCoeffs [i + 1] ,乘以 1 /(i + 1)。最低系数设置为 0 。 是的,你最好确保有最高系数的空间。

示例: [1 1] 1 + x ,应该成为 C + x + 1/2 x ^ 2 通过 [0 1 0.5] ,请记住我们引入了一个任意常量。