#java #algorithm
#java #алгоритм
Вопрос:
Каким будет алгоритм для вычисления данной серии?
Вот что я закодировал до сих пор:
public static double sumOfSeries(double x, int numTerms) { // -1 <= x <= 1
double sum = x;
for(int i = 1; i <= numTerms; i ) {
}
return sum;
}
Комментарии:
1. Что вы пытались придумать? Поскольку это выглядит как упражнение, целью которого, вероятно, является либо проверить вас, либо чему-то научить, именно вам следует предпринять первую попытку.
2. И что вы планируете делать с
i
? Вы пытались проанализировать серию и создать определение формулы / шага на основеi
?3. Этот вопрос не показывает достаточных усилий для Stack Overflow. Но вот подсказка: думайте об этом как о двух переплетенных сериях. Сначала решите для двух отдельных серий. После этого посмотрите, сможете ли вы их переплетать; ваш учитель, вероятно, хочет получить ответ в одном
for
цикле.4. Использование
i
в качестве счетчика циклов — это только один способ, но вы можете сделать больше (например, вы могли бы сделать что-то вродеpow(x, i * 2 - 1)
и т.д.). Даже если нет, вам нужно разложить серию и найти шаблон, который может быть реализован в теле цикла, что является фактической задачей. И это то, что, я полагаю, по крайней мере, вы должны попробовать — и вы должны определенно показать, что вы пробовали здесь, чтобы мы могли вносить предложения.5. Я не могу придумать стабильный алгоритм для решения проблемы. Итак, я еще не написал никакого кода. @Thomas
Ответ №1:
попробуйте отделить коэффициенты от многочленов и вычислить их отдельными методами. Пример:
public class NewClass {
public static void main(String[] args) {
int greatestExponent = 9;
double x = 0.5;
System.out.println(calculate(x,greatestExponent));
}
public static double getCoefficient(int n){
double coff = 1;
for(int i=1; i<n; i ){
if(i%2==0){
coff = coff/i; //if even put it in the denominator
}
else{
coff = coff*i; // else numerator
}
}
return coff/n; // at the end divide with the exponent (ex. x^9 /9)
}
public static double calculate(double x, int expo){
double result = 1;
for (int i = 1; i<= expo; i =2){
result = (getCoefficient(i)*Math.pow(x, i)); //for each odd exponent calculate the cofficient and x^i
}
return resu<
}
}
Ответ №2:
Необходимо найти все закономерности в предлагаемом уравнении.
x -> x ^ 3 -> x ^ 5 -> x ^ 7 ->
Затем вы создаете отдельную переменную N1 = x перед циклом и N1 * = x * 2 в конце каждой итерации
1 -> 1 -> 1×3 -> 1x3x5 -> 1x3x5x7 ->
Отдельная переменная N2 = 1 перед lopp и N2 * = (i * 2-1) в конце каждой итерации
и т.д. и т.п.
наконец, вы будете объединять все эти части вместе в начале каждой итерации, например, sum = N1 * N2 * N3 / (N4 * N5)