我们都知道Mathematica很棒,但它也经常缺乏关键功能.您在Mathematica中使用哪种外部包/工具/资源?
我将编辑(并邀请任何其他人也这样做)这个主要帖子包括专注于科学研究的一般适用性的资源,并且尽可能多的人会觉得有用.随意贡献任何东西,甚至是小代码片段(正如我在下面做的时间例程).
此外,在Mathematica 7及其他您发现自己,或从一些纸张/网站挖出的无证和有用的功能是非常受欢迎的.
请提供简短描述或评论为什么有什么好东西或它提供的实用程序.如果您使用会员链接链接到亚马逊上的书籍,请提及它,例如,在链接后面加上您的姓名.
包:
LevelScheme是一个大大扩展Mathematica生产美观图的能力的软件包.我使用它,如果没有其他任何东西,那么对框架/轴刻度的大大改进控制.它的最新版本称为SciDraw,它将在今年的某个时候发布.Presentation Package(50美元 - 免费更新)grassmannOps软件包提供了使用Grassmann变量和具有非平凡换向关系的算子进行代数和微积分的资源.GrassmannAlgebra与格拉斯曼(Grassmann)和克利福德代数(Clifford algebras)合作的包和书.工具:
MASH是Daniel Reeves出色的Perl脚本,主要为Mathematica v7提供脚本支持.(现在-script可以选择使用Mathematica 8制作.)alternate Mathematica shell与GNU的readline输入(使用python,*nix中只)资源:
MathSource对于各种应用程序,Wolfram自己的存储库有很多有用的缩小笔记本.另请参阅其他部分,例如
Current Documentation, Courseware 讲座, Demos为了演示.在数学维基教科书.
图书:
我无法弄清楚为什么我必须两次评估(在Mathematica 7中)进行分配.
第一次评估:
Unprotect[Rule];
Attributes[Rule]
pp = Plot | LogLinearPlot | ListPlot | ParametricPlot3D;
(h : pp)[True -> False] ^:= Print["Irrelevant data"]
(*
Out[2]= {SequenceHold}
During evaluation of In[1]:= UpSetDelayed::write: Tag Rule in (h:Plot|LogLinearPlot|ListPlot|ParametricPlot3D)[True->False] is Protected. >>
Out[4]= $Failed
*)
Run Code Online (Sandbox Code Playgroud)
从中可以看出Out[2]= {SequenceHold},Unprotect[Rule]工作,但错误消息另有说明.如果我第二次评估单元格,则赋值并且不会生成错误.
为什么会这样?
Mathematica具有CheckAbort允许捕获和处理用户生成和编程Abort的功能.但它不允许赶上通过这样的功能产生例如中断TimeConstrained和MemoryConstrained:
TimeConstrained[CheckAbort[Pause[100], Print["From CheckAbort"]], 1]
Run Code Online (Sandbox Code Playgroud)
(不打印"From CheckAbort").
有没有办法在Mathematica中捕获这样的中断?
编辑:我知道第三个参数,TimeConstrained并MemoryConstrained允许在中断的情况下评估一些代码,但这种方式不是我需要的:我需要一种方法来完全处理我的函数内部的这些中断,允许用户不关心它内部.
PS我之所以需要这个,是因为我有一个创建MathLink对象的函数,在任何中断或中止的情况下必须关闭,但在其他情况下则不能.