※ 引述《chungyuandye (养花种鱼数月亮赏星星)》之铭言:
: ※ 引述《suinegoast (想不到暱称)》之铭言:
: : 小弟在研究遇到了一些技术性的瓶颈
: : 指令FindRoot求解1200条方程式耗时25秒
: : 使用Do循环执行60000次上述事情
: : 估计费时17天8小时40分钟
: : 请问版上高手是否知道更省时的办法呢?感激不尽!
: Exp[x - a] == y, y^2 == x+b
: data = Flatten[Table[{a, b}, {a, 1, 2, 0.1}, {b, 0, 1, 0.1}], 1];
: (* 平行运算 *)
: ParallelMap[
: FindRoot[{Exp[x - #[[1]]] == y,
: y^2 == x + #[[2]]}, {{x, 1}, {y, 1}}] &, data]
: 如果有Lightweight Grid,记得安装打开,整个实验室的电脑一起算。
图示法 (可视情况增加需要)
data = Flatten[Table[{a, b}, {a, 1, 2, 1/10}, {b, 0, 1, 1/10}], 1];
(*Parallel computing*)
ParallelMap[
FindRoot[{Exp[x - #[[1]]] == y,
y^2 == x + #[[2]]}, {{x, 1}, {y, 1}}] &, data]
Flatten@Table[{Exp[x - a], Sqrt[x + b], -Sqrt[x + b]}, {a, 1, 2,
0.1}, {b, 0, 1, 0.1}];
Plot[%, {x, Min[({x, y} /. %2)[[All, 1]]],
Max[({x, y} /. %2)[[All, 1]]]}, PlotStyle -> {Red, Blue, Blue}];
ListPlot[{x, y} /. %2, PlotStyle -> {Green}];
{{x, Min[({x, y} /. %2)[[All, 1]]],
Max[({x, y} /. %2)[[All, 1]]]}, {y, Min[({x, y} /. %2)[[All, 2]]],
Max[({x, y} /. %2)[[All, 2]]]}}
Show[%%%, %%]
结果:
http://enjoy.phy.ntnu.edu.tw/file.php?file=/userdir/5443/Parallelcomputing.pdf
(http://tinyurl.com/b9ynwq5)