MATLAB Answers

Ying Liu

Ode45 would not converge with the following statement

Asked by Ying Liu
on 13 Jul 2018
Latest activity Commented on by Walter Roberson
on 16 Jul 2018

Hi Everyone,

I have been struggling with ode45 for over a week and there is a weird convergence problem. So in my ode I have the following lines

B = kron(A, eye(3)); % size(A)=[n n]	
C = B*y; % size(y)=[3*n 1]

and then C will be used in later calculations

And the ode kept returning NAN, I set A = zeros(n,n) and the problem still persists

However, if I set C=zeros(3*n,1) the ode converges well.

To my understanding, by setting A = zeros(n,n) and running the above lines, no matter what value y is C will be equal to zeros(3*n,1), then why would it affect the convergence of the ode? Anyone familiar with the problem here?

Thanks a lot!

  1 Comment

When you set A to zeros(n,n), then what shows up for class(C) and nnz(C) ?

Is it possible your y is not class double ?

Sign in to comment.





1 Answer

Answer by Carlos Felipe Rengifo on 14 Jul 2018
 Accepted Answer

Hi, I guess the "y" vector contains a NaN, and as a consequence "C" contains also NaNs. This happen even if B is equal to zero (0 * nan = nan). You can verify this by adding the following sentence to your code:

if any(isnan(y))
   disp('There is a nan in the vector y' ); 


Hi Carlos,

Yes, it is exactly the reason you said, while iterating over time and space y vector contains NaN. Thanks!

Sign in to comment.