私は2つのパネルを持っているようにしています。左側はグラフィックと2つのロケータを示し、右側はズームインしたバージョンをロケータによって定義された領域に示します。動的対話性の問題
私は
ClearAll[mndpt];
mndpt = Compile[{{c, _Complex}, {maxiter, _Integer}},
Module[{z, iters},
iters = 0.;
z = c;
While[(iters < maxiter) && ([email protected] < 2),
iters++;
z = z^2 + c];
Sqrt[iters/maxiter]],
{{z, _Complex}},
CompilationTarget \[Rule] "C",
RuntimeOptions \[Rule] "Speed"];
を試してみたと
Manipulate[
Grid[
{{DensityPlot[mndpt[x + y*I, 200],
{x, -2, 1}, {y, -1.5, 1.5},
PlotRange \[Rule] {0, 1}, PlotPoints \[Rule] 80,
ColorFunction \[Rule] "Rainbow"],
DensityPlot[mndpt[x + y*I, 200],
[email protected]{x, p1[[1]], p2[[1]]}, [email protected]{y, p1[[2]], p2[[2]]},
PlotRange \[Rule] {0, 1}, PlotPoints \[Rule] 80,
ColorFunction \[Rule] "Rainbow"]}}],
{{p1, {-1, -1}}, Locator}, {{p2, {0, 1}}, Locator}]
は、右のパネルは、その後動作しないん
なぜそうなのか私の質問は、ありますか?ご覧のように、「DensityPlot :: pllim:Range specification {x、-1,0}は{x、xmin、xmax}の形式ではありません」と不平を言っています。実際、私は一般的に困惑しています。何が起こっている?スコープの問題のいくつかの並べ替え?評価の問題?そして、どうすればそれを動かすことができますか?これはおそらく単純ですが、私はこのフロントエンドのものを本当に理解したことはありません。
EDIT:この質問は、私の愚かさが急激に(願わくは瞬時に)急増していることが判明しました。コメントの中でSimonが指摘しているように、この2つを取り除くと(この作業をするために私は盲目的に追加した)Dynamics
はすべて正常に動作します。それがうまくいかなかったように、私は最初の数回をした理由を他の誰もが知っている、
ので:つまり、
Manipulate[
Grid[
{{DensityPlot[mndpt[x + y*I, 200],
{x, -2, 1}, {y, -1.5, 1.5},
PlotRange \[Rule] {0, 1}, PlotPoints \[Rule] 80,
ColorFunction \[Rule] "Rainbow"],
DensityPlot[mndpt[x + y*I, 200],
{x, p1[[1]], p2[[1]]},{y, p1[[2]], p2[[2]]},
PlotRange \[Rule] {0, 1}, PlotPoints \[Rule] 80,
ColorFunction \[Rule] "Rainbow"]}}],
{{p1, {-1, -1}}, Locator}, {{p2, {0, 1}}, Locator}]
は正しいことを行います。
一方、「DensityPlot :: pllim:範囲指定{x、-1,0}は{x、xmin、xmax}の形式ではありません。困惑する。私はそれがレオニードによって説明されていると思います。(簡潔に言えば、ClearAttributes[Dynamic, ReadProtected]
を入力して??Dynamic
を参照してください。定義はDynamic/:MakeBoxes[BoxForm`x$_Dynamic,StandardForm]:=
などです)。フロントエンドプログラミングについての私の理解は無視できるので、私はここで説明しようとしないので、誰かがそれを説明する答えを投稿しても、それは認められるだろう。
2つの「ダイナミック」を削除しても問題ありません。 – Simon
@imimああ、ありがとう!私は実際にそこに置いていました。なぜなら、「うまくいきませんでした」。誰が私がやったことを知っている...私はそれを受け入れることができる答えとしてあなたのコメントを入れてください。また、なぜ「ダイナミック」が混乱しているのか分かっていれば知りたいです。 – acl
@ Simon OK、それはおそらく 'Dynamic'が属性' HoldFirst'を持っているからです。または? – acl