Métodos Numéricos - Raízes de f(x) fortran
APROXIMAÇÃO PARA A RAIZ DE F(X)
F(X)=X*LOG(X) -1
MÉTODO DE NEWTON-RAPHSON
MÉTODOS DA POSIÇÃO FALSA
MÉTODOS DA BISSECÇÃO
PROGRAMA PELO MÉTODO DE NEWTON-RAPHONS
Programa em FORTRAN: program newtonraphson implicit none integer i real erro, in, m , n, r, c real a(100), b(100), e(100), f(100), ya(100), x(100), k(100), z in= 2.3 r= 0.1 erro= 0.0000001 do while (z.gt.0) m=(in*log10(in))-1 in=in+r n=(in*log10(in))-1 z=m*n end do a(1)=in-r b(1)=in i=1 x(1)=in f(i)=(x(i)*log10(x(i)))-1 print *, "a(1)", a(1) print *, "b(1)", b(1) c=1 e(1)=1 do while (e(i).gt.erro.or.abs(f(i)).gt.erro.and.c.le.10) k(i)=log10(x(i))+(1/log(10.0)) x(i+1)=x(i)-(((x(i)*log10(x(i)))-1)/k(i)) ya(i)=(a(i)*log10(a(i)))-1 f(i+1)=(x(i+1)*log10(x(i+1)))-1 if (ya(i)*f(i+1).gt.0) then a(i+1)=x(i+1) b(i+1)=b(i) print *, "a=", a(i+1) print *, "b=", b(i+1) print *, " " else b(i+1)=x(i+1) a(i+1)=a(i) print *, "a=", a(i+1) print *, "b=", b(i+1) print *, " " end if e(i)=abs((x(i+1)-x(i)))/abs(x(i+1)) f(i)=abs((x(i)*log10(x(i)))-1) if(e(i).gt.f(i)) then
print *, "erro", f(i) else print *, "erro", e(i) end if i=i+1 c=c+1 end do print*, "ra¡z da fun‡Æo ‚", x(i-1) stop end
Legenda: in => aproximação inicial raio de deslocamento => r erro => tolerância do critério de parada
Dados de entrada do programa:
1) Aproximação inicial
2) Raio de deslocamento
3) Tolerância do critério de parada
Descrição dos módulos do programa:
Módulo 1 - Aproximação das raízes
do while (z.gt.0) m=(in*log10(in))-1 in=in+r n=(in*log10(in))-1 z=m*n end do a(1)=in-r b(1)=in
Tendo em vista o valor de aproximação inicial “in”, calcula-se os limites gerados pela aproximação da raiz, gerando “a(1)” e “b(1)”
Dado de entrada:
Aproximação inicial => in
Dados de saída:
Valor de aproximação antes da raiz da função => a(1)
Valor de aproximação após a raiz da função => b(1)
Módulo 2 - Cálculo da aproximação da raiz