如何在 wxMaxima 中得到这个简单方程的正确解?

How to get the correct solution of this simple equation in wxMaxima?

我正在尝试在 wxMaxima 中求解以下简单方程:

21.3874=0.00202415/(d^3)

当我使用 solve() 时,我得到了 3 个解(2 个复数和 1 个实数)。我知道 d 是实数且为正(因为它是直径)所以我只对第三种解法感兴趣。它以以下形式给出: d=((40483)^(1/3))/(10427748^(1/3)) 我尝试用 map() 函数保存它,但它保存了所有 3 个解决方案,我不知道如何映射只有最后一个,以便我可以将其用于进一步的计算。

无论如何,重写此解决方案并对其使用 float() 函数后,结果为:0.1571668 但这是不正确的,因为结果应该是 0.0455717.

有趣的是,to_poly_solve()给出了不同的解决方案,真正的解决方案是:0.2439467

关于这个问题我有 3 个问题:

  1. 为什么wxMaxima给出了两个错误的解决方案以及如何获得正确的解决方案?
  2. 如何告诉 Maxima 我正在寻找给定方程的实数和正解。
  3. 是否可以映射选定的解决方案,以便在进一步的计算中引用它(例如在其上使用 float())?

嗯,当我尝试时,我得到了预期的结果 (0.0455717)。

(%i5) mysolutions: solve (21.3874 = 0.00202415/(d^3), d);

rat: replaced 21.3874 by 106937/5000 = 21.3874

rat: replaced -0.00202415 by -40483/20000000 = -0.00202415
                        1/3           1/3
           sqrt(3) 40483    %i - 40483
(%o5) [d = ------------------------------, 
                             1/3
                    20 427748
                             1/3           1/3             1/3
                sqrt(3) 40483    %i + 40483           40483
          d = - ------------------------------, d = ------------]
                                  1/3                        1/3
                         20 427748                  10 427748

为了仅隔离第三个解决方案,请注意 solve returns 一个列表,因此您可以只说 mysolutions[3] (或任何变量的名称) solve 的结果已分配)。

如果你只想要数值,你可以说 rhs(mysolutions[3]) where rhs = "right-hand side"。还有 lhs = "left-hand side".

但是,请注意,仅使用等式 d = something 作为 subst 的参数是很方便的,以便将值代入其他表达式,例如:

(%i6) preferred_solution: mysolutions[3];
                                   1/3
                              40483
(%o6)                   d = ------------
                                     1/3
                            10 427748
(%i7) float (preferred_solution);
(%o7)                d = 0.04557166543026844
(%i8) subst (preferred_solution, %pi*(d/2)^2);
                               2/3
                          40483    %pi
(%o8)                     -------------
                                    2/3
                          400 427748
(%i9) float (%);
(%o9)                 0.001631096598182001