我如何修改这种不等式,以便Mathematica确认它们?

时间:2013-06-10 14:46:21

标签: wolfram-mathematica expression

我有很多这样的条件:

a (b c - (-1 + a) d (c + f g)) h > (-1 + a) i (b + a  j ) g

我有以下假设:所有变量都是实数且大于0,a也小于1,在Mathematica中:

$Assumptions = {a, b, c, d, f, g, h, i, j} \[Element] 
   Reals && {a, b, c, d, f, g, h, i, j} > 0 && 0 < a < 1

尽管有一些简单的案例,Reduce会产生以下输出:

  

生成了非常大的输出。以下是它的一个示例:   (a | b | c | d | f | i)[元素]     Reals&amp;&amp; ((j&lt; 0&amp;(&lt; 1&gt;&gt;))||(j == 0&amp;&amp;(&lt;&lt; 1&gt;&gt;))||(j&gt;         0&amp;&amp; (小于;&LT 1为卤素;&GT;)))

我想知道如何输入它来评估为真还是假。


在这种情况下手动必须是真的:

  • -1+a重写为-(1-a)

    a(b c +(1-a)d(c + f g))h> - (1 - a)i(b + a j)g

  • 全部到左侧:

    a(b c +(1-a)d(c + f g))h +(1-a)i(b + a j)g&gt; 0

  • 因为(1-a)> 0并且所有其他变量> 0,所以左侧是全部> 0的变量的乘积之和。所以这必须坚持下去。为什么我不能让Mathematica证实这一点?

1 个答案:

答案 0 :(得分:2)

部分帮助:

这个假设

{a, b, c, d, f, g, h, i, j} > 0

不单独适用于每个元素,请尝试:

$Assumptions = Flatten[ { # > 0 & /@ {a, b,c,d,e,f,g,h,i,j} , 0 < a < 1 } ]

同时指定&gt; 0表示实数,所以你不需要那个明确的假设。

编辑,问题的第2部分是Reduce甚至不使用$ Assumptions,所以你需要在reduce之后简化[]。但即便如此,你仍然没有得到你的答案。考虑一下这个有点简化的例子:

$Assumptions = Flatten[{# > 0 & /@ {a, b, c, f, g}, 0 < a < 1}]
res = Reduce[ (-1 + a)  (f + g) >= b c , {a, b, c, f, g}, Reals]  
(* huge output*)
Simplify[res ]
(* b c <= (-1 + a) (f + g) *)

使用提供的假设,这应该被证明是假的。事实上这有效..

Simplify[Reduce[ (-1 + a)  >= b c/(f + g) , {a, b, c, d, e, f, g},   Reals]  ]
(* False *)

建议您在https://mathematica.stackexchange.com/上询问,或者某些主持人应该迁移此内容。

编辑3 - 我明白了..

$Assumptions =  And @@ Flatten[{# > 0 & /@ {a, b, c, d, e, f, g, h, i, j},
                           0 < a < 1}] ;
Simplify[Reduce[ a (b c - (-1 + a) d (c + f g)) h > (-1 + a) i (b +  a j) g 
          && $Assumptions, {a, b, c, d,e,f, g, h, i, j}, Reals]]

(*True*)