如何让 Simplify 函数在 Mathematica 中完全简化不等式?

How do you get the Simplify function to completely simplify an inequality in Mathematica?

提问人:T.A. 提问时间:9/8/2023 更新时间:9/8/2023 访问量:45

问:

我正在测试一个函数是否在给定范围内。不知何故,函数 Simplify 没有提供正确(明显)的答案。为什么?

main 函数对应于这些函数的乘积:

f1[x_] = a0 + (1 - a0) (1 - Exp[-a1 x]);
f2[x_] = 1 - Exp[-a2  x];
f3[y_] = 1 - Exp[-a3  y];

因此

f[x_, y_] = f1[x] f2[x] f3[y];

参数的条件是:

condParam = 0 < a0 < 1 && a1 > 0 && a2 > 0 && a3 > 0;

显然,使用 Simplify 函数,我们得到:

Simplify[0 < f1[x] < 1, Assumptions -> condParam && x > 0 && y > 0]
Simplify[0 < f2[x] < 1, Assumptions -> condParam && x > 0 && y > 0]
Simplify[0 < f3[y] < 1, Assumptions -> condParam && x > 0 && y > 0]

但是,不知何故,Mathematica 并没有发现这些函数的乘积也介于 0 和 1 之间:

Simplify[0 < f[x, y] < 1, Assumptions -> condParam && x > 0 && y > 0]

E^(-a1 x - a2 x - a3 y) (-1 + a0 + E^(a1 x)) (-1 + E^(a2 x)) (-1 + E^(a3 y)) < 1

为什么?虽然在这种情况下没什么大不了的,但当我试图找到更复杂的函数范围时,这就成了一个问题。

使用以下命令不能解决问题

SetSystemOptions["SimplificationOptions"->{"AssumptionsMaxNonlinearVariables"->100}];

谢谢你的帮助。

T.

Wolfram-Mathematica 简化 不等式

评论

0赞 Bill 9/9/2023
Simplify[0<f[x,y],Assumptions->condParam&&x>0&&y>0]返回,似乎是导致问题的原因。也许您可以使用该提示来尝试准确隔离问题表达式是什么。Truef[x,y]<1
0赞 T.A. 9/9/2023
谢谢你的评论。我试了一下,确实发生了一些奇怪的事情:导致 True;真;E^(a2 x) + E^(a3 y) > 1;我不明白指数函数的总和有什么问题。你有什么想法吗?Simplify[E^(a2 x) > 1, Assumptions -> condParam && x > 0 && y > 0]Simplify[E^(a3 y) > 1, Assumptions -> condParam && x > 0 && y > 0]Simplify[E^(a2 x) + E^(a3 y) > 1, Assumptions -> condParam && x > 0 && y > 0]
0赞 Bill 9/9/2023
Simplify[E^(a2 x)+E^(a3 y)>1,E^(a2 x)>1&&E^(a3 y)>1]哼哼...... ;}
0赞 T.A. 9/9/2023
嗯,那行得通。:)但是有没有办法让 Mathematica 处理这种明显的指数函数求和呢?
1赞 Bill 9/9/2023
对一个人来说显而易见的东西有时对另一个人来说却不是,当其中一个是 MMA 内部数千万行软件算法时,谁知道呢。到目前为止,我一直在摸索我想到的所有想法,但仍然无法弄清楚为什么 sum<1 不起作用。我猜这与所需的多层逻辑有关,但到目前为止还没有帮助。我会继续思考和尝试。请你也这样做。如果没有其他方法,那么您可以尝试在 community.wolfram.com 或 mathematica.stackexchange.com 上发帖,看看其中任何一个是否能找到有工作想法的人。

答: 暂无答案