如何在 Maxima 中只获得真正的解决方案?
How to get only the real solutions in Maxima?
我正在尝试用 Maxima 求解一个方程,这样我只能得到存在的实数解;如果没有真正的解决方案,或者甚至没有复杂的解决方案,我希望 Maxima return 一个空列表。
例如,我希望在使用 solve(x^2+100-x,x)
求解 x^2+100-x=0
时,它只有复数解,Maxima 会 return 一个空列表。或者当使用 solve(log(x)-x,x)
求解 log(x)-x=0
时,它也没有真正的解决方案,Maxima 会 return 一个空列表。在第二个示例中,我得到的是 [x=log(x)]
.
如何使用 Maxima 实现这一点?
禁止隐式解决方案:
(%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]
我正在尝试用 Maxima 求解一个方程,这样我只能得到存在的实数解;如果没有真正的解决方案,或者甚至没有复杂的解决方案,我希望 Maxima return 一个空列表。
例如,我希望在使用 solve(x^2+100-x,x)
求解 x^2+100-x=0
时,它只有复数解,Maxima 会 return 一个空列表。或者当使用 solve(log(x)-x,x)
求解 log(x)-x=0
时,它也没有真正的解决方案,Maxima 会 return 一个空列表。在第二个示例中,我得到的是 [x=log(x)]
.
如何使用 Maxima 实现这一点?
禁止隐式解决方案:
(%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]