Я устал, плохо знаком с 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;
}
То, что я могу видеть себя, все испорчено, потому что а) я не использую границы, и б) я вполне уверен, что согласно описанию присваивания я должен получить значение, а не новый многочлен.
Google говорит мне, что есть алгоритмы для поиска интегралов (например, Trapezoid), но я не могу сопоставить это с моим представлением полинома.
Несколько указателей:
std::vector
s вместо указателей и new
, (Если вы новичок в C ++, очень мало обстоятельств, когда вам действительно нужно использовать new
.)ComputeIntegral(double, double)
нужно будет возвращать двойной, так как он явно вычисляет определенный интеграл. (Функция, которая у вас есть на данный момент, будет GetPrimitive()
, так как он возвращает примитив многочлена, который является другим поли.std::vector<double> coeffs
который представляет все коэффициенты вплоть до степени поли, то степень можно рассчитать по coeffs.size()
, В некоторых случаях могут быть нули в этом coeffs
хоть.