如何使用梯形方法将精度检查添加到计算中

How to add accuracy check to a calculation using the trapezoidal method

提问人: 提问时间:4/29/2022 最后编辑:Jonathan Leffler 更新时间:4/29/2022 访问量:39

问:

我设法进行了计算,但我不明白如何检查准确性:

#include <stdio.h>
#include <math.h>
int main()
{
    double a, b, h, s, x;
    int i, n;
    printf("Enter a, b, n: ");
    scanf("%lf %lf %d", &a, &b, &n);
    h = (b - a) / n;
    x = a;
    s = 0;
    for (i = 1; i < n; i++)
    {
        x = x + h;
        s = s + pow(x, 3) * exp(2 * x);
    }
    s = h * (pow(a, 3) * exp(2 * a) + pow(b, 3) * exp(2 * b) + 2 * s) / 2;
    printf("Integral = %lf\n", s);
}
c 数学 计算 浮点精度

评论

0赞 pm100 4/29/2022
这里计算的是什么,使用什么算法
1赞 Jonathan Leffler 4/29/2022
一项检查是比较 with 的最终值 — 在计算时,由于舍入效应,两者可能不同。Kernighan 和 Plauger 在他们古老而经典的著作《The Elements of Programming Style》中说: * 一位睿智的老程序员曾经说过:“浮点数就像一小堆沙子;每移动一次,你就会失去一点沙子,增加一点泥土”。他们还说: * 10 * 0.1 几乎从来都不是 1.0 这两种说法都指出浮点运算并不精确。xbh
0赞 Eric Postpischil 4/29/2022
@pm100:该代码使用梯形规则,使用 n 个梯形近似曲线 x^3•e^2x 下从 x=a 到 x=b 的面积。
1赞 Eric Postpischil 4/29/2022
本文将讨论误差分析。

答: 暂无答案