program thomas
implicit none
!déclaration
real(kind=8) :: delta, R,x, ai, bi, ci
integer :: i,n,j
real(kind=8), dimension (1:10000) :: phi, B, C, D
!valeurs
R=10.0
n=10000
delta=R/n
B(1)=-2/(delta**2)
D(1:9999)=0
D(10000)=10
x=0.0
ai=1.0/(delta**2)
bi=(-2.0)/(delta**2)
ci=1.0/(delta**2)
!Calcul de B
B(1)=bi
do i = 2,n
B(i) =bi-(ai*ci)/B(i-1)
end do
print*, B(9999)
!Calul de C
C(1)=D(1)/bi
do i=2,n
C(i)=(D(i)-ai*C(i-1))/B(i)
end do
print*, C(1)
print*, C(9999)
!Calcul de phi
phi(10000)=C(10000)
do i= 1,9999
j=10000-i
phi(j)=C(j)-(ci*phi(j+1))/B(j)
end do
! écriture
open (unit=10,file='[Link]')
do i=1,10000
x=(i-1)*delta
write(10,*) phi(i),x
end do
close(10)
!Calcul de E
E(1)=-phi(2)/(2*delta)
E(1000)= phi(9999)/(2*delta)
do i=1,10000
E(i)=(-1.0/2*delta)*(-phi(i-1)+phi(i+1))
end do
!écriture de E
open (unit=9,file='[Link]')
do i=1,10000
x=(i-1)*delta
write(9,*) x, E(i)*1.0e15
end do
close(9)
end program thomas