PTA 7-214 泰勒级数展开近似sin(x)的值

PTA 7-214 泰勒级数展开近似sin(x)的值

分数 10
作者 chenmin
单位 福建工程学院

编写程序,从键盘输入x,利用幂级数展开计算sin(x)的近似值,要求某一项绝对值误差小于10^-5。
公式如下:

sinx.png

方法提示:对于类似的数列求和问题,关键是抽象出第i项的通用公式,将推导出的通用第i项累加到sum,直到第i项的绝对值小于1e-5为止。另外,注意奇偶项符号的处理。

输入格式:
输入x。

输出格式:
sin(x)的逼近结果。

输入样例:
在这里给出一组输入。例如:

0.5233

输出样例:
保留4位小数。例如:

0.4997

代码长度限制
10 KB
时间限制
200 ms
内存限制
32 MB

#include <stdio.h>
#include <math.h>
int factorial(int i){    //求阶乘
    if(i == 0)
        return 1;
    if(i >= 1)
        return factorial(i - 1) * i;
}
int main(){
    double x, sum = 0.0;
    scanf("%lf", &x);
    int i = 1;    //第一项
    while(fabs(1.0 * pow(x, 2 * i - 1) / factorial(2 * i - 1)) >= pow(10, -5)){
        //当第i项的绝对值小于10^-5时循环结束
        if(i % 2 == 1){    //当第i项为奇数时
            sum += 1.0 * pow(x, 2 * i - 1) / factorial(2 * i - 1);    //通项公式
        }else if(i % 2 == 0){    //当第i项为偶数时
            sum -= 1.0 * pow(x, 2 * i - 1) / factorial(2 * i - 1);
        }
        i++;    //下一项
    }
    printf("%.4lf\n", sum);    //输出和(注意保留4为小数)
    return 0;
}

解题思路:
step1:定义求阶乘的函数
step2:用 “第i项的绝对值小于1e-5” 作为循环结束的条件
step3:判断奇数项(+);偶数项(-)

归属知识点:
循环结构
递归函数
选择结构
数学函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值