我正在使用带有NDSolve的Mathematica进行一些模拟,我需要介绍温度的影响。我定义了一个随机数表,然后用它做一个函数,这样:
randomtablex =
Table[RandomVariate[NormalDistribution[]], {i, 1,
IntegerPart[3 tspacer/deltats] + 1}];
randomtabley =
Table[RandomVariate[NormalDistribution[]], {i, 1,
IntegerPart[3 tspacer/deltats] + 1}];
randomtablez =
Table[RandomVariate[NormalDistribution[]], {i, 1,
IntegerPart[3 tspacer/deltats] + 1}];
Bterp[t_] :=
{randomtablex[[IntegerPart[t/deltats] + 1]],
randomtabley[[IntegerPart[t/deltats] + 1]],
randomtablez[[IntegerPart[t/deltats] + 1]]};
其中3tspacer
是积分时间,deltats
是热场变化的时间。模拟运行良好,结果是正确的,但每次我收到这个错误消息:
部件::pspec:"部件规范1+IntegerPart[10000000t]既不是整数,也不是整数列表。"
正如我所说,这并不是一个真正的问题,但它不断出现让我感到困扰。。。有没有办法知道它是从哪里来的,或者我应该把它关掉?
提前感谢
如果使用符号参数t
访问Bterp[]
,则会发生这种情况
试试这个:
ClearAll[Bterp]
Bterp[t_?NumericQ] := ....
http://support.wolfram.com/kb/3820
此外,IntegerPart[x]+1
与Ceiling[x]
相同(假设x>0…)