bonjour tous le monde!
je dois resoudre l'equation de la chaleur 1D en fortran avec la methode analytique. je dois programmer l'equation suivante:

T(x,t)= 1+(ti-1)*somme(pour n allant de 1 jusqu'a l'infini) {4/(n*pi)*sin(n*pi*x)*exp(-(n*pi)²t)

avec n =1,3,5,7...
je l'ai programmé, mais les resultats sont bizarres!

je vous montre mon programme,et si quelqu'un trouve où ca ne va pas, s'il vous plait, dites le moi!

double precision ts(20000)
double precision dt,dx,absx,teta,teta1
integer p
parameter (eps=1e-8)

open(1,file='analytik1.res',access='sequential',status='unknown')
open(2,file='analytik2.res',access='sequential',status='unknown')
open(3,file='analytik3.res',access='sequential',status='unknown')
open(4,file='analytik4.res',access='sequential',status='unknown')
write(*,*)'donner dt,m,itmax et p'
read(*,*)dt,m,itmax,p

dx=1./(m-1)
pi=3.141592654

itemp1=itmax/10
itemp2=itmax/5
itemp3=itmax/2
itemp4=9*itmax/10

WRITE(*,*)itemp1,itemp2,itemp3,itemp4

icount=0
t=0
100 icount=icount+1


c calcul de tpt à t+dt

t=t+dt
teta=0

do 2 i=1,m
do 3 n=1,p,(2)

teta1=teta+((1/(n*pi))*4*sin(n*pi*i)*exp(-(n*n*pi*pi*t)) )

if(abs (teta1-teta).lt.eps) goto 30

teta=teta1

3 continue

30 ts(i)=1-teta1

2 continue

do 56 i=1,m

absx=(i-1.)*dx

if(icount.eq.itemp1)go to 266
if(icount.eq.itemp2)go to 267
if(icount.eq.itemp3)go to 368
if(icount.eq.itemp4)go to 370
go to 269
266 write(1,*)absx,ts(i)
write(*,*)absx,ts(i)

go to 269
267 write(2,*)absx,ts(i)
go to 269
368 write(3,*)absx,ts(i)
go to 269
370 write(4,*)absx,ts(i)
269 continue

56 continue

if(t.gt.itmax)go to 53
goto 100
53 continue

stop
end