MATLAB symengine 在逻辑语句上失败

MATLAB symengine fails on a logical statement

我想让matlab同意以下简单的陈述:

(x-a)^b>=0x>0, a>0, b<0, x>a

为了这样做我写:

syms x a b
assume(x>0 & a>0 & b<0 & x>a);
isAlways((x-a)^b>=0,'Unknown','error')

并得到以下错误信息:

Error using symengine
Cannot prove '0 <= (x - a)^b'.

Error in sym/isAlways (line 38)
Y = mupadmex('symobj::isAlways',X.s,isMath,['"Unknown' p.Unknown '"'],9);

为什么 MATLAB 不同意这样一个明显的陈述?

我不知道为什么,但没有使用假设 x>a,而是使用 x-a > 0。我认为 MATLAB 不会 "compute" xa 之间的差异,因此它不知道 x-a 是否大于 0。因此,当您检查条件时,它必须已经知道 x-a 大于 0