Mathematicaで生成されたメッセージのイントロスペクション

StackOverflow https://stackoverflow.com/questions/2007160

  •  18-09-2019
  •  | 
  •  

質問

Mathematicaで式の評価中に生成された実際のメッセージを取得する方法はありますか?私は数値的ODEを解くことだと言うと、それは、最大吹くので、のような。

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

この場合、私は10000のステップの最大数がNDSolve::mxstに達した私に言って、t == 0.08671962566152185エラーを取得します。私は$MessageList変数を見れば今、私は唯一のメッセージ名を受け取ります。特に、tはやめることにしNDSolveの値についての情報が失われています。

さて、私はいつも、標準アドオンパッケージのいずれかからsol機能を使用してInterpolatingFunctionDomainからその情報を得ることができますが、私は何とかメッセージからそれを引くことができれば、それは非常に参考になります。

役に立ちましたか?

解決

あなたが後の検索のためのメッセージのそれぞれを離れて格納します機能を設定するために$ MessagePrePrintを使用することができるかもしれません。

他のヒント

これが機能するかどうかは分かりませんが、あなたが知りたい唯一のことは、エラーの時点で特定のパラメータの値である場合に、それらを得るための場しのぎの方法は、世界的にダミーの値でこれらの変数を定義することです。これは、ループカウンタで動作しますが、それはNDSolve内から動作するかどうかはわかりません。もう一つのその場しのぎではトンダイナミックに作るとtで評価セルを持っていることであろう。

よりエレガント(おそらく正しい)アプローチを使用することであろうシェム をまくます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top