0

我正在使用带有 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时间,是热场变化的时间。模拟运行良好,结果正确,但每次我收到此错误消息:

Part::pspec:“零件规格 1+IntegerPart[1000000000000 t] 既不是整数也不是整数列表。”

正如我所说,它不是一个真正的问题,但它不断出现让我感到困扰......有没有办法知道它来自哪里,或者我应该把它关掉?

先感谢您

4

1 回答 1

1

如果您使用Bterp[]符号参数访问,则会发生这种情况t

尝试这个:

ClearAll[Bterp]
Bterp[t_?NumericQ] := ....

http://support.wolfram.com/kb/3820

另外,IntegerPart[x]+1Ceiling[x](假设 x>0...)相同

于 2013-08-01T12:01:32.850 回答