MATLAB Answers

Ying Liu

Ode45 would not converge with the following statement

Asked by Ying Liu
on 13 Jul 2018 at 21:58
Latest activity Commented on by Walter Roberson
on 16 Jul 2018 at 17:12

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 at 3:42
 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.