Simplify symbolic equation based on assumptions?
Hi guys,
I'm using Sage since few days ago. I'm struggling solving some inequalities with constraints.
I have two questions that may be related.
First, why do we obtain such result in the following code?
var('x, y')
assume(x, 'real', y, 'real')
assume(x>0, y>0)
assume(x-y < 0)
bool(x-y < 0) # => True
bool(x-y < 1) # => False
Second, when I compute some equation, I obtain a result with a square root of something that I know is negative. So I make some assumption on that value and I obtain the result I expect.
var('x, y')
assume(x>0, y>0)
assume(x-y<0)
sqrt(x-y).real().simplify_full() # => 0
sqrt(x-y).imag().simplify_full() # => sqrt(-x+y)
Then, if I want to compute another square root that should also be negative using the previous assumption. Sage does not simplify the equation.
sqrt(x-y-1).real().simplify_full() # => sqrt(abs(-x + y + 1))*cos(1/2*arctan2(0, x - y - 1))
sqrt(x-y-1).imag().simplify_full() # => sqrt(abs(-x + y + 1))*sin(1/2*arctan2(0, x - y - 1))
Then I have to explicitely set another assumption (which is less restrictive by the say) to obtain the result I want. I this the wanted behavior?
assume(x-y-1<0)
sqrt(x-y-1).real().simplify_full() # => 0
sqrt(x-y-1).imag().simplify_full() # => sqrt(-x + y + 1)
My full problem is the following:
var('s, a, g, xi, w0, w')
assume(a, 'real', g, 'real', xi, 'real', w0, 'real', w, 'real') # Real variables
assume(a>0, g>0, xi>0, w0>0, w>0) # Positive variables
assume(xi<1/sqrt(2))
G = g/(s^2/w0^2 + 2*xi*s/w0 + 1);
Gv_cst = g/a;
assume(a>1)
s1 = (G + Gv_cst).roots(s)
I want to show that the roots have a negative real part. I tried many things but with no succes. Here is one of my trials:
s1[0][0].real().is_negative()
Thank you very much.