如何在Maxima中只得到真正的解决方案?

问题描述 投票:0回答:2

我正在尝试用 Maxima 求解方程,这样我只能得到真实的解(如果存在);如果没有真正的解决方案,或者甚至没有复杂的解决方案,我希望 Maxima 返回一个空列表。

例如,我希望当使用

x^2+100-x=0
求解
solve(x^2+100-x,x)
(只有复杂的解)时,Maxima 将返回一个空列表。或者,当使用
log(x)-x=0
求解
solve(log(x)-x,x)
时(也没有真正的解),Maxima 将返回一个空列表。在第二个示例中,我得到的是
[x=log(x)]

Maxima 如何实现这一目标?

maxima wxmaxima
2个回答
2
投票

抑制隐式解:

(%i1) solve(log(x)-x);
(%o1)                            [x = log(x)]
(%i2) solve(log(x)-x), solveexplicit: true;
(%o2)                                 []

仅保留没有虚部的解:

(%i1) s: solve(x^2+100-x);
                       sqrt(399) %i - 1      sqrt(399) %i + 1
(%o1)           [x = - ----------------, x = ----------------]
                              2                     2
(%i2) sublist(s, imagpart);
(%o2)                                 []
(%i3) s: solve(x^2+2 * x + 1);
(%o3)                              [x = - 1]
(%i4) sublist(s, imagpart);
(%o4)                              [x = - 1]

0
投票

也许这也可以帮助你回答:

(%i80) 实根(x^2+100-x=0);

(%o80) []

当解为[]时,无实根。另一方面,当至少有一个真正的解决方案时:

(%i7) 实根 (x^3-3x^2+4x-2 = 0);

(%o7) [x=1]

x^3-3x^2+4x-2 = 0 有三种解,只有一种是实数。对于所有解决方案:

(%i9) 求解(x^3-3x^2+4x-2 = 0,x);

(%o9) [x=1-%i,x=%i+1,x=1]

© www.soinside.com 2019 - 2024. All rights reserved.