Чтобы вычислить значение числа «пи» на языке программирования C, существует несколько методов. Вот несколько распространенных подходов:
- Использование формулы Лейбница: Формула Лейбница для числа Пи представляет собой бесконечный ряд, сходящийся к числу Пи/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;
}
- Использование моделирования Монте-Карло: методы Монте-Карло используют случайные числа для решения математических задач. Генерируя случайные точки внутри квадрата и определяя соотношение точек, попадающих в четверть единичного круга, вы можете оценить значение числа “пи”.
#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;
}
- Использование ряда Нилаканты. Ряд Нилаканты — это еще один бесконечный ряд, сходящийся к числу Пи. Он предполагает вычитание дробей из начального значения 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;
}