3

Mathematica で式の評価中に生成される実際のメッセージを取得する方法はありますか? ODE を数値的に解いているとします。

In[1] := sol = NDSolve[{x'[t] == -15 x[t], x[0] == 1}, x, {t, 0, 1}, 
                       Method -> "ExplicitEuler"];

この場合、NDSolve::mxstエラーが表示され、 で 10000 ステップの最大数に達したことが通知されt == 0.08671962566152185ます。ここで$MessageList変数を見ると、メッセージ名だけが表示されます。t特に、終了を決定した場所の値に関する情報NDSolveが失われています。

今では、標準のアドオン パッケージの 1 つから関数solを使用していつでもその情報を取得できInterpolatingFunctionDomainますが、何らかの方法でメッセージからそれを引き出すことができれば、非常に役立ちます。

4

2 に答える 2

3

$MessagePrePrint を使用して、後で取得できるように各メッセージを保存する関数を設定できる場合があります。

于 2010-01-05T16:09:35.143 に答える
1

これが機能するかどうかはわかりませんが、エラーが発生した時点での特定のパラメーターの値だけを知りたい場合、それらを取得するための厄介な方法は、これらの変数をダミー値でグローバルに定義することです。これはループカウンターで機能しますが、 内から機能するかどうかはわかりませんNDSolve。もう 1 つのコツは、t を動的にして、t で評価されたセルを作成することです。

より洗練された (そしておそらく正しい) アプローチは、ReapSowを使用することです。

于 2010-01-06T07:16:26.287 に答える