我需要评估" sym"的数字部分。 MATLAB中的变量(例如" evalf"枫树中的函数),例如我有这个sym变量:
(12 *(51 * EE * II - 8 * 39 ^(1/2)* EE * II))/(AA * ll ^ 4 * ro)
" evalf" in maple给了我12.48019224 * EE * II /(AA * ll ^ 4 * ro),有没有办法在MATLAB中做到这一点?
答案 0 :(得分:3)
我认为您正在寻找vpa
(变精度算术)函数
syms EE II AA ll ro
y = (12*(51*EE*II - 8*39^(1/2)*EE*II))/(AA*ll^4*ro)
vpa(y)
返回
ans =
(12.48019215375377223869826038978*EE*II)/(AA*ll^4*ro)
答案 1 :(得分:0)
MATLAB有一个simplify
命令,但请记住,符号工具箱不喜欢评估给小数,它会尝试将所有内容保存在小数值中,因为这样更准确。
syms('EE','AA','ll','II','ro')
simplify((12*(51*EE*II - 8*39^(1/2)*EE*II))/(AA*ll^4*ro)))
这将减少到以下
-(12*EE*II*(8*39^(1/2) - 51))/(AA*ll^4*ro)
这是否更符合您的喜好,这取决于您,但我建议保留分数而不是小数。准确度越高越好。
eval
函数也可能对您有用,但这也会使它保持小数。使用它会给你
(13722116389931*EE*II)/(1099511627776*AA*ll^4*ro)