sábado, 21 de abril de 2012

Método da Bissecção

Algoritmo  

ENTRADA: intervalo a,b; tolerancia TOL, Numero máximo de iterações N0
SAIDA: Solução aproximada p ou mensagem de erro.
 Passo 1   faça i = 1;
                       FA=f(a).
Passo 2  Enquanto i <= N0 faça os passos 3 a 6
           Passo 3 faça p = a + (b-a)/2; (calcula pi)
                               FP = f(p).
 Passo 4  Se FP = 0 ou (b-a)/2 < TOL então
                  SAIDA (p);
                   PARE
Passo 5 Faça i = i +1.
Passo 6 Se FA.FP > 0 então faça a = p;
                                                 FA = FP
senão faça b = p.
Passo 7 SAIDA (O método falhou após N0 iteracões, N0 =`, N0);
PARE

fonte: Numerical Analysis By Richard L. Burden



Programa Fonte em Fortran

     program bisseccao
      real a,b,p,tol
      integer i,n0
      Print*,'entre com a'
      read*,a
      Print*,'entre com b'
      read*,b
      Print*,'entre com N0'
      read*,n0
      Print*,'entre com a tolerancia'
      read*,tol
      i=1
      fa=f(a)
      do while(i.le.n0)
             p=a+(b-a)/2.
             fp=f(p)
             if((fp.eq.0.) .or.((b-a)/2..lt.tol) )then
                print*,p
                goto 5
             endif
      i=i+1
       if(fa*fp.gt.0.)then
         a=p
         fa=fp
       else
         b=p
       endif
      enddo
      print*,'o metodo falhou depois de ',n0,' interacoes'
 5     stop
      end
   !!!!!!!!!!!!!!!!!!funcao!!!!!!!!!!!!
      real function f(x)
      real x
      f=2.*x-1.
      return
      end


Nenhum comentário: