Вычисление числа Пи на языке C: методы и примеры

Чтобы вычислить значение числа «пи» на языке программирования C, существует несколько методов. Вот несколько распространенных подходов:

  1. Использование формулы Лейбница: Формула Лейбница для числа Пи представляет собой бесконечный ряд, сходящийся к числу Пи/4. Вы можете вычислить число Пи, суммируя члены ряда, пока не достигнете желаемого уровня точности.
#include <stdio.h>
double calculatePiLeibniz(int iterations) {
    double pi = 0.0;
    int sign = 1;
    for (int i = 0; i < iterations; i++) {
        double term = 1.0 / (2 * i + 1);
        pi += sign * term;
        sign *= -1;
    }
    return 4 * pi;
}
int main() {
    int iterations = 1000000;
    double pi = calculatePiLeibniz(iterations);
    printf("The value of pi is approximately: %.15f\n", pi);
    return 0;
}
  1. Использование моделирования Монте-Карло: методы Монте-Карло используют случайные числа для решения математических задач. Генерируя случайные точки внутри квадрата и определяя соотношение точек, попадающих в четверть единичного круга, вы можете оценить значение числа “пи”.
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
double calculatePiMonteCarlo(int iterations) {
    double count = 0.0;
    for (int i = 0; i < iterations; i++) {
        double x = (double)rand() / RAND_MAX;
        double y = (double)rand() / RAND_MAX;
        double distance = sqrt(x * x + y * y);
        if (distance <= 1.0) {
            count++;
        }
    }
    return 4 * count / iterations;
}
int main() {
    int iterations = 1000000;
    double pi = calculatePiMonteCarlo(iterations);
    printf("The value of pi is approximately: %.15f\n", pi);
    return 0;
}
  1. Использование ряда Нилаканты. Ряд Нилаканты — это еще один бесконечный ряд, сходящийся к числу Пи. Он предполагает вычитание дробей из начального значения 3.
#include <stdio.h>
double calculatePiNilakantha(int iterations) {
    double pi = 3.0;
    int sign = 1;
    int denominator = 2;
    for (int i = 0; i < iterations; i++) {
        double term = (double)sign * 4 / (denominator * (denominator + 1) * (denominator + 2));
        pi += term;
        sign *= -1;
        denominator += 2;
    }
    return pi;
}
int main() {
    int iterations = 1000000;
    double pi = calculatePiNilakantha(iterations);
    printf("The value of pi is approximately: %.15f\n", pi);
    return 0;
}