我编写了一个 C 程序来计算沿路径的微分方程的解。该代码已使用 double 完成。
我不明白为什么我只得到 10^-21(绝对错误)的错误。假设 double 只提供大约 16 位精度。
误差是计算出来的,但计算了一个常量的差值,该常量在数学过程中已知是不变的,以找到解决方案。这方面的细节无关紧要。我的问题只是如何才能获得比使用的假定精度限制更少的错误。
使用 gcc 我有以下精度参数:
Min Epsilon Double: 0.000000000000000222044604925031
Digits mantissa (bit precission) double: 53
非常感谢。
最佳答案
答案可能是你在 x86/x86_64 上使用 GCC,计算不是太复杂,所以编译器优化它们以在具有 long double
的 80 位浮点寄存器内部处理。精度,从而为您提供更好的结果。
或者可能是你用精度这个词来描述绝对误差,而当实际值在10-5的量级时sup>,相对误差在10-16量级,绝对误差在10-21量级.
或其他,视上下文而定。 你看,细节实际上是相关的。
关于c - C 程序中的错误小于预期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22858068/