Nano Hash - криптовалюты, майнинг, программирование

Формула Лейбница для числа пи - Java

Итак, формула Лейбница для числа пи: пи/4 = 1 - 1/3 + 1/5 - 1/7 + 1/9... Я не могу понять, как использовать эту формулу в Java. Мне просто нужна помощь в том, как включить в него вторую часть. Я знаю, что мне нужен цикл, и мне нужна переменная делителя, и каждый раз ей нужно плюс 2. Спасибо за любую помощь.

01.10.2013

  • Я не хочу давать вам решение. На каждом шаге вашего цикла вы добавляете (+/-)1/(2*i+1), где i — это переменная цикла for. Что тут сложного? 01.10.2013
  • Я предлагаю вам написать как можно больше и включить это в вопрос. Я предлагаю оценивать два выражения одновременно. Это будет немного быстрее и будет иметь меньшую ошибку округления. Кстати, вы также можете рассчитать PI вместо PI/4. 01.10.2013

Ответы:


1

Как подсказка, это оптимизированная версия

long start = System.nanoTime();
double pi = 0;
for (int i = 1; i < 1000000000; i += 4) {
    pi += 8.0 / (i * (i + 2L));
}
long time = System.nanoTime() - start;
System.out.println(pi + " took " + time / 1000000 / 1e3 + " secs.");

отпечатки

3.1415926445762157 took 1.217 secs.

Если вы измените этот цикл так, чтобы он выполнялся в обратном направлении, а не в прямом, вы получите более точный результат. Это более точно, так как большие числа, добавленные в конце, скрывают часть накопленной ошибки округления для меньших значений.

3.141592651589793 took 1.222 secs.

Значение должно быть 3,14159265359.

01.10.2013

2

Цикл for должен выглядеть примерно так:

double sum=0;
double sign=1.0;
for(int i =1;i<=limit;i+=2)
{
    sum+=sign/i;
    sign* =-1;
}
01.10.2013
  • знак ок = знак*-1; можно заменить знаком *=-1; 01.10.2013
  • Это будет намного быстрее, если вы сможете удалить условие if. 01.10.2013
  • внес изменения! Теперь намного лаконичнее. 01.10.2013
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..