MATLAB symengine 在逻辑语句上失败
MATLAB symengine fails on a logical statement
我想让matlab同意以下简单的陈述:
(x-a)^b>=0
当 x>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" x
和 a
之间的差异,因此它不知道 x-a
是否大于 0
。因此,当您检查条件时,它必须已经知道 x-a
大于 0
。
我想让matlab同意以下简单的陈述:
(x-a)^b>=0
当 x>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" x
和 a
之间的差异,因此它不知道 x-a
是否大于 0
。因此,当您检查条件时,它必须已经知道 x-a
大于 0
。