Я запускаю некоторые моделирования с помощью Mathematica с 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 [1000000000000 t] не является ни целым числом, ни целым числом».
Как я уже сказал, это не проблема, но мне кажется, что она продолжает появляться ... Есть ли способ узнать, откуда она взялась, или мне просто отключить ее?
Спасибо заранее
Это действительно работало, но теперь я получаю еще одну ошибку: NDSolve :: ndfdmc: Вычисленные производные не имеют размерности, соответствующей начальным условиям. NDSolve решает дифференциальное векторное уравнение, поэтому я предполагаю, что он имеет какое-то отношение к NDSolve, не рассматривая Bterp вектор после изменения ... – Noel
Вам нужно сыграть тот же трюк на более высоком уровне - убедитесь, что функция напрямую заданный для ndsolve, определяется так, что он оценивает только числовые значения. (очень распространенная проблема, вы могли бы подумать, что NDSolve, NIntegrate и т. д. даже не попытаются выполнить символическую оценку, но они это делают) – agentp