Kod koji sam napisao je:
PROGRAM NUMERICKO
dimension pr(-1:100,0:300000)
REAL theta,DZ,D,A,c,indeks,Z,korakuglovni, ugao, kriticni
INTEGER i,j,n,m
DOUBLE PRECISION w,Dtheta
PARAMETER (c=299792458, w=314, korakuglovni=0.5, DZ=0.001, kriticni=20,D=0.000117, A=0,4, indeks=1.5 )
PRINT *,'Unesite duzinu vlakna'
READ (*,*)Z
PRINT *,'Unesite ugao pod kojim se ubacuje signal u stepenima u stepenima' !ugao mora da bu edmanji od 15 stepeni
READ (*,*)ugao
Dtheta=korakuglovni*0.017453292
theta=ugao*0.017453292
thetaC=kriticni*0.017453292
m=Z/DZ
n=kriticni/korakuglovni
PRINT *,n,m
open(5,FILE='popuna1.dat')
!unos impulsa na pocetku vlakna
DO i = 0, n, 1
DO j = 0, m, 1
if (((i*korakuglovni).EQ.ugao .AND. (j.EQ.0))) then
pr(i,j) = 1
else
pr(i,j) = 0
end if
END DO
END DO
open(6,FILE='racun1.dat')
DO j = 0, m-1, 1
DO i = -1, n+1, 1
if ((i .LT. 0) .OR. (i.GT.n-1)) then
pr(i,j)=0
else
if (i .EQ. 0) then
p1=(2.*DZ)/(Dtheta**2.)
p2=(4.*DZ)/(Dtheta**2.)-1.
p3=(2.*DZ)/(Dtheta**2.)
pr(i,j+1)=p1*pr(i-1,j)-p2*pr(i,j)+p3*pr(i+1,j)
else
if (i .EQ. 1) then
pr(i,j)=pr(0,j)
else
p4=(DZ*D)/(Dtheta**2.)-(DZ*D)/(2.*Dtheta*i*Dtheta)
p5=1.-(2.*DZ*D)/(Dtheta**2.)-DZ*A*((Dtheta*i)**2.)
p6=(DZ*D)/(2.*Dtheta*i*Dtheta)+(DZ*D)/(Dtheta**2.)
pr(i,j+1)=p4*pr(i-1,j)+p5*pr(i,j)+p6*pr(i+1,j)
end if
end if
end if
END DO
END DO
open(7,FILE='ispis1.dat')
DO j = m-2, m, 1
DO i = 0, n, 1
if (j .EQ. m) then
write (7,*)i,pr(i,j)
end if
END DO
END DO
END PROGRAM
problem je u tome što funkcija treba da daje raspodelu koja se pri većim dužinama pomera ka 0 (na X osi), tj. maksimum treba da je na 0, a meni funkcija ima približni oblik Gausove raspodele oko vrednosti ugla pod kojim je ubačen signal. Znam da je problem negde u programiranju, ali ne znam gde. Prva tri uslova u glavnoj petlji pretstavljaju granične uslove.
Ako neko može da pomogne bio bih veoma zahvalan.
Ako je potreban još neki podatak tu sam