相关疑难解决方法(0)

您的Mathematica工具包里有什么?

我们都知道Mathematica很棒,但它也经常缺乏关键功能.您在Mathematica中使用哪种外部包/工具/资源?

我将编辑(并邀请任何其他人也这样做)这个主要帖子包括专注于科学研究的一般适用性的资源,并且尽可能多的人会觉得有用.随意贡献任何东西,甚至是小代码片段(正如我在下面做的时间例程).

此外,在Mathematica 7及其他您发现自己,或从一些纸张/网站挖出的无证和有用的功能是非常受欢迎的.

请提供简短描述或评论为什么有什么好东西或它提供的实用程序.如果您使用会员链接链接到亚马逊上的书籍,请提及它,例如,在链接后面加上您的姓名.


包:

  1. LevelScheme是一个大大扩展Mathematica生产美观图的能力的软件包.我使用它,如果没有其他任何东西,那么对框架/轴刻度的大大改进控制.它的最新版本称为SciDraw,它将在今年的某个时候发布.
  2. David Park's Presentation Package(50美元 - 免费更新)
  3. Jeremy Michelson的grassmannOps软件包提供了使用Grassmann变量和具有非平凡换向关系的算子进行代数和微积分的资源.
  4. 约翰·布朗(John Brown)GrassmannAlgebra与格拉斯曼(Grassmann)和克利福德代数(Clifford algebras)合作的包和书.
  5. RISC(符号计算研究所)提供各种Mathematica(和其他语言)包可供下载.特别是,有自动定理证明的Theorema,以及Algorithmic Combinatorics小组软件页面中用于符号求和,差分方程等的多个包.

工具:

  1. MASH是Daniel Reeves出色的Perl脚本,主要为Mathematica v7提供脚本支持.(现在-script可以选择使用Mathematica 8制作.)
  2. 一个alternate Mathematica shell与GNU的readline输入(使用python,*nix中只)
  3. ColourMaths包允许您直观地选择表达式的各个部分并对其进行操作.http://www.dbaileyconsultancy.co.uk/colour_maths/colour_maths.html

资源:

  1. MathSource对于各种应用程序,Wolfram自己的存储库有很多有用的缩小笔记本.另请参阅其他部分,例如

  2. 数学维基教科书.

图书:

  1. Mathematica编程: Leonid Shifrin(web,pdf)的高级介绍是必读的,如果你想在Mathematica中做更多的For循环.我们很高兴在Leonid这里回答问题.
  2. 使用Mathematica量子方法作者:James …

resources wolfram-mathematica

149
推荐指数
22
解决办法
3万
查看次数

MathLink函数中的CheckAbort?

我刚刚发现这样的MathLink函数,LinkWrite并且LinkRead具有类似于它自己的内部的东西CheckAbort,可以吸收任何中止,并且不会进一步传播它们.

这可以很容易地显示LinkRead:

link = LinkLaunch[First[$CommandLine] <> " -mathlink"];
LinkRead[link];
LinkWrite[link, Unevaluated[Pause[10]]];
{LinkRead[link], Print["!!"]}
Run Code Online (Sandbox Code Playgroud)

在评估上面的代码后按Alt+ .,您将得到以下输出:

During evaluation of In[6]:= !!
Out[9]= {ReturnPacket[$Aborted], Null}
Run Code Online (Sandbox Code Playgroud)

如你所见,中止被吸收了LinkRead.

我的问题是它打破了我自己的评估流量控制CheckAbort.

有没有办法拦截将中止这种功能被吸收LinkReadLinkWrite

wolfram-mathematica mathlink

12
推荐指数
1
解决办法
243
查看次数

如何重新定义FrontEndEventActions?

美好的一天,

这个问题来自关于中止对全部输入序列的评估的问题.

我认为可能通过重新定义FrontEndEventActions两个事件来实现所需的行为:( "EvaluateCells"或按Shift+ Enter)和按Alt+ ..它应该是这样的:

SetOptions[$FrontEndSession, 
 FrontEndEventActions -> {"EvaluateCells" :> Last$PreRead, 
   {{"Alt", "."} :> AbortAllNextInputs}}]
Run Code Online (Sandbox Code Playgroud)

要么

SetOptions[$FrontEndSession, 
 FrontEndEventActions -> {{{"ShiftKey", "ReturnKeyDown"} :> Last$PreRead}
   {{"Alt", "."} :> AbortAllNextInputs}}]
Run Code Online (Sandbox Code Playgroud)

其中AbortAllNextInputsLast$PreRead定义如下:

AbortAllNextInputs := AbortProtect[
   $new$PreRead = True;
   last$PreRead = ToString[Definition[$PreRead], InputForm];
   ClearAll[$PreRead];
   $PreRead := # &] /; ! TrueQ[$new$PreRead]
Last$PreRead :=
 $PreRead := AbortProtect[
    $new$PreRead = False;
    ClearAll[$PreRead];
    If[last$PreRead === "Null", #, 
     ToExpression[last$PreRead]; $PreRead@#]
    ] &
Run Code Online (Sandbox Code Playgroud)

但我无法 …

wolfram-mathematica keyboard-shortcuts mathematica-frontend

5
推荐指数
1
解决办法
144
查看次数

你如何设置全局Abort处理程序?

在回答这个问题时,我建议 OP在他的笔记本开头打开一个流,并在结束时关闭它.但是,如果Abort生成了一个,则流将保持打开状态,如果他们尝试再次打开它而不先检查,则会造成严重破坏.如果仅对单个功能需要流,则解决方案将很简单,但整个笔记本都需要它.显然,可以添加一个检查来查看流是否已经打开,但有没有办法绑定到全局Abort处理程序,以便可以全局处理这类问题?

编辑:具体来说,我正在寻找一种方法来运行任意代码,Abort无论代码当前是否在其中运行CheckAbort.基本上,Abort如果可能的话,我想设置一个全局处理程序.如果这在笔记本级别存在,那就更好了.

wolfram-mathematica

5
推荐指数
2
解决办法
384
查看次数