Bonjour,
j'ai écrit ce programme qui calcule la solution d'un système triangulaire supérieur.
Le problème est que, si j'utilise double précision, je n'obtiens pas des valeurs de A ni de X (A étant la matrice et X le vecteur solution); alors où est le truc ?
Merci pour votre aide
Voilà mon programme :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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