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

时间:2014-02-26 14:45:08

标签: maxima

我有几个方程式,用于指定椭圆元素之间的关系(次要和主要半轴,偏心率,pericenter和apocenter距离,焦点参数)。 我想通过所有其他元素的组合找到表达这些元素的其他公式。 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]);

这是“好”和“坏”案例的输出:

(%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);

1 个答案:

答案 0 :(得分:5)

在这些问题上尝试to_poly_solve。这是一个共享包 - 您必须在调用之前输入load(to_poly_solve);