I am trying to verify an inequality using the symbolic solver in Matlab. Matlab is able to tell me that the first inequality below is true, however, the second one fails. Am I doing something wrong here, or is the second expression to complex for Matlab?
syms mu sigma rho lambdaP
assume(mu>0)
assume(sigma>0)
assume(rho>0)
assume(lambdaP>0)
assume(rho>mu)
b=(mu-0.5*sigma^2);
isAlways(sqrt(b^2+2*sigma^2)>=0)
isAlways(sqrt(b^2+2*sigma^2*(rho+lambdaP))>=0)
For the second assumption on the variables rho and mu, you should use assumeAlso instead of assume. Calling assume again on a symbolic variable removes the first assumption. You can also remove all the separate assume lines, by adding the assumption to the declaration of the symbolic variables
syms mu sigma rho lambdaP positive
assumeAlso(rho>mu)
b=(mu-0.5*sigma^2);
isAlways(sqrt(b^2+2*sigma^2)>=0)
isAlways(sqrt(b^2+2*sigma^2*(rho+lambdaP))>=0)
This will return true for both expressions.
You can check the assumptions per variable by typing e.g. assumptions(rho). If you do not use assumeAlso, you will see that the > 0 assumption is gone.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With