我刚注意到如果你在MMA(8.0.1/win7-64)中有这个:
然后你把它复制到SO(只是ctrl-c ctrl-v),你得到这个:
(maxY - minY)/stepy/(maxX - minX)/stepx
Run Code Online (Sandbox Code Playgroud)
这在数学上是等价的.它应该是这样的:
((maxY - minY)/stepy)/((maxX - minX)/stepx)
Run Code Online (Sandbox Code Playgroud)
或者这个(InputForm以上):
((maxY - minY)*stepx)/((maxX - minX)*stepy)
Run Code Online (Sandbox Code Playgroud)
它不是由StackOverflow的内部引起的,因为与NotePad的副本相同.
是否有更多这样的问题(特别是在使用SO时,一般情况下)我们应该注意什么?
是什么导致这种情况,可以在我们这边修好,如果没有,最好的解决办法是什么?
在新版本的Mathematica中,我们拥有功能齐全的老式Mathematica帮助浏览器.但是版本5的遗留文档未包含在Mathematica的新版本中.这个遗留文档只占用209МB的磁盘空间,从Mathematica的新版本中访问它是有用的.
将Mathematica 5.2和Mathematica 7或8安装在同一台机器上,如何通过老式的帮助浏览器从新版本中访问旧文档?
我试图从中复制Documentation文件夹
C:\Program Files\Wolfram Research\Mathematica\5.2\Documentation
Run Code Online (Sandbox Code Playgroud)
至
C:\Documents and Settings\All Users\Application Data\Mathematica\Application\LegacyDocumenation
Run Code Online (Sandbox Code Playgroud)
现在,旧版帮助浏览器内部显示"帮助浏览器"作为AddOn.但它不能正常工作.
有关调整Mathematica 5中帮助浏览器外观的一些有用信息,请参见此处.但我不知道如何将其应用于Mathematica的新版本.
这个问题来自最近的问题" 正确的方法来限制Mathematica内存使用? "
我想知道,是否有可能以编程方式重新启动MathKernel,使当前的FrontEnd进程连接到新的MathKernel进程并在新的MathKernel会话中评估一些代码?我的意思是"透明"重启,它允许用户继续使用FrontEnd,同时拥有新的MathKernel流程,其中一些代码来自之前评估/评估的内核?
这个问题的动机是有一种方法可以在不中断计算而占用太多内存的情况下自动重启MathKernel .换句话说,计算应该在新的MathKernel过程中自动继续,而不与用户交互(但保持用户与Mathematica最初交互的能力).在新内核中应该评估什么代码的细节当然是针对每个计算任务的.我正在寻找一个通用的解决方案如何自动继续计算.
如何检测前端令牌是否可以执行?或者,如何检测前端令牌是否未能执行?
示例:如果未选择任何内容,则"编辑" - >"复制"命令不可用. FrontEndTokenExecute["Copy"]在这种情况下会发出哔哔声,但它没有给我(编程)指示它已经失败了.
我在Mathematica 7.0.1中Mesh生成的3D表面上渲染线条时遇到问题:ContourPlot3D
p=ContourPlot3D[x^4+y^4+z^4-(x^2+y^2+z^2)^2+3(x^2+y^2+z^2)==3,
{x, -2,2}, {y, -2, 2}, {z,-2,2},
BoundaryStyle->Directive[Black,Thickness[.003]],
ContourStyle->Directive[Orange,Opacity[0.5],Specularity[White,300]],
PlotPoints->90,Ticks->None,
MeshStyle->Directive[GrayLevel[.7],Thickness[.001]],
Lighting->{{"Directional",RGBColor[1,1,1],
{ImageScaled@{1,0,1},ImageScaled@{0,0,0}}}}];
p=Graphics[Inset[p,{0,0},Center,{1,1}],
PlotRange->{{-.5,.5},{-.5,.5}},Frame->True]
Run Code Online (Sandbox Code Playgroud)

仔细看看它们:
Show[p, PlotRange -> {{-.16, -.05}, {0, .1}}]
Run Code Online (Sandbox Code Playgroud)

您会看到灰色Mesh线条在许多地方与表面形成三角形重叠,甚至看起来是虚线.有办法避免这种情况吗?
3d rendering wolfram-mathematica vector-graphics mathematica-frontend
有时,最好为调色板(按钮)设置一些初始化代码.例如,它可以定义调色板按钮使用的一些函数.
为调色板定义/运行初始化代码的最简单和最好的方法是什么?
CreatePalette等)我经常将Mathematica代码从网站(例如SO)复制到笔记本中.代码通常被粘贴为单个输入单元格.我正在寻找一种简单的方法将其粘贴为几个输入单元格,以便于逐步评估.
例如,
a = 2;
f[x_] := x^a
Plot[f[x], {x,0,2}]
Run Code Online (Sandbox Code Playgroud)
理想情况下会粘贴为两个输入单元格.最好还应保留手动格式化(即原始换行符)(默认粘贴不是这种情况).
通常,如果选择所有输入单元格(ALT-单击),将它们复制到文本编辑器中,然后将生成的文本复制回笔记本,应该与复制的原始单元格相当.
据我最近了解到,Mathematica中有一些类型的表达式由FrontEnd自动解析.
例如,如果我们评估,HoldComplete[Rotate[Style[expr, Red], 0.5]]我们看到FrontEnd不显示原始表达式:

是否可以控制FrontEnd的这种行为?
是否有可能获得由FrontEnd自动解析的完整表达式列表?
我们可以看到MakeBoxes使用时的调用Print:
On[MakeBoxes]; Print[HoldComplete@Rotate["text", Pi/2]]
Run Code Online (Sandbox Code Playgroud)
但是复制粘贴打印输出会改变表达式:HoldComplete[Rotate["text", 1.5707963267948966]].它表明Print不尊重HoldComplete.
在创建输出时,Cell也应该有调用MakeBoxes.有没有办法看到它们?
TortoiseSVN(以及其他Tortoise客户端)包括一个用于在Mathematica中区分笔记本文件的脚本.Mathematica的Diff功能在AuthorTools包中实现(也许有更好的东西?)
该脚本目前的工作原理是在临时目录中创建一个小型笔记本文件,并在前端打开它.笔记本有一个大按钮,可以做差异,并有文件名进行硬编码.
缺点是具有diff代码的笔记本将保留在临时目录中,并且不会被清除.每次我们做差异时,似乎没有必要打开辅助笔记本.
是否可以从命令行启动diff功能以避免通过临时笔记本?或者有没有其他强大的方法来改善这个过程并避免使用辅助笔记本乱丢临时文件夹?
欢迎任何改善差异化体验的建议!
请注意,由于TortoiseSVN是一个Windows程序,我主要对基于Windows的解决方案感兴趣.
这是脚本生成的示例笔记本.我意识到它需要清理,但是上次我检查它在版本5中工作了(!),所以我不想不必要地触摸它(没有明显改进的东西).
Notebook[{
Cell[BoxData[ButtonBox["\<\"Compare Notebooks\"\>",
ButtonFrame->"DialogBox", Active->True, ButtonEvaluator->Automatic,
ButtonFunction:>(Needs["AuthorTools`"]; NotebookPut[Symbol["NotebookDiff"]["one.nb", "two.nb"]])
]], NotebookDefault] },
Saveable->False, Editable->False, Selectable->False, WindowToolbars->{},
WindowFrame->ModelessDialog, WindowElements->{},
WindowFrameElements->CloseBox, WindowTitle->"Diff",
ShowCellBracket->False, WindowSize->{Fit,Fit}
]
Run Code Online (Sandbox Code Playgroud) 我们可以为这样的变量创建一个实时监视器:
CreatePalette@Panel@Row[{"x = ", Dynamic[x]}]
Run Code Online (Sandbox Code Playgroud)
(如果x恰好是类似的话,这会更有趣和有用$Assumptions.设置一个值然后忘记它就很容易了.)
不幸的是,如果重新启动内核(Quit[]然后评估一些内容),这将停止工作.调色板不会再显示值的变化x.
有没有办法做到这一点,所以它在内核会话中保持工作?我发现自己经常重启内核.(如果生成的调色板导致内核在完成后自动启动Quit.)
更新: 如评论中所述,事实证明,只有在我们通过评估退出时,调色板才会停止工作Quit[].使用时Evaluation -> Quit Kernel -> Local,它会继续工作.