0
我用NDSolve對Mathematica進行了一些模擬,我需要介紹溫度的影響。我定義了一個隨機數表,然後做一個函數出來的,這樣說: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]既不是整數也不是整數列表。
正如我所說,它不是一個真正的問題,但它讓我感到它一直在出現......有什麼辦法可以知道它來自哪裏,還是應該關掉它?
預先感謝您
這確實奏效,但現在我得到另一個錯誤: NDSolve :: ndfdmc:計算衍生物沒有維度與初始條件一致。 NDSolve求解一個微分矢量方程,所以我的猜測是它與NDSolve有關,在改變之後不考慮Bterp矢量... – Noel
你需要在更高層次上玩同樣的技巧 - 確保函數直接提供給ndsolve的定義是隻對數值進行求值。 (很常見的問題,你會認爲NDSolve,NIntegrate等甚至不會嘗試象徵性的評估,但它們確實如此) – agentp