Witam. :)

Mam problem z poniższym kodem, który generuje (czym wzięta większa ilość elementów tablic (M) - tym "szybciej" się sypie) najpierw to co chcę, później cholendarnie wielkie liczby, na NaNach kończąc.

	DO i=1,M !M<=N

	!evolution
	DO tl=0,K
	call evol(psi_l(i),Hpsi_l(i))

	call evol(psi_l(i-1),Hpsi_l(i-1))
	call evol(psi_l(i+1),Hpsi_l(i+1))
	Hpsi_l(i)=Hpsi(psi_l(i),psi_l(i-1),psi_l(i+1),V_l)

	END DO !evolution over

	WRITE(*,*) psi_l(i)

	END

psi_l to uprzednio wygenerowany, stablicowany (tablica: psi_l(N), N=500) rozkład Gaussa N(0,4)
V_l to tablica stałych
Hpsi_l to stablicowana (wymiar tablicy oczywiście również =N);
Hpsi_l(i)=Hpsi(psi_l(i),psi_l(i-1),psi_l(i+1),V_l(i))
funkcja Hpsi:

	REAL  FUNCTION Hpsi(psi,psi1,psi2,V)
	REAL  psi,psi1,psi2,V

	Hpsi=-(psi1-2.*psi+psi2)+V*psi !druga pochodna psi ze wzoru trójpunktowego dla jednostkowej !odległości między węzłami +stała*psi

	END DO

Ewolucja:

	SUBROUTINE evol(psi,Hpsi)
	REAL psi,Hpsi

	psi=psi-Hpsi 

	END

Sypie się już dla K>=2.

Nie mam pojęcia dlaczego tak się dzieje - psi (Gauss) to małe wartości, Hpsi również (i przyjmuje poprawne wartości - tu nie ma źródła NaN), więc nie wiem skąd ta pętla z ewolucją (procedura ta dla pojedynczych elementów tablicy psi_l działa poprawnie) wyrzuca absurdalne liczby i NaN-y.

Gdzie może tkwić haczyk? Może należy jakoś inaczej sformułować tę główną pętlę?

Z góry dzięki za wszelkie porady. :)