7-161 双曲余弦函数

文章介绍了如何利用麦克劳林公式和阶乘函数计算coshx的值,通过不断累加项直到达到指定的计算精度。在C语言实现中,使用while循环迭代,每次计算新的项temp,将其与当前精度比较,如果小于精度则结束计算,最后输出部分和作为结果。
摘要由CSDN通过智能技术生成

根据麦克劳林公式计算 coshx 的值。

输入格式

x ε

注:x 为指数,ε 为计算精度。

输出格式

y

注:y 为 coshx 的值。用 %f 格式限定符输出 6 位小数。

要求:所计算的最后一项的绝对值小于 ε。

输入样例

0.5 0.0000001

输出样例

1.127626

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

思路

输入指数 x 和给定的精度 e。变量 sum 初始化为 0,可以认为它是部分和。i 初始化为 0,表示迭代次数。

然后,在 while 循环中,不断计算新一项并累加到部分和 sum 中。每一次循环都会计算出一个项 temp,代表当前迭代的一项。这个项的系数由 x^(2i) 和 2i! 共同组成,因此我们自定义了一个求阶乘的函数 Factorial 来帮助计算。在计算 temp 后,我们需要判断其大小是否小于精度要求 e,如果满足条件,则跳出循环,否则就将该项累加到部分和当中,并继续下一次迭代。

最后,我们输出获取到的部分和 sum 作为最终结果即可。

需要注意的是,在进行浮点数之间的比较时,应该使用 fabs 函数来避免出现精度误差而导致的错误。

 代码:

#include <stdio.h>
#include <math.h>

// 定义函数Factorial求解给定的n阶乘
double Factorial(int n) {
    double sum = 1;
    for (int i = 2; i <= n; ++i) {
        sum *= i;
    }
    return sum;
}

int main() {
    double x, e, sum = 0,i=0.0;// i用来表示当前计算的项数,初始值为0
    scanf("%lf %lf", &x, &e);
    while (1) {
        // 计算出x^(2i) / (2i)!,使用自定义的Factorial函数求解分母的阶乘
        double temp = pow(x, 2 * i) / Factorial(2 * i);

        // 判断当前计算的项是否小于给定的精度要求e,如果小于则停止计算
        if (fabs(temp) < e) { 
            sum += temp; // 将结果累加到部分和sum中
            break;
        }

        sum += temp; // 否则将计算结果累加到部分和sum中
        i++; // 更新项数i,进行下一次的计算
    }

    printf("%.6lf", sum); // 输出最终的部分和作为结果

    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_60653932

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值