获取matlab以显示平方根(即2 ^(1/2)而不是1.414)

时间:2015-12-08 14:12:58

标签: matlab

我有一些简单的方程式,我想通过matlab管道。但我希望得到确切的答案,因为这些值预计将在以后使用和简化。

现在,Matlab将sqrt(2.0)显示为1.1414,而不是像我想要的那样2^(1/2)

我尝试启用format rat,但这很危险,因为它显示sqrt(2)1393/985没有任何警告。

有象征性数学"但它似乎有点矫枉过正。

我想要的只是2 + sqrt(50)会返回类似2 + 5 * (2)^(1/2)的东西,甚至我5岁的卡西欧计算器都能做到这一点!

那么我该如何在matlab中将2 + sqrt(50)评估为2 + 5 * (2)^(1/2)

2 个答案:

答案 0 :(得分:7)

根据@Oleg's comment使用符号数学。

x=sym('2')+sqrt(sym('50'))
x =
5*2^(1/2) + 2

通过此表达式进行一万次迭代的平均时间为1.2毫秒,而数值表达式(x=2+sqrt(50))的时间仅为0.4微秒,即速度快一万倍。

我确实预先运行了50次符号表达式,因为正如Oleg在他的second comment指出的那样,符号引擎需要一些热身。第一次通过你的表达我的电脑差不多2秒钟。

因此,由于计算时间的巨大差异,我建议使用数值方程。当你被迫(例如简化纸张的表达式)然后使用像Maple或Wolfram Alpha这样的符号计算引擎时,才使用符号表达式。

答案 1 :(得分:3)

Matlab主引擎不是符号而是数字。

符号工具箱。在x和subs x = 50

中创建表达式
syms x
f = 2+sqrt(x)

subs(f,50)
ans =
50^(1/2) + 2