【发布时间】:2019-02-21 14:33:29
【问题描述】:
我有一些子句,其中头部表示线性方程中一组变量的名称和值,而主体表示实际方程。像这样:
:-use_module(library(clpr)).
relation(
independents([
var(x1, X1),
var(x2, X2),
var(x3, X3)
]),
dependent(
var(y, Y)
)
):- {Y = 3 + 0.5 * X1 + 0.6 * X2 + 0.7 * X3}.
有没有一种直接的方法来(间接地)得到这个方程的系数? IE。返回 coefficient(VARNAME, COEFFICIENT) 的规则,例如coefficient(x1, 0.5), coefficient(x2, 0.6) 等等。
我知道这似乎是一个愚蠢的问题,因为将所有系数都放在子句的头部很容易。但是在我的应用程序中,我希望这些子句的开头严格显示每个变量的值(而不是它们的系数)。 IE。避免歧义。
我目前的解决方案是一个复杂且不雅的解决方案,涉及 member/2、subtract/3、maplist/2 并将 X1、X2、X3 设置为 1 或 0 以计算每个斜率。
相关问题: Representing linear functions in prolog
谢谢!
/JC
【问题讨论】: