Каким будет алгоритм для решения данной серии?

#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)