高级程序设计训练 |
您所在的位置:网站首页 › 泰勒公式展开点与被展开点可以任意选择吗 › 高级程序设计训练 |
给定一个精度值e,用下列公式计算sin(x)的近似值,要求前后两次迭代之差的绝对值小于e,给出相应的最小迭代次数n和最后一次计算的sin(x)值。 sin x = x - x3/3! + x5/5! - x7/7! + ... + (-1)n-1x2n-1/(2n-1)! 其中x为弧度,n为正整数。 【输入形式】 从控制台输入x( (00 )的值,以一个空格分隔。 【输出形式】 输出迭代次数n和最后一次计算的sin(x)的值(以一个空格分隔,并且输出sin(x)时要求小数点后保留9位有效数字)。 【样例输入】 1.23 0.0000001 【样例输出】 7 0.942488802 【样例说明】 输入的x为1.23,精度值e为0.0000001。当n为5时,利用上述公式计算sin(x)的值为0.942489044,n为6时计算的结果为0.942488800,两结果之差的绝对值约为0.000000244,大于要求的精度值0.0000001,故需要继续迭代计算。当n为7时计算的结果为0.942488802,与n为6的计算结果之差的绝对值约为0.000000002,小于要求的精度值,所以最小迭代次数应为7,最后一次计算的sin(x)的值为0.942488802(小数点后保留9位有效数字)。 注意: (1) 为保证计算精度,请使用double数据类型保存计算数据。 (2) 应至少迭代两次,即:n>=2。 #include #include #include int main() { double sin,e,x,s=1; int n=1,flag=0,i; double k=1; //k做阶乘结果时要设成double,要不然会溢出 double x1=1,temp; scanf("%lf",&x); scanf("%lf",&e); sin=x; while(s>=e) { n+=1; k=1; //注意:新一轮循环时,作为中间变量的k要归1 temp=sin; /* for(i=0;i |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |