• ベストアンサー

Mathematicaの計算進行状況

Mathematicaにおいて,あるパラメータnが0~1の範囲について,連立方程式をNSolveで解いてその結果をプロットさせようとしています。式は以下の通りです。(煩雑なので省略形です) Plot[{変数群}/.NSolve[{代数方程式群}, {変数群}], {n, 0,1}] ただいつ計算が終わるのかわからなくて・・・ いったい今どのくらい計算が進行しているのかモニタに表示する方法はないでしょうか??

質問者が選んだベストアンサー

  • ベストアンサー
  • sanze_hui
  • ベストアンサー率100% (6/6)
回答No.1

MathematicaはPlotでグラフを描くとき、一通りnを動かしてみて変化が大きいところがあったら細かく調べていく、ということを再帰的に行います(オプションMaxRecursionを調べてみてください)。 なので、いつ計算が終わるのかはやってみるまで分かりません。 一応、現時点で評価しているnを表示する事ならば、オプションEvaluationMonitorを使って Plot[x /. Last@NSolve[x^2 == n, {x}], {n, 0, 1}, EvaluationMonitor :> Print[n]] とすれば可能です(ここでは単純な例としてx^2==nを解いています)。 が、やはりどのnについて解くのかを自分で決めたほうが良いと思います。 TableとListLinePlotを使って ListLinePlot[ Table[{n, x /. Last@NSolve[x^2 == n, {x}]}, {n, 0, 1, 1/1000}] ] とするのが良いと思います。 この例ではnを1/1000刻みで合計1001回計算することを自分で決めることができます。 こうしておけば進行状況を見たい場合に、Monitorを使って Monitor[ ListLinePlot[ Table[{n, x /. Last@NSolve[x^2 == n, {x}]}, {n, 0, 1, 1/1000}] ], ProgressIndicator[n]] とすれば表示させることができます。 ProgressIndicatorは完全に見栄えのためですので、なくても構いません。

galian33
質問者

お礼

Mathematicaのページ見ても用語が多すぎて全然わからなかったので,非常に助かりました! 具体的に説明わかりやすかったです。ありがとうございました!!

すると、全ての回答が全文表示されます。

関連するQ&A