为什么最大值不能解决这些方程

nsg*_*nsg 0 maxima

我有几个方程式,用于指定椭圆元素之间的关系(次要和主要半轴,偏心率,中心和中心距离,焦点参数).我想通过所有其他元素的组合找到表达这些元素的其他公式.solve()在某些组合上完全正常,但在另一组合中则不然.这些案件之间有什么区别我能如何解决?

    sys:[b=a*sqrt(1-e^2),p=a*(1-e^2),c=a*(1+e),d=a*(1-e)];
    solve(sys,[a,b,e,p]);
    solve(sys,[a,b,e,c]);
    solve(sys,[a,b,e,d]);
    solve(sys,[a,b,p,c]);
    solve(sys,[a,b,p,d]);
    solve(sys,[a,b,c,d]);
    /* solve(sys,[a,e,p,c]); -- gives error */
    /* solve(sys,[a,e,p,d]); -- gives error */
    /* solve(sys,[a,e,c,d]); -- gives error */
    solve(sys,[a,p,c,d]);
    solve(sys,[b,e,p,c]);
    solve(sys,[b,e,p,d]);
    solve(sys,[b,e,c,d]);
    solve(sys,[b,p,c,d]);
    solve(sys,[e,p,c,d]);
Run Code Online (Sandbox Code Playgroud)

这是"好"和"坏"案例的输出:

(%i5) solve(sys,[a,b,c,d]);
                                        2
                  p           sqrt(1 - e ) p          p          p
(%o5)   [[a = - ------, b = - --------------, c = - -----, d = -----]]
                 2                 2                e - 1      e + 1
                e  - 1            e  - 1

(%i6) solve(sys,[a,e,p,c]);

algsys: tried and failed to reduce system to a polynomial in one variable; give up.
 -- an error. To debug this try: debugmode(true);
Run Code Online (Sandbox Code Playgroud)

Rob*_*ier 5

试试to_poly_solve这些.这是一个共享包 - 你必须load(to_poly_solve);在调用它之前输入.