Wolfram mathematica 把东西放进去

Wolfram mathematica 把东西放进去,wolfram-mathematica,Wolfram Mathematica,我正在生成一个替换规则列表,如下所示 ops = {LessEqual, GreaterEqual}; ineqRules = Table[HoldPattern[Inequality[a_, op1, c_, _, e_]] -> a == c, {op1, ops}] ops={LessEqual,GreaterEqual}; ineqRules=Table[HoldPattern[不等式[a_u,op1,c_u,u,e_u]]->a==c,{op1,ops}] 由于HoldPattern将

我正在生成一个替换规则列表,如下所示

ops = {LessEqual, GreaterEqual}; ineqRules = Table[HoldPattern[Inequality[a_, op1, c_, _, e_]] -> a == c, {op1, ops}] ops={LessEqual,GreaterEqual}; ineqRules=Table[HoldPattern[不等式[a_u,op1,c_u,u,e_u]]->a==c,{op1,ops}] 由于HoldPattern将“op1”隐藏在表中,所以上述操作不起作用,如何修复它


这是上一篇文章的后续

我相信应该有更好的方法,但这似乎有效:

ops = {LessEqual, GreaterEqual};
ineqRules[op_] := HoldPattern[Inequality[a_, op, c_, _, e_]] -> a == c;
ineq = Table[ineqRules[op], {op, ops}];
Inequality[1, LessEqual, x, Less, 2] /. ineq

Out: 1 == x

编辑

小心这一点:

Inequality[e1, GreaterEqual, e2, Equal, e3] /. ineq
Out> e1 == e2
但是

我想如果需要的话,需要一些野兽离开那里。。。让我们知道

怎么样

ops = {LessEqual, GreaterEqual};    
ineqRules = (HoldPattern[Inequality[a_, #, c_, _, e_]] :> a == c) & /@ ops
编辑:要解决belisarius答案中指出的问题,请尝试:

ineqRules=Flatten[{HoldPattern[Inequality[a_,#,c_,___]]:>a==c,HoldPattern[#[a_,c_]&&___]:>a==c}&/@ops]
这显然取决于你有一个简单的结构开始,即没有其他的&&。

这是一个工作与:


这是因为不等式[1,GreaterEqual,x,Less,2]的计算结果为和[GreaterEqual[1,x],Less[x,2]],同样的问题出现在我的答案中……谢谢,它是有效的。这实际上是尝试这样做的一部分,但事实证明,简单地用==替换>=并不能给出该区域的顶点
ineqRules=Flatten[{HoldPattern[Inequality[a_,#,c_,___]]:>a==c,HoldPattern[#[a_,c_]&&___]:>a==c}&/@ops]
ops = {LessEqual, GreaterEqual};
ineqRules =
  Table[
    With[{op1=op1},
      HoldPattern[Inequality[a_, op1, c_ ,_ ,e_]] -> a == c
    ],
    {op1, ops}
  ]