我想看看动力系统的椭圆轨迹是如何用不同的系统参数旋转的。所以我试过
assume(c<0);
assume(b>0);
assume(b*c<-a^2);
A:matrix([a,b],[c,-a]);
eigenvalues(A);
我得到了结果
[[-sqrt(b*c+a^2),sqrt(b*c+a^2)],[1,1]]
但是,我想要
[[-%i*sqrt(a^2+b*c),%i*sqrt(a^2+b*c)],[1,1]]
似乎maxima没有使用我的假设。我怎样才能使用这样的假设,还是需要手动完成?
答案 0 :(得分:0)
您可以定义简化规则:
(%i1) display2d: false $
(%i2) assume(c<0, b>0, b*c<-a^2) $
(%i3) A:matrix([a,b],[c,-a]) $
(%i4) negp(e):= is(sign(e)='neg) $
(%i5) matchdeclare(NN, negp) $
(%i6) tellsimpafter(sqrt(NN), -%i*sqrt(-NN)) $
(%i7) eigenvalues(A);
(%o7) [[%i*sqrt((-b*c)-a^2),-%i*sqrt((-b*c)-a^2)],[1,1]]