我既厌倦了,也不熟悉C ++并且在处理多项式时非常糟糕。这对我的任务来说是一个糟糕的组合。不过我试图解决它。请注意,我可能在数学和语言方面误解了某些部分。甚至可能是术语。
我的任务的第一项任务是创建一个用于存储多项式的类。我认为重要的部分是系数和多项式的程度。因此,我有一个(部分)看起来像这样的多项式类:
class Polynomial {
private:
double* Coefficients; //Array of coefficients in order of ascending power
int Degree; //The degree of the polynomial
...
该类应该有一个方法,用于在下限和上限内找到多项式的积分。但我真的不知道如何使用它。
由于不显示我所做的事情是不好的做法,这就是我现在所拥有的,这可能没有多大意义,但是,如果可以的话,请指出我正确的方向?
Polynomial Polynomial::ComputeIntegral(double lower, double upper) {
//Values needed to create new polynomial
//degree will be one more than the original polynomial
int degree = Degree + 1;
double* coefficients = new double[degree + 1];
coefficients[0] = 0;
for (int i = 0; i < degree +1; i++) {
coefficients[i + 1] = Coefficients[i] / (double)(i + 1);
}
Polynomial integral(degree, coefficients);
return integral;
}
我可以看到自己,它搞砸了因为a)我没有使用边界,而b)我非常确定每个赋值描述我应该得到一个值而不是一个新的多项式。
谷歌告诉我有一些算法来处理寻找积分(例如梯形),但我无法用我的多项式表示来匹配它。答案 0 :(得分:3)
一些指示:
std::vector
代替指针和new
。 (如果您不熟悉C ++,那么实际需要使用new
的情况非常少。)ComputeIntegral(double, double)
将需要返回一个double,因为它显然是计算一个定积分。 (你现在的函数就像GetPrimitive()
,因为它返回多项式的基元,这是另一个多边形。std::vector<double> coeffs
来表示直到poly的度数的所有系数,然后可以计算度数在coeffs.size()
。在某些情况下,coeffs
可能会有零。