wxMaxima:寻找最接近的 larger/smaller 数字

wxMaxima: Finding the closest larger/smaller number

如何从最大值列表中找到最接近的大数和最接近的小数?我应该探索哪些最大值函数?

这是一个基于查找小于或大于 x 的元素子列表并返回最大或最小此类元素的解决方案。如果没有这样的元素,则返回 false

(%i4) next_smaller (L, x) := 
         (sort(L), 
          sublist (%%, lambda ([y], y < x)),
          if %% # [] then last(%%)) $
(%i5) next_larger (L, x) := 
          (sort(L),
           sublist (%%, lambda ([y], y > x)), 
           if %% # [] then first(%%)) $
(%i6) list: [0, 0.014, 0.021, 0.028, 0.042, 0.056, 0.07, 0.084, 0.11, 0.17, 0.28, 0.42, 0.56] $
(%i7) next_smaller (list, 0.04);
(%o7)                                0.028
(%i8) next_larger (list, 0.04);
(%o8)                                0.042
(%i9) next_larger (list, 0.56);
(%o9)                                false
(%i10) next_smaller (list, 0.56);
(%o10)                               0.42
(%i11) next_smaller (list, 0);
(%o11)                               false
(%i12) next_larger (list, 0);
(%o12)                               0.014
(%i13) next_larger (list, -1);
(%o13)                                 0
(%i14) next_smaller (list, -1);
(%o14)                               false
(%i15) next_smaller (list, 1);
(%o15)                               0.56
(%i16) next_larger (list, 1);
(%o16)                               false

这些函数可能会变得更有效率,但您可能只有在处理长列表时才会注意到其中的区别。也许在尝试优化之前看看这是否有效。