MATLAB: Error using sym/subs with logical operation

subssymbolic

Hello,
here is my code
syms x1 x2
aa=x1 == 0 & x2 == 0
subs(aa, [0.5 0.5])
the result is
ans =
[ 1/2 == 0 & x2 == 0, 1/2 == 0 & x2 == 0]
I wanna get result like this
1/2==0 & 1/2==0
What's the problem?
Thanks.

Best Answer

  • 1
    You only substitute x1 - you have to substitute them both. Try:
    syms x1 x2
    aa= x1 == 0 & x2 == 0
    aa = subs(aa,[x1 x2], [0.5 0.5])
    which results in:
    aa =
    1/2 == 0
    2
    Or use vectors, which doesnt work together with "&":
    syms x1 x2
    aa=[x1 == 0, x2 == 0]
    aa = subs(aa,[x1 x2], [0.5 0.5])
    result is:
    aa =
    [ 1/2 == 0, 1/2 == 0]
    3
    If you use 2 different numbers:
    syms x1 x2
    aa= x1 == 0 & x2 == 0
    aa = subs(aa,[x1 x2], [0.5 0.6])
    you get:
    aa =
    1/2 == 0 & 3/5 == 0
    because Matlab can not simplify this, like it did in the first example.