c#利用级数求PI:使用格利高利公式求PI的近似值,直到最后一项的绝对值小于10-6为止。
时间: 2024-10-25 20:12:29 浏览: 17
KF-Tools-3:Windows用户的多功能快捷工具。 这是Delphi于2005年完成的一项旧爱好项目
在C#中,我们可以使用格雷戈里莱布尼茨级数(Gregory-Leibniz series)来估算圆周率π的值。这个级数是一个无限序列,每一项的绝对值递减,可以表示为:
π/4 = 1 - 1/3 + 1/5 - 1/7 + 1/9 - ...
为了精确到10^-6,我们需要不断添加和计算序列的项,直到累积误差小于给定阈值。以下是简单的步骤和代码实现:
1. 初始化变量:设初始值为π/4,精度(最大误差)为10^-6,当前指数为1(对应于序列中的-1/3),正负标志为+1。
```csharp
double pi = 4.0;
double precision = Math.Pow(10, -6);
int index = 1;
double sign = 1;
```
2. 循环计算:在一个无限循环中,每次迭代更新π的值,并检查当前项的绝对值是否小于精度。
```csharp
while (true)
{
double currentTerm = sign * (1.0 / (2 * index - 1));
pi += currentTerm;
if (Math.Abs(currentTerm) < precision)
break; // 一旦满足精度条件,跳出循环
index++;
sign *= -1; // 改变正负标志
}
```
3. 返回π的估计值:最后返回四倍的结果作为π的近似值。
```csharp
pi *= 4;
return pi;
```
完整代码示例:
```csharp
public static double ApproximatePi()
{
double pi = 4.0;
double precision = Math.Pow(10, -6);
int index = 1;
double sign = 1;
while (true)
{
double currentTerm = sign * (1.0 / (2 * index - 1));
pi += currentTerm;
if (Math.Abs(currentTerm) < precision)
break;
index++;
sign *= -1;
}
pi *= 4;
return pi;
}
// 使用
double estimatedPi = ApproximatePi();
Console.WriteLine($"Estimated value of π is: {estimatedPi}");
```
阅读全文