首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Prolog求解一个方程组

用Prolog求解一个方程组
EN

Stack Overflow用户
提问于 2013-04-13 01:01:51
回答 1查看 3.5K关注 0票数 7

假设我有一个数字X,我想要解一组方程,比如Y+Z=X,Z*Y = 1。

现在,解Y=1/Z和Z= (sqrt(X*X-4)+X)/2或(X-(sqrt(X*X-4)/2。

所以我可以用Prolog写:

代码语言:javascript
复制
solve(X,Y,Z):- Y is (sqrt(X*X-4)+X)/2, Z is 1/Y.
solve(X,Y,Z):- Y is (X-(sqrt(X*X-4)))/2,Z is 1/Y.

这是可行的。

这需要我做大量的前期工作,基本上是事先解决它,然后让Prolog来评估答案。

有没有什么方法可以让我得到Z和Y,而不需要事先求解X?

我不能只写像这样的东西

代码语言:javascript
复制
solve(X,Y,Z):- X is Y+Z, Z is 1/Y.

因为实例化错误。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-13 01:24:37

我认为你需要一个CAS,来象征性地解决这个系统,就像你“手工”做的那样。这样的软件既不容易找到,也不容易构建。

如果实用的方法可以为您做到这一点,库(clprq)可以提供帮助:

代码语言:javascript
复制
:- [library(clpr)].
solve(X,Y,Z) :- {Y+Z=X, Z*Y=1}.

收益率

代码语言:javascript
复制
?- solve(3,Y,Z).
{Z=3.0-Y, -1.0+Z*Y=0.0},
{-1.0+Z*Y=0.0},
{-1.0+Z*Y=0.0}.

这有意义吗?

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15977010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档