我有一些简单的方程式,我想通过matlab管道.但我希望得到确切的答案,因为这些值预计将在以后使用和简化.
眼下Matlab的显示sqrt(2.0)
为1.1414
,而不是像2^(1/2)
我想.
我试图打开format rat
但这是危险的becasue它显示sqrt(2)
为1393/985
无任何形式的警告.
有"象征性的数学"但似乎有点矫枉过正.
我想要的就是2 + sqrt(50)
返回类似的东西2 + 5 * (2)^(1/2)
,甚至我5岁的卡西欧计算器都可以做到这一点!
那么我可以做些什么2 + sqrt(50)
来2 + 5 * (2)^(1/2)
在matlab中进行评估呢?
根据@ Oleg的评论使用符号数学.
x=sym('2')+sqrt(sym('50')) x = 5*2^(1/2) + 2
通过该表达式进行一万次迭代的平均时间是1.2毫秒,而数值表达式(x=2+sqrt(50)
)的时间仅为0.4微秒,即快一万倍.
我确实预先运行了50次符号表达式,因为正如Oleg在第二次评论中指出的那样,符号引擎需要一些热身.第一次通过你的表达我的电脑几乎2秒.
因此,由于计算时间的巨大差异,我建议使用数值方程.当你被迫(例如简化纸张的表达式)然后使用像Maple或Wolfram Alpha这样的符号计算引擎时,只使用符号表达式.