// pi.c
// Experiment for PI calculation via Riemann Integral
// By Tangent, [email protected]
#include <stdio.h>
#include <math.h>
int main(int argc, char **argv)
{
// Our formula: PI=4* S(a,b, sqrt(1-x^2), dx
register double dx = pow(10,-7);
printf("Experimental dx value is %.7f\n",dx);
register double S=0.0;
for(register double x=0.0; x<=1; x+=dx)
{
printf("[LAP]\tx=%.7f\t",x);
register double x_pow = pow(x,2);
printf("x_pow=%.16f\t",x_pow);
register double xp_1 = 1-x_pow;
printf("xp_1=%.20f\t",xp_1);
register double x_sqrt = sqrt(xp_1);
printf("x_sqrt=%.40f\t",x_sqrt);
register double _S = x_sqrt*dx;
printf("PIECE=%.40f\t",_S);
S = S+_S;
printf("S=%.45f\n",S);
}
register double pi_res=0.0;
pi_res = S*4;
printf("===Results got===\nPI=%.128f\n",pi_res);
return 0;
}
uj5u.com熱心網友回復:
這個代碼有啥問題呢?register關鍵詞的優化如果不支持,你可以直接洗掉
把回圈這樣改一下,精度更高一些, 如果你明白定積分就不用解釋, 不明白解釋也白解釋
for(register double x=0.5*dx; x<=1; x+=dx)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/143457.html
標籤:C語言
上一篇:哪位大神知道Devc++怎么搞啊
下一篇:小知識
