请问我为何无法重现这个程序?
mathematica吧
全部回复
仅看楼主
level 3
在英文wiki上看到这张图,想照猫画虎自己写一个却发现一运行就耗尽我E5机子的16G内存然后卡死。
但是看图上好像很快就能跑出结果,请问是我哪里写错了么?附上原图和我写的版本。谢谢了。度盘1bnpNfFx
2014年08月27日 17点08分 1
level 3
贴一下代码吧,不知道会不会被度娘改。
bifurcate[f_, a0_, k0_, k_, while_: (True &)] := NestWhileList[f, a0, while, 2, k0+k-1] // Drop[#, k0] &
logistic = {r, y} \[RightTeeArrow] r y (1-y);
Row@{"Initial value: ", a0 = RandomReal[{0.1, 0.9}]}
Row@{"Points per r: ", density = 10^2}
Row@{"Initial k: ", k0 = 10^4}
Row@{"Time taken: ", Timing[
plotData=ParallelTable[
{ConstantArray[r, density], bifurcate[logistic[r, #] &, a0, k0, density]}\[Transpose],
{r, 3.5, 4, 0.0001}] // Flatten[#, 1] &;][[1]], " s"}
Row@{"Data length: ", plotData // Length}
2014年08月27日 17点08分 2
吧务
level 12
bifurcate[f_, a0_, k0_, k_, while_: (True &)] :=
NestWhileList[f, a0, while, 2, k0 + k - 1] // Drop[#, k0] &
logistic[r_, y_] := r y (1 - y);
Row@{"Initial value: ", a0 = RandomReal[{0.1, 0.9}]}
Row@{"Points per r: ", density = 10^2}
Row@{"Initial k: ", k0 = 10^4}
Row@{"Time taken: ",
Timing[plotData =
ParallelTable[{ConstantArray[r, density],
bifurcate[logistic[r, #] &, a0, k0,
density]}\[Transpose], {r, 3.5, 4, 0.0001}] //
Flatten[#, 1] &;][[1]], " s"}
Row@{"Data length: ", plotData // Length}
ListPlot[plotData, PlotStyle -> {PointSize[0], Opacity[.1]},
ImageSize -> 800, PlotRange -> {All, {0, 1}}]
你的问题出在logistic的定义,截图里的那个 \[RightTeeArrow] 符号在前文有定义,所以在你发的截图里这一行的字母都是绿色的,而你的代码这一行则是蓝色的
把这里直接改成函数的定义,或者在前面加一行
a_ \[RightTeeArrow] b_ := Function[a, b]
都可以,这里为了直观就直接用函数定义了
另外在用了并行的情况下这个点的计算是很快的,只是由于点太多所以ListPlot画图需要花好久
2014年08月28日 07点08分 3
吧务
level 12
多谢来自@xycr的指正
那个符号其实不是\[RightTeeArrow],而是\[Function],是Function的中缀形式,输入方式可以是Esc+fn+Esc或者\[Function]
一长一短,差距还是挺明显的
2014年08月28日 08点08分 4
十分感谢!
2014年08月28日 13点08分
很快就要到xycr刷屏的日子了。
2014年08月28日 16点08分
回复 苹果_nb :[吐舌]
2014年08月28日 23点08分
1