2014-11-14 2 views
1

Я новичок в java, и я пытаюсь создать программу, которая вычисляет pi, используя серию Leibniz с 100000 итерациями. Мне нужно определить метод и вызвать его. Когда я запускаю свою программу, я не получаю результата. Может кто-нибудь, пожалуйста, скажите мне, что я делаю неправильно, и помогу мне вернуться на правильный путь?Рассчитать pi с помощью серии Leibniz

public class pi 
 
{ 
 
    public static void main(String[] args) 
 
    { 
 
     double pi = computePi(100000); 
 
    } 
 
    public static double computePi(int count) 
 
    { 
 
     double pi = 0; 
 
     count = 100000; 
 
     
 
     for(int i =0; i<count; i++) 
 
     { 
 
      pi = Math.pow(-1,i)/(2*i+1); 
 

 
     } 
 
     return pi; 
 
    } 
 
}

+0

Я не» t видеть инструкцию печати в любом месте. – defube

ответ

0

Если вы хотите, чтобы распечатать его на консоль, попробуйте:

public static void main(String[] args) 
{ 
    System.out.println("pi = " + calculatePi(100000)); 
} 

Я не могу сказать много для точности, хотя.

0

В коде есть пара ошибок. Сначала вызов функции в основном не соответствует имени функции computePi. Во-вторых, в цикле for вы повторно назначаете значение переменной pi во время каждой итерации. Что вам нужно сделать, это взять сумму всех итераций. Поэтому вам нужно сохранить предыдущее значение pi и добавить к нему текущий коэффициент. Наконец, формула суммирования Лейбнера возвращает pi/4, а не pi. Поэтому вы должны изменить возвращаемое значение пи * 4.

public static void main(String[] args) 
{ 
    double pi = computePi(100000); 
    System.out.println(pi); 
} 

public static double computePi(int count) 
{ 
    double pi = 0; 

    for(int i = 0; i < count; i++) 
    { 
     pi += Math.pow(-1,i)/(2*i+1); 
    } 
    return pi * 4; 
} 

Заключительное примечание: когда вы передаете параметр, вам не обязательно нужно восстановить его в переменную. Просто используйте значение параметра.

0

В вашем коде есть ряд проблем. Например, вы не печатаете результат своей функции. Для другого, ваша реализация, кажется, отключена. Я думаю, что вы хотели,

public static void main(String[] args) { 
    double pi = computePi(100000); 
    System.out.println(pi); 
} 

public static double computePi(int count) { 
    double pi = 1; 

    for (int i = 3; i < count; i += 4) { 
     pi = pi - (1/(double) i) + (1/(double) (i + 2)); 
    } 
    return pi * 4; 
} 

Выход

3.141612653189785 

Или вы можете использовать встроенный в Math.PI постоянной,

System.out.println(Math.PI); 

Выход

3.141592653589793 
Смежные вопросы