我们都知道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项目时,我都遇到了这个问题:防止Mathematica中的运行时错误雪崩,即Mathematica的错误信息是不透明的,过时的和军团.
然后,我们的想法是禁用所有Mathematica自己的错误消息,并在每个功能和模块中实现您自己的类型检查和错误消息.然而,我还没有找到一种简单而有效的方法来完成这项工作并最终得到,例如,某些函数生成错误20函数调用深度,然后获得整个级联的错误消息一直回到主例程.
您将如何为此设置一个简单的机制,只在遇到错误的函数和函数调用链的简单列表中生成一条错误消息?
编辑:因为它提出了几个答案; 我特意在寻找关于它产生的输出的轻量级(否则我可以坚持使用Mathematica的错误消息),并且显然在计算开销方面也是轻量级的.因此,虽然Stack与Trace上开销肯定是轻,他们在复杂项目输出不快速分析和需要做一些工作简化它.
当笔记本超出一些功能时我遇到的一个典型情况 - 我评估一个表达式,但是我得到了Beep而不是正确的答案,然后是几十个无用的警告,接着是"进一步输出...将被抑制"
我觉得有用的一件事 - 在函数内部使用类似Python的"断言"来强制内部一致性.还有其他提示吗?
Assert[expr_, msg_] := If[Not[expr], Print[msg]; Abort[], None]
Run Code Online (Sandbox Code Playgroud)
编辑11/14 警告雪崩的一般原因是子表达式评估为"坏"值.这会导致父表达式计算为"坏"值,并且此"不良"会一直传播到根目录.内置评估一路上注意到不良并产生警告."坏"可能意味着表达错误的头部,列表中的元素数量错误,负的确定矩阵而不是正定义等等.一般来说,它不适合父表达式的语义.
解决这个问题的一种方法是重新定义所有函数,以便在"输入错误"时返回未评估的值.这将处理内置函数生成的大多数消息.执行像"Part"这样的结构操作的内置函数仍将尝试评估您的值并可能产生警告.
将调试器设置为"中断消息"可以防止出现大量错误,尽管将其一直打开似乎有点过头了