Re: [問題] 如何加速FindRoot運算速度?
※ 引述《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)
--
Maxwell's Electromagnetic Equations
▽‧D=ρ ∮D‧ds=Q
▽╳E=-dB/dt ∮E‧dl=-d(∫B‧ds)/dt
▽‧B=0 ∮B‧ds=0
▽╳H=J+dD/dt ∮H‧dl=I+d(∫D‧ds)/dt
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.168.68.94
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):
Mathematica 近期熱門文章
PTT數位生活區 即時熱門文章