在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