【求助】关于三对角矩阵的计算问题!!!fortran的
program mainimplicit none
real(kind=8)::B(292) !一维双精度数组(用来存放系数矩阵)
real(kind=8)::D(98) !一维双精度数组(用来存放结果矩阵)
integer :: i
integer :: j
integer :: L
integer :: k
!对结果矩阵数组赋值
do i=1,98
if(i<=97)then
D(i)=0.0d0
else
D(i)=100.0d0
end if
end do
!对系数矩阵赋值
do j=1,292
B(j)=-1.0d0
end do
do k=1,98
B(3*k-2)=2.0d0
end do
call atrde(B,98,292,D,L)
if(L>=0)then
write(*,10)(D(i),i=1,98)
end if
10 format(1X,D15.6)
stop
end
!追赶法程序
subroutine atrde(B,N,M,D,L)
real(kind=8)::B(M)
real(kind=8)::D(N)
L=1
if(M/=(3*N-2))then
L=-1
write(*,10)
return
end if
10 format(1X,'ERR')
!消元过程
do K=1,N-1
J=3*K-2
if(ABS(B(J))+1.0==1.0)then
L=0
write(*,10)
return
end if
B(J+1)=B(J+1)/B(J)
D(K)=D(K)/B(J)
B(J+3)=B(J+3)-B(J+2)*B(J+1)
D(K+1)=D(K+1)-B(J+2)*D(K)
end do
!回代过程
if(ABS(B(3*N-2))+1.0==1.0)then
L=0
write(*,10)
return
end if
D(N)=D(N)/B(3*N-2)
do K=N-1,1,-1
D(K)=D(K)-B(3*K-2)*D(K+1)
end do
return
end
为什么输出的结果还有负数呢