关于求圆周率PI的近似值的问题(两种算法精度相差很大,想知道是由哪一步引起的)
用π/4=1-1/3+1/5-1/7+.....的公式求π的近似值算法一和算法二精度相差很大,是不是因为算法一中pi=pi+t,而算法二中pi=pi+t1+t2,由于算法二是两个值一起加在pi原先的值上,所以导致误差更大?
算法一:(用S表示符号位,没加上一个新的值符号变化一次),此法得到结果为3.141594
#include<stdio.h>
#include<math.h>
void main()
{
int n;
float pi,t1,t2;
n=1;
pi=1;
t1=1;
t2=1;
while(fabs(t2)>=1e-6)
{
n=n+2;
t1=-t1;
t2=t1/n;
pi=pi+t2;
}
pi=4*pi;
printf("pi is %f",pi);
}
算法二:每循环一次负正两项一起加,此法得到结果是3.141802
#include<stdio.h>
#include<math.h>
void main()
{
int n;
float pi,t1,t2;
n=1;
pi=1;
t2=1;
while(fabs(t2)>=1e-6)
{
t1=-1.0/(n+2);
t2=1.0/(n+4);
pi=pi+t1+t2;
n=n+4;
}
pi=4*pi;
printf("pi is %8.6f",pi);
}