【问题标题】:Inequality solving using Prolog使用 Prolog 解决不等式
【发布时间】:2014-11-23 07:11:49
【问题描述】:

我正在使用 prolog 解决不等式问题。我找到了一个代码,它可以解决 ax+b>=0 类型的方程。

我使用的代码如下。

:-use_module(library(clpr)).
dec_inc(left,right):-
      copy_term(left-right,Copyleft-Copyright).
      tell_cs(Copyleft).
      max(Copyright,right,Leq).
      tell_cs(Leq).

max([],[],[]).
max([E=<_|Ps],[_=<P1|P1s],[K=<P1|Ls]):-
      sup(E,K),
      max(Ps,P1s,Ls).

tell_cs([]).  
tell_cs([C|Cs]):-
      {C},
      tell_cs(Cs).

例如

  1. 当我们给出 {2*X+2>=5} 时。它给出了正确的答案。 {X>=1.5}。

    2.但是如果我输入像 {(X+3)/(3*X+1)>=1} 这样的分数。它给出 {1- (3+X)/ (1+3.0*X)=

如何解决这类不等式问题以找到最终答案。(包括分数的问题)。
请帮帮我。
如果有任何学习资料可以参考,请告诉我。

【问题讨论】:

  • 我怀疑您是否需要 CLP(R)。在 CLP(Q) 之后,这听起来要多得多。但两者都只有效地处理线性约束。
  • 否则将left替换为Left

标签: prolog inequalities clpq clpr


【解决方案1】:

library(clpr) 文档advises 它仅被动地处理线性约束,所以你运气不好。你需要一个更复杂的代数系统。

【讨论】:

  • 谢谢。在不编写新程序的情况下解决此问题的最简单方法是什么。我可以做任何更改???任何地方可以找到指导代码????/
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多