首页 > 解决方案 > (wx)Maxima:将“equal”与浮点数结合使用的最佳实践是什么?

问题描述

我正在处理具有以下形式的数据:

/* initial value */
  xi:-8$ 

/* intermediate value */
  a:-0.2$ 

/* final value */
  xf:8$

/* step size */
  dx:0.1$ 

/* first list of values */
  x1:makelist(i,i, xi, a, dx)$

/* second list of values */
  x2:makelist(i, i, a, xf, dx)$

然后,

is(equal(last(x1), first(x2)));

返回false

我想避免这个问题的最简单方法是dx = 1/10在给定的例子中定义;但是,我想知道如果无法控制数据,可以使用哪些策略?

我考虑过类似的东西is(equal( floor(last(x1)*10)/10, floor(first(x1)*10)/10 ));但是,这种方法似乎不能很好地推广到人们不知道先验数量的数量级的情况。

是否有一些版本的equal浮点数只检查一定的十进制精度?我检查了“数字函数”和“相等”的文档,但没有看到任何适用的内容(AFAICT)。

标签: floating-pointequalitymaximawxmaxima

解决方案


推荐阅读