Algoritmo
ENTRADA: intervalo a,b; tolerancia TOL, Numero máximo de iterações N0SAIDA: 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:
Postar um comentário