首页 > 解决方案 > 最大值因非常简单的相等而失败(相等)

问题描述

我有一个非常简单的数值比较,最大值失败了。我打开了详细模式和调试模式,但看不到任何额外的细节。有什么我需要指定的吗(我为 fpprec 尝试了不同的值,但没有用)。

(%i2) is(equal(18225979/30454181, 0.5984721441039565));

(%o2)                                false

只要参数在小数点后最多等于 12 位,我希望最大值返回 true。提前感谢您的解决方案和建议。-布雷迪

标签: precisionequalsfractionsmaxima

解决方案


我认为您想要的是诸如is(abs(x - y)/abs(y) < 1e-12)在哪里x以及y有问题的数字之类的东西。

is(equal(x, y))实现为is(ratsimp(x - y) = 0). 这与对多个数字的简单测试有着微妙的不同。我的建议是测试上面建议的绝对相对差异。


推荐阅读