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