在Equal我们阅读的文档页面上
如果机器精度或更高的近似数字最多与它们的最后七位二进制数字(大致是它们的最后两位小数位)不同,则认为它们是相等的.
以下是示例(32位系统;对于64位系统,在中间添加一些零):
In[1]:= 1.0000000000000021 == 1.0000000000000022
1.0000000000000021 === 1.0000000000000022
Out[1]= True
Out[2]= True
Run Code Online (Sandbox Code Playgroud)
我想知道Mathematica中的Equal函数的"正常"模拟是否会丢弃最后7个二进制数字?
在新版本的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和其他计算机数学系统中,数字在内部以二进制形式存储.但是,当使用这些函数导出它们时Put,PutAppend它们会转换为近似小数.当您使用这些函数导入它们时,Get它们将从此近似十进制表示形式恢复为二进制形式.
问题是恢复的数字是否总是与原始二进制数相同,如果不是总是,在哪些情况下它不是,差异有多大?我对Put- Get循环(在同一台计算机系统上)特别感兴趣.
以下两个简单的实验表明,Mathematica中的Put- Get循环可能始终精确地恢复原始数字,即使对于任意精度数字:
In[1]:= list=RandomReal[{-10^6,10^6},10000];
Put[list,"test.txt"];
list2=Get["test.txt"];
Order[list,list2]===0
Order[Total@Abs[list-list2],0.]===0
Out[4]= True
Out[5]= True
In[6]:= list=SetPrecision[RandomReal[{-10^6,10^6},10000],50];
Put[list,"test.txt"];
list2=Get["test.txt"];
Order[list,list2]===0
Total@Abs[list-list2]//InputForm
Out[9]= True
Out[10]//InputForm=
0``39.999515496936205
Run Code Online (Sandbox Code Playgroud)
但也许我错过了什么?
使用更正确的测试代码,我发现实际上这些测试只显示恢复的数字具有相同的二进制,RealDigits但它们的Precisions甚至在Equal意义上也可能不同.以下是更正确的测试:
test := (Put[list, "test.txt"];
list2 = Get["test.txt"];
{Order[list, list2] === 0,
Order[Total@Abs[list - list2], 0.] === 0,
Total[Order @@@ RealDigits[Transpose[{list, list2}], 2]],
Total[Order @@@ Map[Precision, Transpose[{list, list2}], {-1}]],
Total[1 - …Run Code Online (Sandbox Code Playgroud) 这个问题来自最近的问题" 正确的方法来限制Mathematica内存使用? "
我想知道,是否有可能以编程方式重新启动MathKernel,使当前的FrontEnd进程连接到新的MathKernel进程并在新的MathKernel会话中评估一些代码?我的意思是"透明"重启,它允许用户继续使用FrontEnd,同时拥有新的MathKernel流程,其中一些代码来自之前评估/评估的内核?
这个问题的动机是有一种方法可以在不中断计算而占用太多内存的情况下自动重启MathKernel .换句话说,计算应该在新的MathKernel过程中自动继续,而不与用户交互(但保持用户与Mathematica最初交互的能力).在新内核中应该评估什么代码的细节当然是针对每个计算任务的.我正在寻找一个通用的解决方案如何自动继续计算.
Definition"知道"如何定义符号的值:使用Set或SetDelayed.但是怎么样?据我了解,在分配符号值后,评估者如何分配符号:使用Set或SetDelayed.它可以通过函数来说明,该函数OwnValues总是返回定义Head RuleDelayed.如何Definiton获得这些信息?
In[1]:= a=5;b:=5;
Definition[a]
Definition[b]
OwnValues[a]
Out[2]= a=5
Out[3]= b:=5
Out[4]= {HoldPattern[a]:>5}
Run Code Online (Sandbox Code Playgroud) 我们可以使用删除特定上下文中的所有符号Remove["context`*"].但是有可能将"context`"自己从系统中删除,以便它不再被列入Contexts[]?
我在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
据我最近了解到,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.有没有办法看到它们?
最近,我发现了一些旧帖子上MathGroup其中无证命令行选项的使用-batchinput和-batchoutput所示:
If test.mma contains the following commands:
a=2+2
b=10!;
a+b
then, running Mathematica in batch mode, only output for the first and
third commands goes to stdout:
# math -batchinput -batchoutput < test.mma
4
3628804
Run Code Online (Sandbox Code Playgroud)
但是当尝试在Windows下重现此行为时,我只在控制台窗口中打印出第一个输出.我究竟做错了什么?
请考虑 :
dalist = {{9, 6}, {5, 6}, {6, 0}, {0, 5}, {10, 8}, {1, 2}, {10, 4}, {1, 1}, {7, 7},
{6, 8}, {5, 3}, {6, 10}, {7, 4}, {1, 8}, {10, 0}, {10, 7}, {6, 3}, {4, 0},
{9, 2}, {4, 7}, {1, 6}, {10, 8}, {7, 8}, {0, 10}, {3, 4}, {0, 0}, {8, 5},
{4, 5}, {6,0}, {2, 9}, {2, 4}, {8, 4}, {7, 4}, {3, 6}, {7, 10}, {1, 10},
{1, 4}, {8, 0}, {8, …Run Code Online (Sandbox Code Playgroud)