用c语言编写函数fun求圆周率的近似值
时间: 2024-11-27 18:24:38 浏览: 0
在C语言中,计算圆周率π的精确值通常是不可能的,因为π是一个无理数,有无限多位。不过,我们可以采用一些数值积分的方法,比如蒙特卡洛模拟法,来估算π的值。以下是一个简化的例子,使用了随机数生成来近似π的面积与单位正方形面积的关系,进而估算π:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h> // 包含time()函数
#define SQUARE_SIZE 100 // 单位正方形边长
#define NUM_SAMPLES (SQUARE_SIZE * SQUARE_SIZE) // 样本点的数量
double fun(double x, double y) { // 目标区域在x^2+y^2<=1内,所以返回1
if (x*x + y*y <= 1) {
return 1;
} else {
return 0;
}
}
double estimate_pi(void) {
srand(time(0)); // 设置随机种子,保证每次运行结果不同
double total = 0;
for (int i = 0; i < NUM_SAMPLES; i++) {
double x = (double)rand() / RAND_MAX;
double y = (double)rand() / RAND_MAX;
total += fun(x, y); // 统计落在单位圆内的点数
}
double pi_estimate = 4 * (total / NUM_SAMPLES);
return pi_estimate;
}
int main() {
double pi_approx = estimate_pi();
printf("Approximate value of Pi using Monte Carlo method: %.8f\n", pi_approx);
return 0;
}
```
这个`fun`函数用于判断给定点是否在单位圆内,然后`estimate_pi`函数通过生成大量随机点统计落入圆内的比例乘以4来得到π的估计。
阅读全文