根据泰勒展开,用迭代法求sinx的近似值,其中:
要求误差小于0.0001。
分析:每一项item(不计符号)都可以由前一项乘以 得到,其中,第一项得到第二项, n 为1。
代码实现:
#include<iostream>
using namespace std;
int main()
{
const double epsilon=0.0001; //误差
double x,sinx,item;
int n=2,sign=-1; //n用来表达累加项之间的关系,sign保存符号
cin>>x;
sinx=x;
item=x*x*x/6; //第二项
while(item>epsilon){ //当误差大于epsilon时进行循环
sinx+=item*sign; //得到泰勒展式的前两项
sign*=-1; //相邻两项符号相反
item*=x*x/((2*n)*(2*n+1)); //相邻两项之间的关系,注意n的取值
n++;
}
cout<<sinx<<endl; //输出近似值
return 0;
}
tips:寻找累加项的相邻两项之间的关系