Ошибка Mathematica "не является целым числом"

Я провожу некоторые симуляции с Mathematica с помощью NDSolve, и мне нужно представить эффект температуры. Я определяю таблицу случайных чисел, а затем делаю из нее функцию следующим образом:

 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] не является ни целым числом, ни списком целых чисел".

Как я уже сказал, это на самом деле не проблема, но меня беспокоит, что он продолжает появляться... Есть ли способ узнать, откуда он взялся, или я должен просто выключить его?

заранее спасибо

1 ответ

Решение

Это произойдет, если вы получите доступ Bterp[] с символическим аргументом t

Попробуй это:

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

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

В сторону, IntegerPart[x]+1 такой же как Ceiling[x] (при условии x>0...)

Другие вопросы по тегам