我们都知道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为了演示.在数学维基教科书.
图书:
我刚才问如何使allTrue[{x,list},test]功能保护的占位符号x从评估当前环境相同的方式为Table[expr,{x,...}]保护x
我最终使用的配方间歇性失败,我发现问题是由列表自动转换为PackedArrays引起的.这是一个失败的例子
SetAttributes[allTrue, HoldAll];
allTrue[{var_, lis_}, expr_] :=
LengthWhile[lis,
TrueQ[ReleaseHold[Hold[expr] /. HoldPattern[var] -> #]] &] ==
Length[lis];
allTrue[{y, Developer`ToPackedArray[{1, 1, 1}]}, y > 0]
Run Code Online (Sandbox Code Playgroud)
无论是否自动转换为什么,我想allTrue[{x,{1,2,3}},x>0]返回,实现它的更好方法是什么?True{1,2,3}PackedArray
我想一个函数AnyTrue[expr,{i,{i1,i2,...}}]用来检查是否expr是True任何的i1,i2...它应该是就好像AnyTrue是Table其次Or@@%,与它只评价差异expr直到第一次True被发现.
短路部分是可选的,我真正想知道的是模拟Table非标准评估序列的正确方法.
更新11/14
这是Michael的解决方案,您可以使用它来链接"for all"和"there exists"支票
SetAttributes[AllTrue, HoldAll];
SetAttributes[AnyTrue, HoldAll];
AllTrue[{var_Symbol, lis_List}, expr_] :=
LengthWhile[lis,
TrueQ[ReleaseHold[Hold[expr] /. HoldPattern[var] -> #]] &] ==
Length[lis];
AnyTrue[{var_Symbol, lis_List}, expr_] :=
LengthWhile[lis,
Not[TrueQ[ReleaseHold[Hold[expr] /. HoldPattern[var] -> #]]] &] <
Length[lis];
AllTrue[{a, {1, 3, 5}}, AnyTrue[{b, {2, 4, 5}}, EvenQ[a + b]]]
AnyTrue[{a, {1, 3, 5}}, AllTrue[{b, {2, 4, 5}}, EvenQ[a + b]]]
Run Code Online (Sandbox Code Playgroud)