Mathematica赋值语句不工作
我写了一段代码,求不同精度下Log函数的值,结果发现,在循环体外,赋值语句不工作,总是显示“tag Times in `xxxxis Protected. >>” , xxxx是要赋的值。经过多次试验发现,仅仅循环外的第1条语句不工作。而且令人奇怪的是,在赋值语句之前插入一条一个Print语句,就可以正常工作了。下面是我的代码Print["Mathematica:",$VersionNumber];
digArr={20,30,40,50,60,70,80,90,100,125,158,199,251,316,398,501,630,794,
1000,1258,1584,1995,2511,3162,3981,5011,6309,7943,10000,17782,31622,56234,100000};
testTimes=7;
For ,i++,
prec=digArr[];
n=IntegerPart]];
x=N-1,prec];
y=N,prec];
j=n;
For [totalTime=0.0, totalTime<0.5, j*=2,
n=j;
totalTime=(Timing,{n}]][]-AbsoluteTiming][]);
(* Print["n=",n];
Print["totalTime=",totalTime];*)
]
For [minT=10^9; maxT=-10^9; timeSum=0.0;j=1,
j<= testTimes,j++,
(*totalTime=Timing,{n}]][]-Timing][];*)
totalTime=AbsoluteTiming,{n}]][]-AbsoluteTiming][];
(* AbsoluteTiming get more higher time resolution ratio *)
totalTime*=1000;
(*Print["totalTime is ",totalTime, "ms"];*)
timeSum += totalTime;
minT=Min;
maxT=Max;
]
Print[""];
t=(timeSum-(minT+maxT))/(testTimes-2);
Print;
]
关于程序的解释。
1. 程序求各种不同精度下的Log函数的耗时。
2. 每个精度下,测试7次,去掉一个最大值,去掉一个最小值,求其余5次测试的值。
3. 对于每次调用Log函数,首先做一个测试,求出一个合适的n值,使得重复调用n次Log函数所花费的时间大于0.5秒。
4. 在我的运行环境,如果去掉倒数第三行那个Print语句,其后的赋值语句不工作。与Print的内容无关,也与赋值语句等号左边和等号右边的内容无关。
各位 Mathematica 资深用户,能否帮我看看?,到底是什么问题,是我的环境的问题? 还是Mathematica的问题?还是我不了解Mathematica的某些特性而写的代码有问题? 我试了一下,没有任何问题 我在 WinXPSP3 & Mathematica9.0.1.0 下测试(原谅我还在用这么古老的系统),
即便注释掉第一行Print语句,运行也是正常的。 出现“tag Times in `xxxxis Protected. >>” 应该是For后面没有加分号的原因;
第一个For改用Do更好,Do gxqcn 发表于 2017-12-13 11:17
我在 WinXPSP3 & Mathematica9.0.1.0 下测试(原谅我还在用这么古老的系统),
即便注释掉第一行Print语句 ...
确实够老的,不过,我也挺保守的。如果没有发现什么问题,总不愿意用新的。 chyanog 发表于 2017-12-13 12:00
出现“tag Times in `xxxxis Protected. >>” 应该是For后面没有加分号的原因;
第一个For改用Do更好,D ...
chyanog 和 hujunhua所言极是。增加一个分号,问题就解决了。
这是我的第一个Mathematica程序,带有明显的C语言风格。 liangbch 发表于 2017-12-14 09:02
确实够老的,不过,我也挺保守的。如果没有发现什么问题,总不愿意用新的。
哈哈哈,我依然还是严重的更新党.
琢磨了下,之所以喜欢更新,主要还是因为习惯从软件开发者的视角看,更新就是更加的新,^_^
页:
[1]