有点转向浮点(im)精度,第1部分

大多数数学家都认为:

e ?i + 1 = 0

但是,大多数浮点实现不同意。我们能够如何解决这一争端?

我热衷于听到不同的语言和实现,以及各种方法使结果尽可能接近零。有创意!

0
额外 编辑
意见: 4
@Foo Bah:我把你的编辑翻了回来,因为重点是它是一个包含0,1,i,e和?的表达式。如果您将其重写为 exp ,那么它会丢失它的“诗歌”。
额外 作者 Chris Jester-Young,
@FooBah:不正确。数学家(尤其是那些在浮点复杂性方面受过训练的人)并不同意 exp(pi * i)+ 1 = 0 。只有纯粹的数学形式才被接受为真实的。问题是探索浮点运算的“泄漏”。
额外 作者 Chris Jester-Young,
@FooBah:因为你正在使用 exp 来通过它的浮点数来证明它,这使得 exp 表单成为浮点域。显然,以浮点形式, exp(pi * i)+ 1!= 0 。因此,如果您更改为使用 exp ,则首先改变为 exp 的逻辑会伪造帖子的第一句。
额外 作者 Chris Jester-Young,
实际上。我需要一个E(| m-X | ^ 3)的上界,但是数量m本身 - 这是某种类似于均值或中值的集中趋势度量,也可能是有趣的。 (不过,我在证明中发现了一个解决这个问题的方法,所以现在问题纯粹是出于好奇的缘故。)
额外 作者 Robert Höglund,
@ ChrisJester-Young问题是关于表达式(pi * i)+ 1 的浮点评估,而不是数学美。
额外 作者 Foo Bah,
@ ChrisJester-Young请解释某人在数学水平上如何接受e **(?i)+ 1 = 0,但不能接受exp(?i)+ 1 = 0。如果您正在探索浮点问题,那么使用哪种表达式无关紧要 - 两者都是相同的。
额外 作者 Foo Bah,
尝试回答这个问题真的很不错,它有很多相辅相成的想法。 :)
额外 作者 Damian Lattenero,
我仍然困惑。您是在询问有关数量$ E(| m-X | ^ 3)$还是使$ E(| m-X | ^ 3)$最小化的$ m $?
额外 作者 mreggen,
只有大多数数学家?
额外 作者 biozinc,

6 答案

最小值$ m $是$ X $到由常数函数形成的$ L ^ p $的子空间上的最近点投影(在你的情况下$ p = 3 $)。这$ m $有时被称为$ p $ -prediction或$ p $ -predictor $ x $。显然,这个术语始于Andô和Amemiya 。稍后的一些论文是 Landers和Rogge (他写了一些其他论文,例如这一个)和 Cuesta和Matrán。 “广义(有条件)期望”一词也出现了。

5
额外

令f(x)为X的概率密度函数。我们可以定义X相对于m的右侧和左侧以及右侧矩如下:

相对于m = int _ [ - inf m](m-x)^ k f(x)dx的x的左侧单侧k阶矩

x关于m = int [m inf](x-m)^ k = f(x)dx的右手单边k阶矩dx

我们观察下面的类比

    中位数是第零个左侧和右侧单方面矩相等的统计量(第零个矩只是概率)
  1. 就其意思而言,第一个左右手片面的时刻是相等的。

  2. 对于问题中定义的统计量,第二个左侧和右侧片面时刻是相等的。

1
额外
该模式也是极限情况m-> 0;这是指向我在 terrytao.wordpress.com/ 2009/05/06 /在最fefferman-conferenc‌ e
额外 作者 Terry Tao,

E(| X-EX | ^ k)被称为随机变量X的第k个中心(或居中)矩。

1
额外

以下是我尝试过的实现和语言的简短列表。它按接近零排序:

  • Scheme: (+ 1 (make-polar 1 (atan 0 -1)))
    • ? 0.0+1.2246063538223773e-16i (Chez Scheme, MIT Scheme)
    • ? 0.0+1.22460635382238e-16i (Guile)
    • ? 0.0+1.22464679914735e-16i (Chicken with numbers egg)
    • ? 0.0+1.2246467991473532e-16i (MzScheme, SISC, Gauche, Gambit)
    • ? 0.0+1.2246467991473533e-16i (SCM)
  • Common Lisp: (1+ (exp (complex 0 pi)))
    • ? #C(0.0L0 -5.0165576136843360246L-20) (CLISP)
    • ? #C(0.0d0 1.2246063538223773d-16) (CMUCL)
    • ? #C(0.0d0 1.2246467991473532d-16) (SBCL)
  • Perl: use Math::Complex; Math::Complex->emake(1, pi) + 1
    • ? 1.22464679914735e-16i
  • Python: from cmath import exp, pi; exp(complex(0, pi)) + 1
    • ? 1.2246467991473532e-16j (CPython)
  • Ruby: require 'complex'; Complex::polar(1, Math::PI) + 1
    • ? Complex(0.0, 1.22464679914735e-16) (MRI)
    • ? Complex(0.0, 1.2246467991473532e-16) (JRuby)
  • R: complex(argument = pi) + 1
    • ? 0+1.224606353822377e-16i
0
额外
我非常喜欢这篇文章,非常感谢
额外 作者 Damian Lattenero,

是否有可能解决这一争端?

我的第一个想法是寻找一种符号语言,如枫树。我认为这不是浮点数。

事实上,如何用传统的编程语言来表示工程师的 i (或 j )?

也许一个更好的例子是sin(?)= 0? (或者我再次错过了这个观点?)

0
额外
事实上,这与罪是否很相似? = 0.同样,我在这里没有FP实现表明它是0,因此,我认为“争议”不能完全被100%解决。但由于我们正在谈论FP,所以大致的解决方案将不得不做。 :-P许多编程语言都有一个复数类,它只包含两个 double 。对我来说,这足够好,如果语言也有对其进行重载操作的设施(例如,在Python中使用 cmath 是可以的,尽管不是严格意义上的超载) 。我没有使用枫树,所以我不能表扬
额外 作者 Chris Jester-Young,

我同意瑞恩,你需要转移到另一个号码表示系统。该解决方案在浮点数学领域之外,因为您需要将pi表示为无限长的小数,所以任何有限的精度方案都不会起作用(至少在不使用某种巧妙因素来弥补丢失的情况下精确)。

0
额外