Hello Everyone,
I'm simulating a system of stiff differential equations of the form using ode15s
Y'= (1./Vector1).*(Matrix1*Y+Matrix2*Y)
Z'= (1./Vector1).*(Matrix1*Z+Matrix2*Z) % the matrix diff eqn for each variable Y, Z is created in a for loop
The vector Y,Z is of size ~1200 and the number of differential equations is ~2400
The total simulation time takes around 570s when
odeset('abstol', 1e-10, 'reltol', 1e-9)
is used for error settings and it reduces by 5 times when the default error settings are used.
I tried to use the profiler and the ode solver takes around 508 s (snapshot ).
I'd like to know if I can speed up the compute time taken by the ode solver. Could someone clarify if the ode solver calls BLAS functions for Matrix operations? I'm using version 2019b
I would be happy to share addional details if the problem explained above isn't clear enough.

댓글 수: 2

Ameer Hamza
Ameer Hamza 2020년 11월 14일
Have you tried ode45()?
Deepa Maheshvare
Deepa Maheshvare 2020년 11월 14일
Hi, my equations are stiff so I tried using ode15s.

댓글을 달려면 로그인하십시오.

답변 (1개)

Kiran Felix Robert
Kiran Felix Robert 2020년 12월 16일

0 개 추천

Hi Deepa,
The ode15 solver is slow for your specific error tolerances when compared to the default setting because the constraints set by you (1e-10 & 1e-9) are more strict when compared to the default values(1e-3 & 1e-6) .
Please check the odeset documentation for the default values.
To improve the solver speed you can try the following
  1. Increase the error tolerances ( say increase the tolerances to 1e-2 & 1e-3).
  2. Provide the Jacobian explicitly using the ‘Jacobian’ parameter of the ‘odeset’
Kiran Felix Robert

카테고리

제품

릴리스

R2019b

태그

질문:

2020년 11월 14일

답변:

2020년 12월 16일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by