有没有一种很好的方法来分析Mathematica中的代码?我希望能够递归(即,如果我说f[a_] := b[a],然后Profile[f[1]]应该给出几乎相同的输出Profile[b[1]]),但我会满足于能够做一些像应用于Timing每个相关的子表达式.如果我没有像特殊情况这样的东西会很好Module,但我想,比如,Profile[Module[{x=1+2},x!]]给我一个类似的输出
Time Expression Result
0 1 1
0 2 2
0 1 + 2 3
0 x$1234 3
0 x$1234 ! 6
0 Module[{x=1+2},x!] 6
6
Run Code Online (Sandbox Code Playgroud) 我遇到Mathematica中的"没有更多可用内存"错误消息.我明白"Parallelize []"并不(显然)会帮助我.两者都没有"ClearSystemCache []".
是什么赋予了?我只需要更多内存吗?
Needs["VectorAnalysis`"]
Needs["DifferentialEquations`InterpolatingFunctionAnatomy`"];
Clear[Eq4, EvapThickFilm, h, S, G, E1, K1, D1, VR, M, R]
Eq4[h_, {S_, G_, E1_, K1_, D1_, VR_, M_, R_}] := \!\(
\*SubscriptBox[\(\[PartialD]\), \(t\)]h\) +
Div[-h^3 G Grad[h] +
h^3 S Grad[Laplacian[h]] + (VR E1^2 h^3)/(D1 (h + K1)^3)
Grad[h] + M (h/(1 + h))^2 Grad[h]] + E1/(
h + K1) + (R/6) D[D[(h^2/(1 + h)), x] h^3, x] == 0;
SetCoordinates[Cartesian[x, y, z]];
EvapThickFilm[S_, G_, E1_, K1_, D1_, VR_, M_, R_] := …Run Code Online (Sandbox Code Playgroud) 我在同一台机器上安装了Mathematica 7.01和Mathematica 5.2.我希望能够在Mathematica 7.01会话中评估v.5.2内核中的代码.我的意思是运行Mathematica 7.0.1标准会话我希望有一个命令,比如kernel5Evaluate评估5.2内核中的一些代码,并将结果返回到7.01内核并链接7.01 FrontEnd笔记本,这样代码将在7.01内核.
例如(在标准的Mathematica v.7.01会话中):
In[1]:= solutionFrom5 = kernel5Evaluate[NDSolve[{(y^\[Prime])[x]==y[x],y[1]==2},y,{x,0,3}]]
Out[1]= {{y -> InterpolatingFunction[{{0., 3.}}, <>]}}
In[2]:= kernel5Evaluate[Plot3D[Sin[x y],{x,-Pi,Pi},{y,-Pi,Pi}]]
During evaluation of In[2]:= GraphicsData["PostScript", "\<\............
Out[2]= -SurfaceGraphics-
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,结果应该好像v.5.2内核在v.7.01 FrontEnd中设置为"Notebook's Kernel".当然solutionFrom5变量应该设置为v.5.2内核返回的实际解决方案.