Bonjour, j'ai fait un programme en utilisant la méthode de dichotomie pour approcher une solution d'une équation f(x)=b
Ma solution est amoy, amax et amin sont les bornes de l'intervalle,
j'ai un pris un exemple concret avec amax=1,amin=3,b=8 et f(x)=x^3 et ma solution théorique serait 2. Mon programme me donne 2.5, malgré que j ai mis un do while avec une condition de décalage entre la solution théorique et numérique est de 0.001, alors où est le truc ? svp
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
 
 
        program dich
        integer i
        real amax, amin, amoy, b
        print*,'donner amax'
        read*, amax
        print*,'donner amin'
        read*, amin
        print*,'donner b'
        read*,b
        amoy=(1./2.)*(amin+amax)
        i=1
        do while(abs(b-f(amoy)).lt.0.001)
          if((f(amin).LT.f(amax)).AND.(beta.LT.f(amoy))) then
          amax=amoy
          else if((f(amin).LT.f(amax)).AND.(beta.GT.f(amoy))) then
         amin=amoy
         else if((f(amin).GT.f(amax)).AND.(beta.GT.f(amoy))) then
                         amax=amoy
              else
                 amin=amoy
         end if
        amoy=0.5*(amin+amax)
        i=i+1
        enddo
        print*,'alpha=',amoy
        end
 
 
 
        real function f(x)
        real x
        f=x**3
        return
        end