1. 求sinx的近似值
已知:
求sinx的近似值,要求误差小于。
思路:
声明变量inc和s,inc表示增量,s表示sinx的值。当inc的绝对值 < 精度时结束循环,每次循环先让s累加,再更新inc。
#define eps 1e-8 // 精度
#include <stdio.h>
#include <math.h>
double Sin(double x)
{
double inc = x;
double s = 0.0;
int i = 1;
while (fabs(inc) >= eps) // fabs用于求绝对值,头文件math.h
{
s += inc;
inc *= -x * x / ((2 * i + 1) * (2 * i));
i++;
}
return s;
}
int main()
{
double x = 0.0;
scanf("%lf", &x);
printf("%lf\n", Sin(x));
return 0;
}
2. 求π的近似值
已知:
求π的近似值,要求误差小于。
思路:
声明变量tmp和halfpi,tmp表示前n项的积,halfpi表示π/2的值,当tmp - halfpi < 精度时结束循环,每次循环先把tmp赋值给halfpi,再更新tmp。
#define eps 1e-5 // 精度
#include <stdio.h>
double Pi()
{
double tmp = 1.0;
double halfpi = 0.0;
int i = 1;
while (tmp - halfpi >= eps)
{
halfpi = tmp;
tmp *= ((2 * i * 1.0) / (2 * i - 1)) * ((2 * i * 1.0) / (2 * i + 1));
i++;
}
return 2 * halfpi;
}
int main()
{
printf("%lf\n", Pi());
return 0;
}