我有很多这样的条件:
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证实这一点?
答案 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*)