如何在 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 返回一个列表,因此您可以只说 mysolutions[3](或 {{1} }} 已分配)。

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

但是,请注意,将等式 lhs 用作 d = something 的参数以便将该值替换为其他表达式是很方便的,例如:

subst

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...