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

看板Mathematica作者 (1597463007)時間10年前 (2014/06/18 18:38), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/3 (看更多)
※ 引述《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 ) : 謝謝大家 -- ˊ_▂▃▄▂_ˋ. ◣          ▅▅ ▅▅ ι●╮   ./◤_▂▃▄▂_◥ \'▊   HARUHI █████ <■┘   ◤◤◥█◥◥█Δ   ISM    By-gamejye ¢|\   ▌▌ζ(▏●‵◥′●)Ψ ▏           █    ⊿Δ    /|▋ |\ ▎         ハルヒ主義      ▄█ ◥◥|◣ ‵′ ◢/'◢◢S.O.S 世界をいに盛り上げるための宮ハルヒの    -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.30.32 ※ 文章網址: http://www.ptt.cc/bbs/Mathematica/M.1403087922.A.F0A.html

06/18 19:12, , 1F
謝謝你精彩的講解,我有比較了解了:)
06/18 19:12, 1F
文章代碼(AID): #1JeMmoyA (Mathematica)
文章代碼(AID): #1JeMmoyA (Mathematica)