1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| program trianglee
parameter(n=3)
double precision A(n,n),b(n),X(n)
integer i,j
do i=1,n
do j=1,n
if((i.lt.j).or.(i.eq.j)) then
A(i,j)=float(i*j)
else
A(i,j)=0.
end if
enddo
enddo
print 10,((A(i,j),j=1,n),i=1,n)
10 format('A=',3(/,1X,3(D4.1,1X)))
do i=1,n
b(i)=1.
enddo
Call triangle(n,A,b,X)
print 20,(X(i),i=1,n)
20 format('X=',3(D4.1,1X))
end
subroutine triangle(M,C,D,Y)
integer j,i
double precision C(M,M),D(M),Y(M),S
Y(M)=D(M)/C(M,M)
do i=M-1,1,-1
S = 0.
do j=i+1,M
S=S+C(i,j)*Y(j)
enddo
Y(i)=(D(i)-S)/C(i,i)
enddo
return
end |
Partager