在R2014b,这条线:
inertia = (1/12)*bt*ht^3 + (1/2)*bpzt*ht^2*hn - (1/2)*bpzt*ht*hn^2 + (2/3)*bpzt*hn^3
返回
(13*hn^3)/2500 - (863307622649607*hn^2)/73786976294838206464 + (5304162033559185*hn)/151115727451828646838272 + 5527208847278085/77371252455336267181195264
这与数值的符号表达式表示完全一样有理分数(尽管它们可能已经作为代码中的十进制值开始了)。您可以使用vpa
vpa(inertia)
返回转换这样的:
0.0052*hn^3 - 0.000011699999999999999788190263583232*hn^2 + 0.000000035099999999999996664653271376613*hn + 0.000000000071437500000000005341045287673881
十进制值的长度/精度取决于digits
。除非您编写自己的函数来解析字符串并进行转换,否则以指数形式(xxe-x)显示此符号不是任何符号数学表达式或值的选项。
要将此转换为量化的双精度浮点功能,您可以用可怕命名matlabFunction
- matlabFunction(inertia)
回报:
@(hn)hn.*3.51e-8-hn.^2.*1.17e-5+hn.^3.*5.2e-3+7.143750000000001e-11
但是,如果你这样做,我不知道你为什么他们一开始就是在用符号数学来工作,如果能够以更快的双精度完成所有工作的话。
请记住,如果你想转换成任何一种小数形式,变精度或浮点数,在很多情况下你会失去精度。但是,如果你只是想查看结果或执行第四次计算如果双精度,那么它应该没问题。
我不断收到一个错误,说mupadmex错误时使用双或单,并建议我使用VPA。当我使用vpa它在向我展示小数点后工作,但随后小数点没有很好地格式化,就像我会得到一个0.0000000000000001而不是我想要的东西像1e-9 – Edwardnese 2015-03-02 06:39:40
这家伙偷走了我的答案。 – erip 2015-03-02 06:48:48
@erip:这不是“你的”答案,而是“答案”。顺便说一句,我独立查看它,你甚至可以看到我在文档中找到它的位置。 – usr1234567 2015-03-02 06:58:36