请问如何用mma求出一元三次方程的精确解(非数值解)
mathematica吧
全部回复
仅看楼主
level 7
众所周知,三次方程是有求根公式可以求出精确解的。但是我求三次方程根的时候却发现mma只输出数值解。求教大家如何才能求出精确解?
我写的代码如下:Solve[x^3 + 3 x - 5 == 0, x];mma输出的结果如下图:
mma只给出了数值解,而不是用求根公式求出的精确解(含有开立方符号的解)。
2021年02月17日 20点02分 1
level 7
很奇怪,二次方程mma直接输出精确解,但是三次方程却不行吗?
2021年02月17日 20点02分 3
level 1
ToRadicals
2021年02月18日 06点02分 4
level 8
Solve[x^3 + 3 x - 5 == 0, x, Cubics -> True]
2021年02月18日 12点02分 5
这个很棒!谢谢!!
2021年02月19日 21点02分
吧务
level 15
……好嘛,版本 12 引入的新型 Root 表示居然引发了这种误解。强调一下,Solve 输出的不是数值解,而是用 Root 函数表示的根。在早于版本12的时期它是这样显示的:
这个结果一点也不像传统数学表达式,而有相当数量的 Mathematica 初学者一看到软件算出来的东西不像传统数学表达式就会六神无主恨不得马上跳楼。(顺便另一个此类事件的重灾区是 ConditionalExpression 。)大概是因为这个原因,版本 12 终于还是给 Root 函数加了这么个框符表示。这种框符虽然会简略地显示符号解的近似值,但它的内部依旧是方程的准确解,你选中输出再按 Ctrl + Shift + I 它就会现形了。
2021年03月06日 03点03分 6
原来是这样啊!谢谢!!
2021年04月23日 06点04分
level 1
记得12.0.0也是这样的
2022年07月11日 06点07分 9
吧务
level 9
可以运行下面的代码关闭这一特性,需要长期有效的话可以放到init.m里
SetSystemOptions["TypesetOptions" -> "NumericalApproximationForms" -> False];
或者
Unprotect[BoxForm`UseApproximations];
BoxForm`UseApproximations=False;
2022年07月17日 12点07分 11
1