这是一个使用 MuPADsolve
并sym/isempty
从 Matlab 调用的示例:
syms x y z;
~isempty(feval(symengine,'solve',[x+z>2*y,z>y,2*z>2*x,x>0,y>0,z>0],[x y z]))
~isempty(feval(symengine,'solve',[x+z>2*y,z>y,2*z>2*x,x>0,y>0,z<0],[x y z]))
第一种情况返回 true, 1
,表示至少有一个解决方案。第二个返回 false, 0
,因为没有解决方案。
如果要在 MuPAD 中执行此操作,可以使用以下is
功能:
not(is(solve([x+z>2*y,z>y,2*z>2*x,x>0,y>0,z>0],[x,y,z])={}))
not(is(solve([x+z>2*y,z>y,2*z>2*x,x>0,y>0,z<0],[x,y,z])={}))
但是,第一种情况会返回UNKNOWN
,这很难处理。您可能想改用以下内容:
is(length(solve([x+z>2*y,z>y,2*z>2*x,x>0,y>0,z>0],[x,y,z]))>1)
is(length(solve([x+z>2*y,z>y,2*z>2*x,x>0,y>0,z<0],[x,y,z]))>1)
它假设只有一个空解 Ø 会有一个length
1。(MuPAD 代码是两个字符,,{}
但它显示为一个,Ø,长度为一,表示空/零。)可能还有其他方式。