数学"is not an integer"错误



我正在使用带有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]+1Ceiling[x]相同(假设x>0…)

相关内容

最新更新