如何编写Prolog数学函数

时间:2014-04-24 02:07:18

标签: math prolog

如何在Prolog中编写以下算术表达式?

sqrt(9*log10(X)/5,9) * (1-(2X*sqrt(X)/5))^(2/7)

平方根正在使用第9个根。

1 个答案:

答案 0 :(得分:4)

Prolog实现之间存在一些差异,但我可以向您保证以下内容:

  1. 2X除了计算机代数系统外,无法在任何地方工作。
  2. sqrt表示平方根。如果你想取第9个根,你必须使用小数指数,例如X ** (1/9)
  3. ISO打算^进行整数取幂,**进行浮点取幂。显然,2/7不是整数。
  4. 因此,你可能想要的表达是这样的:

    Y is (9 * log10(X) / 5) ** (1/9) * (1 - (2 * X * sqrt(X) / 5)) ** (2/7).
    

    注意我自由使用空格。毕竟,它是免费的。

    对于各种输入,我得到了很多未定义的错误,因为你不能将负数用于分数幂。我怀疑这意味着我们中的一个人有一个优先级错误,只有那些知道这个公式是什么并且可以与原始公式进行比较的人才能解决。

    将来,用A)你尝试过的事情增加你的问题是个好主意,B)你的问题到底是什么。这个问题看起来很像"为我做的工作"这可能是它被低估的原因。