Effacer les filtres
Effacer les filtres

I am getting NaN values after some iterations in my loop

2 vues (au cours des 30 derniers jours)
Lovelesh Lovelesh
Lovelesh Lovelesh le 3 Mai 2021
Commenté : Matt J le 3 Mai 2021
I get NaN values after few iterations using fourier transform this happens every time I add the fourier transform of V*psi into the equation for that I am using fft fxn
X=(-M/2:M/2-1)*dx;
dk=2*pi/(M*dx);
K=(-M/2:M/2-1)*dk;
psi=(1/sqrt(2)).*randn(1,M)+(i/sqrt(2)).*randn(1,M);
V=(X.^2)/2;
Tmax=40;
dt=0.004;
Nt=round(Tmax/dt);
Fpsi=zeros(Nt+1,M);
FVpsi=zeros(Nt,M);
Fpsisq=zeros(Nt,M);
for t=1:Nt
Fpsi(t,:)=fft(psi(t,:));
FVpsi(t,:)=fft(V.*psi(t,:));
Fpsisq(t,:)=fft((abs(psi(t,:)).^2).*psi(t,:));
Fpsi(t+1,:)=Fpsi(t,:)+dt.*(K.*K.*Fpsi(t,:)+FVpsi+g.*Fpsi);
psi(t+1,:)=ifft(Fpsi(t+1,:));
end

Réponses (1)

Matt J
Matt J le 3 Mai 2021
To find out where they are first introduced, you can use,
>> dbstop if naninf
  2 commentaires
Lovelesh Lovelesh
Lovelesh Lovelesh le 3 Mai 2021
But it do not give the right results then because iterations becomes very less
Matt J
Matt J le 3 Mai 2021
It's supposed to stop before finishing.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Loops and Conditional Statements dans Help Center et File Exchange

Produits


Version

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by