首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C++多项式:不定积分

C++多项式:不定积分
EN

Stack Overflow用户
提问于 2014-03-25 04:21:48
回答 2查看 1.9K关注 0票数 0

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

代码语言:javascript
运行
复制
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;
}
EN

回答 2

Stack Overflow用户

发布于 2014-03-25 04:32:45

看起来你想要的是

代码语言:javascript
运行
复制
for ( int i = fDegree; i > 0; --i ) {
  Result.fCoeffs[i]  = fCoeffs[i-1] / static_cast<float>(i);
}

我不知道你的类的底层实现,所以我不知道你是如何实现fCoeffs的(如果它是双精度的还是浮点型的),也不知道你是否需要担心i越界。如果它是一个向量,那么它肯定需要初始化为正确的大小;如果它是一个地图,那么你可能不需要这样做。

票数 2
EN

Stack Overflow用户

发布于 2014-03-25 04:38:58

试试像这样的东西

代码语言:javascript
运行
复制
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;
}

每个单项式a x^i都存储为fCoeffsi中的值a,积分后应将其移动到fCoeffsi+1,再乘以1/(i+1)。最低系数设置为。是的,你最好确保有最高系数的空间。

例如:1 1是1+x,应该变成C+x+ 1/2 x^2,它由0 1 0.5表示,记住我们引入了一个任意常数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22619803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档