Вычислить серию - PullRequest
       28

Вычислить серию

3 голосов
/ 05 января 2012

Назначение: Напишите метод для вычисления следующих рядов: m (i) = 1 - (1/2) + (1/3) - (1/4) + (1/5) - ... + ((-1) ^ (i + 1)) / i

Напишите тестовую программу, которая отображает следующий код:

i:       m(i):
5        0,78333
10       0,64563
..       ..
45       0,70413
50       0,68324

Я пытался уже пару часов, иЯ просто не могу придумать, как это решить.Может быть, я просто тупой, ха-ха:)

Вот мой код:

package computingaseries;

public class ComputingASeries {

    public static void main(String[] args) {

        System.out.println("i\t\tm(i)");
        for (int i = 5; i <= 50; i += 5) {
            System.out.println(i + "\t\t" + m(i));
        }
    }

ОБНОВЛЕНО:

    public static double m(int n) {
        double tal = 0;
        double x = 0;

        for (int i = 1; i <= n; i += 1) {
            if (i == 1) {
                x = 1 - ((Math.pow(-1, (i + 1))) / i);
            } else {
                x = ((Math.pow(-1, (i + 1))) / i);
            }
        }
        tal += x;

        return tal;

    }
}

Мой неправильный вывод:

i       m(i)
5       0.2
10      -0.1
15      0.06666666666666667
20      -0.05
25      0.04
30      -0.03333333333333333
35      0.02857142857142857
40      -0.025
45      0.022222222222222223
50      -0.02

Ответы [ 2 ]

2 голосов
/ 05 января 2012

вы должны исключить «1-» при определении x, то есть x = ((-1) ^ (i + 1)) / i

EDIT

Особого случая для x == 1 не существует, x всегда определяется как x = Math.pow (-1, i + 1) / i. Обратите внимание, что ((-1) ^ (1 + 1)) / 1 = ((-1) ^ 2) / 1 = 1/1 = 1. Также tal + = x входит в цикл for.

0 голосов
/ 06 декабря 2016
public class SpecialSeries {

    public static double m(int n){
        double sum = 0;
        for (int i = 1; i <= n; i++) {
            sum += Math.pow(-1, (i+1))/(double)i;
        }  
        System.out.println(n+"\t"+sum);
        return sum;
    }  

    public static void main(String[] args) {
        System.out.println("i:\tm(i)");
        for (int i = 5; i < 50; i+=5) {
            m(i);
        }
    }
}

вы можете запустить его здесь на ideone

...