使用系列tan {-1}(x)= x - x3 / 3 + x5 / 5 - x7 / 7 + ...来计算pi的值。收敛有多快? 我的尝试:
/* Calculating the value of pi */
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// To calculate tan inverse
float CalculateInverseTan(float fX)
{
float fY = 0;
float fSign = 1;
float fTerm = 0;
int iii = 1;
do
{
float fPow = 1;
int jjj;
// Calculating the power
for (jjj = 1; jjj <= iii; jjj++)
{
fPow *= fX;
}
fTerm = fSign * (fPow / iii);
fY += fTerm;
iii += 2;
fSign *= -1;
} while (fTerm > 0.0001 || fTerm < -0.0001);
return fY;
}
int main()
{
printf("Let x = tan^(-1)(1).\n");
time_t start = time(0);
float fTanInverse1 = CalculateInverseTan(1);
time_t end = time(0);
printf("Therefore x = %f. Time of convergence = %f sec.\nAs x = pi/4, therefore pi = 4x.\nTherefore pi = %f\n", fTanInverse1, difftime(start, end), 4 * fTanInverse1);
return 0;
}
我设法计算了pi的值。但收敛的时间总是为0。
答案 0 :(得分:3)
看起来你的程序在&lt; 1
秒?
如果是这种情况,您会得到0
的结果,因为time
函数的分辨率仅为1
秒。
您可以使用clock
函数来测量CPU的滴答时间,然后将其转换回秒。
答案 1 :(得分:2)
使用此方法。
#include <time.h>
int main() {
clock_t start, end;
double cpu_time_used;
start = clock();
… /* Do the work. */
end = clock();
cpu_time_used = ((double) (end - start)) / CLOCKS_PER_SEC;
return 0;
}
答案 2 :(得分:0)
使用cpu时间 要获得进程CPU时间,您还可以使用时钟功能。这也在头文件`time.h&#39;中声明。 你可以使用这样的代码,
`double cpu_time;
clock_t start = clock();
/ *你的功能* /
clock_t end = clock();
cpu_time =((double)(end - start))/ CLOCKS_PER_SEC;`