相关疑难解决方法(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万
查看次数

防止Mathematica中的运行时错误雪崩

当笔记本超出一些功能时我遇到的一个典型情况 - 我评估一个表达式,但是我得到了Beep而不是正确的答案,然后是几十个无用的警告,接着是"进一步输出...将被抑制"

我觉得有用的一件事 - 在函数内部使用类似Python的"断言"来强制内部一致性.还有其他提示吗?

Assert[expr_, msg_] := If[Not[expr], Print[msg]; Abort[], None]
Run Code Online (Sandbox Code Playgroud)

编辑11/14 警告雪崩的一般原因是子表达式评估为"坏"值.这会导致父表达式计算为"坏"值,并且此"不良"会一直传播到根目录.内置评估一路上注意到不良并产生警告."坏"可能意味着表达错误的头部,列表中的元素数量错误,负的确定矩阵而不是正定义等等.一般来说,它不适合父表达式的语义.

解决这个问题的一种方法是重新定义所有函数,以便在"输入错误"时返回未评估的值.这将处理内置函数生成的大多数消息.执行像"Part"这样的结构操作的内置函数仍将尝试评估您的值并可能产生警告.

将调试器设置为"中断消息"可以防止出现大量错误,尽管将其一直打开似乎有点过头了

wolfram-mathematica

13
推荐指数
2
解决办法
1386
查看次数

订阅变量

有没有办法迫使Mathematica独立于其未订阅的对应物处理下标变量?进一步来说.说,我有以下定义:

Subscript[b, 1] = {{1, 2}}
Subscript[b, 2] = {{3, 4}}
b = Join[Subscript[b, 1], Subscript[b, 2]]
Run Code Online (Sandbox Code Playgroud)

现在我用的时候

Subscript[b, 1] 
Run Code Online (Sandbox Code Playgroud)

Mathematica将替换它

Subscript[{{1, 2}, {3, 4}},1]
Run Code Online (Sandbox Code Playgroud)

当我希望这些是三个独立的值时,所以改变b不会影响下标[b,..].可能吗?

wolfram-mathematica

10
推荐指数
1
解决办法
6259
查看次数

如何定义/ @ - like运算符

我想定义一个表单的新运算符x /==> y,其中运算符/==>被视为例如/@运算符Map,并被转换为MyFunction[x, y].有一个重要的方面:我希望结果运算符像任何两位运算符一样在前端运行,也就是说,两个字符(a Divide和a DoubleLongRightArrow)应该连接在一起,不应出现语法着色,它们是单击时可以一起选择,因此必须设置优先级.另外,我宁愿避免使用该 Notation`包.结果,我想看到这样的事情:

In[11]:= FullForm[x/\[DoubleLongRightArrow]y]

Out[11]//FullForm= MyFunction[x,y]
Run Code Online (Sandbox Code Playgroud)

有谁知道如何实现这一目标?

syntax wolfram-mathematica operators

7
推荐指数
2
解决办法
397
查看次数

有一个带下标和上标的参数

我想在mathematica中定义一个具有多个参数的对象/符号,例如:( S=(1-t)({b_i}^x,{b_i}^y)+t({b_{i+1}}^x,{b_{i+1}}^y)某种LaTeX表示法).在这个例子中,我试图描述的线段连接两个点b_ib_{i+1}.

我该如何定义这样的对象mathematica

我发现了以下两个问题:

但我不确定我是否正确使用它们.我所做的是以下内容.首先我调用:

Needs["Notation`"];

Symbolize[
ParsedBoxWrapper[
SubscriptBox["\[SelectionPlaceholder]", "\[Placeholder]"]]]

Symbolize[
ParsedBoxWrapper[
SuperscriptBox["\[SelectionPlaceholder]", "\[Placeholder]"]]]
Run Code Online (Sandbox Code Playgroud)

然后,我实际上定义了对象:

(1 - t) {Subscript[b, i]^x, Subscript[b, i]^y} + 
 t {Subscript[b, i + 1]^x, Subscript[b, i + 1]^y}
Run Code Online (Sandbox Code Playgroud)

这是做我想要的正确方法吗?

wolfram-mathematica

4
推荐指数
1
解决办法
3628
查看次数