高级程序设计训练

您所在的位置:网站首页 泰勒公式展开点与被展开点可以任意选择吗 高级程序设计训练

高级程序设计训练

2023-06-27 04:06| 来源: 网络整理| 查看: 265

给定一个精度值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