Re: [問題] mathematica複雜輸出問題

作者: LPH66 (-6.2598534e+18f)   2014-06-18 18:38:38
※ 引述《CUCUMBERER (瓜仔)》之銘言:
: 大家好 我是最近開始用的新手
: 感謝各位轉進來看小弟的問題
: 近來因為要解光學的相位問題
: 所以常常使用矩陣與自然常數exp[]
: 但是出來的矩陣相當的複雜
: 其中矩陣內常有一些奇怪的表示法讓我困擾
: 我的問題如下
: 1.會有元素表示成<<X>>,X是自然數,經爬文這個好像是省略了X項?
只是顯示上為了節省空間而沒有顯示的項
拿它做後續運算時會確實地用原本的數值運算
不知道哪個版本開始這種東西出現時會帶一個框框出來
告訴你因為結果太長於是顯示被縮減
有這種框框的話同時會有幾個按鈕可以展開到你要的程度
(5.X 跟 6.X 記得是沒有, 8.X 就有了, 不知道是哪一版加的功能)
: 2.元素中有零時,會表示成0.EXP[],是否可以將此項顯示為零或是省略
這應該是你的計算裡有小數點
這種數在預設精確度時 (WorkingPrecision->MachinePrecision)
內部是會用機器的浮點數進行運算
所以就會出現常見的浮點數誤差
其中一種現象即是應該要是 0 的結果卻得到絕對值很小的數
為此 Mathematica 有一個函數專門處理這種 0. 的數 叫做 Chop
把你的計算結果丟進 Chop 裡之後
所有這種顯示成 0. 的小小數就會真的變成 0
然後就能進一步的化簡了
(豆知識: MachinePrecision 的值是 53*Log[10,2]≒15.9546
這個是浮點數標準當中倍精確度的浮點數的精確度
由於 Precision[1.] 的結果即為 MachinePrecision
因此可以認為內部對於這種不到 MachinePrecision+1 位的小數
是使用倍精確度浮點數計算)
(Chop 做的事其實是把絕對值在某個小範圍之內的數都變成 0
預設是 10^-10, 跟上面的 WorkingPrecision 一比就知道其實已經足夠大了)
: 3.是否有可以化簡複雜輸出的指令,目前只用過Simplify[],但效果不好
是有一個叫 FullSimplify 啦, 不過也要看你的計算結果的複雜度
真的太亂一團的話 FullSimplify 可能也沒什麼用
再說也許你的變數有些條件, 但運算時並沒有指名
如果是這樣的話或許可以試試在 Simplify/FullSimplify 時加入第二參數指定條件
範例如下:
http://reference.wolfram.com/mathematica/tutorial/SimplifyingWithAssumptions.html
( http://0rz.tw/yiPZN )
: 謝謝大家
作者: CUCUMBERER (瓜仔)   2014-06-18 19:12:00
謝謝你精彩的講解,我有比較了解了:)

Links booklink

Contact Us: admin [ a t ] ucptt.com