Numerically Solving a System of Differential Equations in Parallel?
Show older comments
Hello,
If I have a system of coupled differential equations:
dx1dt = f1(x1,x2)
dx2dt = f2(x1,x2)
Is there a way to solve this system of differential equations in parallel? (I'm thinking something like one function computes dx1dt and another function computes dx2dt and the two functions communicate with each other in order to share x1 and x2 after each time step.)
Thank you,
Kevin
Answers (2)
Mischa Kim
on 4 Apr 2014
2 votes
5 Comments
Kevin Bachovchin
on 4 Apr 2014
Edited: Kevin Bachovchin
on 4 Apr 2014
Mischa Kim
on 6 Apr 2014
What you are outlining in your question (parallel) are so-called coupled differential equations. x1 and x2 - or rather, their time derivatives - are functions of each other. The only way to solve these kinds of equations is by solving them, as you said, in parallel. And that's accomplished in MATLAB by using e.g. ode45.
function my_DE()
[t,X] = ode45(@EOM,[0 10],[1 1]);
x1 = X(:,1);
x2 = X(:,2);
plot(t,x1,t,x2)
grid
end
function dX = EOM(t, x)
dX = zeros(2,1);
x1 = x(1);
x2 = x(2);
dX = [x2*x1^2 - sin(x1);...
- x2 - x2*x1^3];
end
Jan
on 6 Apr 2014
Exactly. The problem does not look like a job for any kind of parallelization. Althought it is possible, the overhead would be far to high.
Kevin Bachovchin
on 9 Apr 2014
Mischa Kim
on 10 Apr 2014
As Jan and I tried to point out these type of coupled numerical problems do not lend themselves for parallelization. Parallelization works best if you can send off independent jobs to e.g. different processor cores.
nathan raynal-castang
on 11 Apr 2019
0 votes
as far I as know it is not possible, however, if you have to solve it multiple times, you could use paralel computing to solve the equation with different parameters multiple times .
Categories
Find more on Programming in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!