prolog中的部分分数

时间:2014-08-22 03:53:39

标签: prolog

我想写一个Prolog程序来做部分分数。 例如: - 输入2 /(x + 1)(x + 2)输出2 /(x + 1)-2 /(x + 2)。

在Prolog中这是可能的吗?我可以参考什么来编写这个程序,或者我可以使用任何示例程序?

2 个答案:

答案 0 :(得分:0)

Prolog实现通常带有数字约束包,但这些包非常有限,无法处理很多基本的计算机代数问题。我从未见过能处理多项式的那个。

所以基本上,你必须实现足够的计算机代数包来解决这些问题。如果你擅长prolog,那么它就不会比用其他语言更难 - 而且如果你可以利用prolog的内置模式匹配和搜索而不会被他们的限制绊倒,可能会更容易。如果你需要一些其他类型的搜索而不是深度优先,那么你将不得不做一些工作来实现它 - 很多关于prolog的书都会给出例子。同样,如果你需要保存关于搜索的非逻辑信息,你需要做一些超出语言自然的工作。

20或30年前,有人无休止地兜售一个天真的计算机代数系统作为序言库。据我所知(我不太了解),图书馆没用。

答案 1 :(得分:0)

您可以查看此algebra包。前段时间我曾尝试在SWI-prolog中重复使用它,但根本不是很有趣......

无论如何,我引用了simpsv.pro:

  

如何使用该程序的示例:

    to simplify the expression
                                         (2*1)*(x^(2-1))
        one can

            a) simply enter
                                         s( (2*1)*(x^(2-1)), Z).
               after the Prolog prompt,
        or
            b) enter
                                          Y = (2*1)*(x^(2-1)),
                                          s( Y, Z).
               after the prompt.

        In both cases a two pass simplification is performed.

编辑如果您有兴趣,我已经清理了语法,如果SWI-Prolog可以接受的话。最后,请告诉我。