你会怎么写∀y∈R+,∃z∈R,e ^ z = y在伪码中?

时间:2017-01-02 17:35:47

标签: algorithm math computer-science proof

我正在阅读有关证据的文章,目前正在阅读Eric Lehman和Tom Leighton的计算机科学数学,他们在一个示例命题中说明了"因为z范围超过实数,e ^ z取得每个正数,实际价值至少一次"。我完全理解这个命题时遇到了麻烦。

我试图接近这是一个程序员,并想一想如果我看到它是真的,它会在伪代码中看起来像什么。

pr = [ all real positive numbers ]
r  = [ all real numbers ]

for y in pr:
    for z in r:

        e = pow(y, z)
        if e != y:
            goto outer

        print "this is true";

    outer

这是他们提出的建议吗?

3 个答案:

答案 0 :(得分:3)

∀y∈R+,∃z∈R,e ^ z = y

对于正实数集合中的所有y说,实数集合中存在z,例如exp(z) = y

您无法真正创建程序来验证这是否属实。最基本的原因是你会遇到以下问题之一

  1. 浮点数学不精确(必读Is floating point math broken?
  2. 实力是无限的
  3. 你可以检查每个浮点数(这需要很长时间,但理论上仍然可以计算),但你会

    1. 可能会出现z没有exp(z) = y的情况,因为z这样的exp(z) = y在浮动点数集合中不存在足够的z给你y 1}}
    2. 即使浮点数集合中的每个exp(z) = y都有R = [SET OF ALL REALS] R+ = FILTER (> 0) R (MAP (exp) R) == R+ ,对于R +中的所有y和R中的所有y都不会证明exp
    3. 总而言之,是的,你的伪代码在某种程度上代表了这个想法,但在计算机上检查它或者将其视为一个计算问题并不是很可行或合乎逻辑。

      修改: 以编程方式思考这个问题的最好方法就是这样

      e^n

      N.B。 e^x = SUM [ (x^k)/(k!) | k <- [SET OF ALL NATURALS]]表示2.718^x其中config.on.sessionExpired = function(next,retry){ }) 约为config

答案 1 :(得分:2)

如果您想象可以枚举所有正实数,而且在有限时间内这样做,那么您的思想实验的伪代码可能看起来更像这样:

pr = [ all real positive numbers ]
r  = [ all real numbers ]

for y in pr:
    for z in r:
        e = exp(z)
        if e == y:
            goto outer

    print "false"
    stop

    outer:

print "true"

与伪代码的主要区别在于:

  • (技术性)将pow(y, z)更改为exp(z)。这是z上的指数函数,或等效地, e 提升到 z th power

    < / LI>
  • 只有外部循环运行完成时才会发现命题为真(并且算法会打印出结果)

  • 如果在外循环的任何迭代中,内部的 运行完成(表示该迭代的 y 不是任何实际的指数)数字)那么命题被证明是错误的。在这种情况下,算法打印该结果并停止。整个命题失败只需要一个这样的实数 y

当然,描述命题的一种完全不同的数学方式是,它表示自然对数被定义并且对所有正实参数的实数进行求值。接下来是因为自然对数是指数的倒数,所以如果你取e^z = y两边的对数,你得到z = log(y)

答案 2 :(得分:0)

该命题由一个程序证明,该程序将找到任意y∈R+的z∈R,所以:

z = log(y);