强制最大值认为平方根是虚构的

时间:2015-11-19 18:36:02

标签: constraints maxima

我想看看动力系统的椭圆轨迹是如何用不同的系统参数旋转的。所以我试过

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没有使用我的假设。我怎样才能使用这样的假设,还是需要手动完成?

1 个答案:

答案 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]]