提问人:T.A. 提问时间:9/8/2023 更新时间:9/8/2023 访问量:45
如何让 Simplify 函数在 Mathematica 中完全简化不等式?
How do you get the Simplify function to completely simplify an inequality in Mathematica?
问:
我正在测试一个函数是否在给定范围内。不知何故,函数 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.
答: 暂无答案
评论
Simplify[0<f[x,y],Assumptions->condParam&&x>0&&y>0]
返回,似乎是导致问题的原因。也许您可以使用该提示来尝试准确隔离问题表达式是什么。True
f[x,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]
Simplify[E^(a2 x)+E^(a3 y)>1,E^(a2 x)>1&&E^(a3 y)>1]
哼哼...... ;}