编写程序,从键盘输入x,利用幂级数展开计算sin(x)的近似值,要求某一项绝对值误差小于10^-5。 公式如下:
方法提示:对于类似的数列求和问题,关键是抽象出第i项的通用公式,将推导出的通用第i项累加到sum,直到第i项的绝对值小于1e-5为止。另外,注意奇偶项符号的处理。
输入格式:
输入x。
输出格式:
sin(x)的逼近结果。
输入样例:
在这里给出一组输入。例如:
0.5233
输出样例:
保留4位小数。例如:
0.4997
代码如下:
#include<iostream>
#include<math.h>
#include<iomanip>
using namespace std;
int main()
{
double x,ans=1e-5;
cin>>x;
double sum=x;
int i=3;
while(1)
{
double zi1=1,mu1=1;
for(int j=i;j>0;j--)//分子表示x的n次方,分母表示i的阶乘
{zi1=zi1*x;
mu1=mu1*j;}
ans=zi1/mu1;
if(i%4==3)//判断是否第偶数项,是需要加负号
ans=-ans;
if(fabs(ans)<=1e-5)
break;//若第i项小于等于1e-5,则退出循环
sum=sum+ans;
i+=2;
}
cout<<fixed<<setprecision(4)<<sum;//输出保留四位小数的sum值
}