Mathematica 計算精度怎麼設置啊,比如要求整個計算過程中所有數值都保留6位有效數字
題目:
Mathematica 計算精度怎麼設置啊,比如要求整個計算過程中所有數值都保留6位有效數字
用workprecision嗎?查了一下不太會啊,
解答:
這要看情況的啊……可以用N[ ],也可以用SetPrecision[ ].WorkingPrecision只是部分函數的選項,比如Plot,比如NDSolve.
再問: 用$MinPrecision=$MaxPrecision=n的作用是不是類似於某些函數中用WorkingPrecision=n? 還有,N[]或者SetPrecision[],會影響程序計算精度嗎?我主要是想讓計算過程中精度低一些,從而速度快一些。p.s.關於精度這一塊查了幫助和書,感覺很費解,尤其不懂如何設置計算精度(讓機器不要考慮更高位的情況)
再答: 精度問題確實是有些麻煩,老實說很多細節我也不是那麼清楚,例如你說的$MinPrecision和$MaxPrecision(其實還有一個$MaxExtraPrecision)我就沒怎麼研究過,但是,這裡需要指出的是, 如果真要(真只是)追求速度的話,那就別在精度這問題上糾結了,因爲,默認的MachinePrecision(注意不是$MachinePrecision)是最快的,它是一種浮點運算,使用的捨入規則與你上面所提的明確設定精度的運算有所區別,所以在少數極端情況下會得到不合理的結果,但它,至少按幫助的說法,是最快的。 ———— 你若想深入,不妨去Stackexchange問問: mathematica.stackexchange.com
添加新評論