eff666
(usa Debian)
Enviado em 26/11/2012 - 22:57h
Prezado,
trabalho com FORTRAN77 e escrevi a versao do metodo da biseccao (abaixo).
lembro que em FORTRAN77 temos o seguinte:
a primeira linha contém C23456789, onde C (comentário), está na primeira coluna, o 2 representa a 2a. coluna, o 3 a 3a. coluna e assim sucessivamente até a coluna 73 (final do arquivo de edicao em FORTRAN77.
A primeira coluna está reservada para os caracteres "*", ou "c" que representam comentário;
da segunda à quinta coluna são as colunas para você numerar de acordo com o seu código;
a sexta coluna serve para você colocar o caracter "&" para continuar a linha anterior do código;
A sétima coluna serve para você digitar os comandos.
Estou dizendo isso pois a forma como o meu código aparecerá no post, ficará formatado errado e vc, deve arrumar aí, no seu micro.
******************************************************************************
C23456789
PROGRAM bisection
*Definicao das variaveis, x inicial, final, raiz e function of x (fofx)
DOUBLE PRECISION x_initial, x_final, root, fofx
*Chama a fofx
external fofx
x_initial = 0.d0
x_final = 2.d0
*Chama a subrotina biseccao
CALL bisect(x_initial, x_final, root, fofx)
*fim do PROGRAM
end
*Inicio da fofx
DOUBLE PRECISION FUNCTION fofx(x)
DOUBLE PRECISION x
*definir a sua funcao
fofx = cos(x)-x
*fim da funcao fofx
end
*inicio da subrotina bisect
SUBROUTINE bisect(left,right,middle,f)
*definicao dos limites a,b e z como vc chamou na sua funcao
DOUBLE PRECISION left,right,middle
*definicao de f(a),f(b) e f(z)
DOUBLE PRECISION fleft,fright,fmiddle,f
*definir a tolerancia e o erro
DOUBLE PRECISION tol,error
*definir o valor da tol (fixo)
PARAMETER(tol = 1.d-06)
Fleft=f(left)
Fright=f(right)
*aqui esta o lance para fazer sozinho ate chegar na raiz com a tol desejada
10 middle=(left+right)/2
Fmiddle=f(middle)
IF(fleft*fmiddle .LE. 0) THEN
right=middle
fright=fmiddle
ELSE
left=middle
fleft=fmiddle
ENDIF
error=ABS((right-left)/middle)
IF(error .GT. tol) GOTO 10
WRITE(*,*)'Root found at ', middle
END
*******************************************************************************
espero que tenha ajudado!
qualquer problema, não hesite em perguntar!
Abraco