Ode45 would not converge with the following statement

3 次查看(过去 30 天)
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 个评论
Walter Roberson
Walter Roberson 2018-7-14
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 ?

请先登录,再进行评论。

采纳的回答

Carlos Felipe Rengifo
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' );
end
  2 个评论
Ying Liu
Ying Liu 2018-7-16
Hi Carlos,
Yes, it is exactly the reason you said, while iterating over time and space y vector contains NaN. Thanks!

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Ordinary Differential Equations 的更多信息

标签

产品


版本

R2017b

Community Treasure Hunt

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

Start Hunting!

Translated by