program Derivadas_Finitas
    implicit none
!Tarea #02
!Fisica Computacional (2:00-3:00 pm)
!Alumna: Nalleli Iridian Avila Garcia (1941403)"
!Metodo de diferenciacion finita
!Declaracion de variables
    real :: h, x
    real, dimension(7) :: valores_x
    integer :: i
!Aqui se establecen los valores de x y h
    h = 0.1
    valores_x = [4.7, 4.8, 4.9, 5.0, 5.1, 5.2, 5.3]
        print*, "Este programa es capaz de calcular mediante la diferenciacion finita (por laterales y central)"
        print*, "los valores de la función ln(x), cuando x=4.7, hasta x=5.3, con h=0.1. Hablese de la 1era y 2da derivada"
        print*, "He aquí los resultados:"
!Impresion de los resultados obtenidos        
    do i = 1, size(valores_x)
        x = valores_x(i)
        print '(A,F5.1)', "Para x =", x,":"
        print '(A,F9.4)', "Derivada lateral hacia adelante:", derivada_lateral_adelante(x, h)
        print '(A,F9.4)', "Derivada lateral hacia atrás:", derivada_lateral_atras(x, h)
        print '(A,F9.4)', "Derivada central:", derivada_central(x, h)
        print '(A,F9.4)', "Segunda derivada lateral hacia adelante:", segunda_derivada_lateral_adelante(x, h)
        print '(A,F9.4)', "Segunda derivada lateral hacia atrás:", segunda_derivada_lateral_atras(x, h)
        print '(A,F9.4)', "Segunda derivada central:", segunda_derivada_central(x, h)
        print *
    end do

contains
!Seccion en donde se realizan las aproximaciones mediante diferenciacion finita para 1ra y 2da derivada
    function derivada_lateral_adelante(x, h) result(res)
        implicit none
        real :: x, h, res
        res = (log(x + h) - log(x)) / h
    end function derivada_lateral_adelante

    function derivada_lateral_atras(x, h) result(res)
        implicit none
        real :: x, h, res
        res = (log(x) - log(x - h)) / h
    end function derivada_lateral_atras

    function derivada_central(x, h) result(res)
        implicit none
        real :: x, h, res
        res = (log(x + h) - log(x - h)) / (2 * h)
    end function derivada_central

    function segunda_derivada_lateral_adelante(x, h) result(res)
        implicit none
        real :: x, h, res
        res = (log(x + (2 * h)) - 2 * log(x + h) + log(x)) / (h ** 2)
    end function segunda_derivada_lateral_adelante

    function segunda_derivada_lateral_atras(x, h) result(res)
        implicit none
        real :: x, h, res
        res = (log(x) - 2 * log(x - h) + log(x - (2 * h))) / (h ** 2)
    end function segunda_derivada_lateral_atras

    function segunda_derivada_central(x, h) result(res)
        implicit none
        real :: x, h, res
        res = (log(x + h) - 2 * log(x) + log(x - h)) / (h ** 2)
    end function segunda_derivada_central

end program Derivadas_Finitas





Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: