重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

Mathematicaにおいて,あるパラメータnが0~1の範囲について,連立方程式をNSolveで解いてその結果をプロットさせようとしています。式は以下の通りです。(煩雑なので省略形です)

Plot[{変数群}/.NSolve[{代数方程式群}, {変数群}], {n, 0,1}]

ただいつ計算が終わるのかわからなくて・・・

いったい今どのくらい計算が進行しているのかモニタに表示する方法はないでしょうか??

A 回答 (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は完全に見栄えのためですので、なくても構いません。
    • good
    • 0
この回答へのお礼

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

お礼日時:2014/06/04 22:06

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!