是否有一种方法可以更准确地确定两种语言中的哪种语言中的哪种方法

Is there a way to determine which of two languages is calculating more accurately?

本文关键字:方法 语言 两种 一种 是否      更新时间:2023-10-16

情况:我正在以两种单独的语言(C & Scilab)运行相同的计算。当使用诸如sin()和exp()之类的先验函数时,结果略有变化。我假设这种很小的差异是由于以下原因:

IEEE标准不需要超越功能才能完全圆形,因为餐桌制造商的困境。

来源:每个计算机科学家对浮点算术都应了解的内容。

问题:我是否可以通过我的特定计算中确定哪种(如果两种语言)更准确,没有手动执行计算?

我正在考虑简单地将计算放入Wolfram alpha中,并查看两者中的哪一个准确地持有更长的时间。不幸的是,我正在等待这个问题(关于Wolfram Alpha的准确性)。

注意:在发布此问题后,我仍将尝试上述Wolfram方式,但是是否有一些更容易,更有效的方法来确定两种语言中的哪种语言中的哪种方法更准确?

从技术上讲,对此有初步讨论:精度与准确性不同。准确性是对您的计算与真实价值的近距离的衡量;精度是对彼此的许多计算有多近的测量。如果您从一组计算结果的概率分布方面思考,您会更好地理解。因此,例如,精确度的精度可能很差。帖子的标题是关于准确性的,但在体内,您提到了精确度。我想你的意思是准确性

也就是说,没有一般答案。您可以使用许多方法,实际上无限算法可以满足您的需求。您需要:

  • 像GMP这样的图书馆,如已经建议的
  • 纸和铅笔评估算法的精度

为什么?您需要以要比要比较的两个结果来评估sin(x)。先验功能的算法和算法是序列。因此,您必须估计算法误差如何 - 在某些情况下仍然是表示错误 - 会影响您的计算。在这一点上,实现您选择的方法,并评估结果与其他两个之间的距离,确保影响结果的总误差小于某些可控常数。

作为一个例子,可以使用通常的指数taylor扩展来评估exp(10),并使用许多术语进行评估;但是,如果您对exp(-10)使用相同的方法,则可能会失败,因为其扩展具有交替的符号项。这意味着您可能会产生可能积累的效果。您不想要这个,否则您可能会精确,但有偏见,在计算中不准确。通常使用GMP是因为它是为此设计的。

因此,例如,您可能会发现Scilab最适合计算exp(-10),而exp(10)中的C 是因为它们可以使用不同的实现。

摘要:使用GMP,并寻找准确的算法。例如,如果您需要一些特定的傅立叶求和的准确结果,或者是必须评估其他先验术语的一系列,则可能有效,也可能是唯一的解决方案。但是,如果您只需要此答案来简单sinexp,则应该查找表,仅此而已。

如果您想要一致的先验数学功能的准确性,我建议您自己写自己的文章。

有多种实现诸如sin等功能的方法。有些使用值表(例如,小型嵌入式系统平台)来计算。

超越数学功能的实现通常取决于语言实现者。

顺便说一句,一般实现是空间,速度和准确性之间的中间立场。高度准确的版本可能需要大量空间或很多时间。

至少如果您拥有自己的实现,可以控制准确性,而不是猜测语言实现的准确性。