我想写一个Prolog程序来做部分分数。 例如: - 输入2 /(x + 1)(x + 2)输出2 /(x + 1)-2 /(x + 2)。
在Prolog中这是可能的吗?我可以参考什么来编写这个程序,或者我可以使用任何示例程序?
答案 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可以接受的话。最后,请告诉我。