Download as pdf or txt
Download as pdf or txt
You are on page 1of 33

Universidad Autónoma de Nuevo León

Facultad de Ciencias Físico Matemáticas

Física Computacional
Tarea 2

Alumno:

• Martínez Arredondo Gabriel Alfonso 1895681

Docente: Dr, Tlahuice Flores Alfredo

Grupo: 022

Fecha: 10 de febrero de 2023


Ejercicios:
1. Deducir la expresión de la enésemia derivada (¿hasta orden 7?), utilizando diferencias
centradas. Hacer el programa respectivo en Fortran.
a) ¿Hasta qué orden se puede tener una buena aproximación a la derivada numérica?

Hacemos el desarrollo para obtener la formula general:

Archivo: DerivadaOrdenSuperior.f

Primero, pedimos la usuario el intervalo donde graficar la funcion y su n derivada, así como el
orden de la derivada a calcular.
Las graficamos
Definimos la función a graficar así como su derivada utilizando la formula general obtenida

Por último, definimos la función factorial y productoria para escribir el término de la


combinatoria
Ahora, para probar el código graficaremos hasta la séptima derivada de dos funciones
distintas:
Primero, la funcion exp(x), porque su derivada es si misma, exp(x) así que nos sirve bien para
comparar un cambio.
Primer Derivada:
Segunda Derivada:
Tercera Derivada:
Cuarta Derivada:
Quinta Derivada:
Sexta Derivada:
Séptima Derivada:
2. Hacer el programa que expanda la serie binomial, el programa debe imprimir termino
a termino la serie. Además, debe considerarse potencias negativas, positivas y
fraccionarias.

Primero le pedimos al usuario que ingrese la potencia del binomio.

Revisando en la literatura, encontré que para el caso de potencias negativas o fraccionarias se


debe utilizar una serie infinita, por lo que con un if reviso el valor de la potencia ingresado, en
caso de ser una potencia de ese estilo, pido al usuario una cota para el numero de términos de
la suma infinita que se desea mostrar.

Con un if vamos imprimiendo los términos de la suma, imprimimos en base a la formula


encontrada en la literatura.
Por último, definimos dos funciones: Factorial y productorio, pues en fortran no existen estas
funciones, así que las implementamos utilizando un ciclo do que multiplique de la forma
deseada, replicando el comportamiento de las funciones.

Ahora, corremos el código, y probamos binomios con los tres casos, y utilizamos el programa
Wolfram para confirmar los resultados:

Una Potencia positiva, r = 3

Esto es:
𝑥 3 + 3𝑥 2 𝑦 + 3𝑥𝑦 2 + 𝑦 3
Comparamos con Wolfram Alpha

El resultado es el correcto.
Una potencia negativa, r= -2

Esto es:

𝑥 −2 − 2𝑥 −3 𝑦 + 3𝑥 −4 𝑦 2 − 4𝑥 −5 𝑦 3 + 5𝑥 −6 𝑦 4 + ⋯

Comparamos con Wolfram Alpha

El resultado es el correcto
Una potencia fraccionaria r = 1.5

Esto es:

𝑥1.5 + 1.5𝑥 0.5 𝑦 + 0.375𝑥 −0.5 𝑦 2 − 0.0625𝑥 −1.5 𝑦 3 + ⋯

Comparamos con Wolfram Alpha:

Vemos que el resultado es el correcto, con la diferencia de que x y y están intercambiados, lo


cual no afecta, porque se trata de variables cualesquiera.
I. Encontrar la posición de equilibrio de los átomos dentro de una molécula, implica
conocer los mínimos de una función. Para encontrar la longitud de enlace de una
molécula diatómica NaCl es necesario conocer el potencial de interacción entre
ambos iones. Asumiendo que el potencial de interacción es V(r) cuando los dos
iones que están separados una distancia r, la longitud de enlace de equilibrio ocurre
cuando se tiene el mínimo de V(r). El potencial esta dado como:
𝑒2
𝑉(𝑟) = − + 𝑉0 𝑒 −𝑟/𝑟0
4𝜋𝜖0 𝑟
Siendo e la carga del protón, épsilon la permitividad eléctrica en el vacío y 𝑉0 y 𝑅0
los parámetros de la interacción efectiva.
Asumiendo 𝑉0 = 1.09 𝑥 103 𝑒𝑉, 𝑟0 = 0.33 angstrom
𝑒2
NOTA: Use 4𝜋𝜖 = 14.4 𝑒𝑉 ∗ 𝑎𝑛𝑔𝑠𝑡𝑟𝑜𝑚
0𝑟
además, recuerde que, en la distancia de enlace o mínima, la fuerza es cero.
La fuerza entre los dos iones está dada como:
𝑑𝑉(𝑟)
𝑓(𝑟) = − =0
𝑑𝑟
Solución:
Lo que hay que hacer es encontrar los ceros de la derivada de la función dada.
Usamos el código EjercicioI.f
Lo primero que hace el código es graficar en gnuplot para poder escoger el valor al que
aproximar la raíz.
Después, el código utiliza el método de Newton para aproximar la raíz de la derivada.

Nótese que en la fórmula de Newton utilizamos la derivada de la función en lugar de la propia


función pues es en esa donde estamos buscando la raíz. Eso significa también que tenemos que
calcular la segunda derivada de la función para poder aplicar el método.
Después volvemos a graficar la función, pero ahora marcando el punto que calculamos.
Por último, definimos la función, su derivada, utilizando la formula centrada, y la segunda
derivada que es aplicar la formula centrada a la función derivada.

Ahora, corremos el código.

Lo cual nos genera la siguiente gráfica:


Como buscamos el cero de la derivada escogemos el valor de x0 = 2

∴ La distancia donde la fuerza es cero es 𝑟 = 2.3605 Armstrong.


II. La función de distribución radial que da la probabilidad de encontrar un electrón
dentro del átomo de hidrógeno estada por la siguiente función:
4 2 −2𝑟
𝑟 𝑒 𝑎0
𝑎03
¿Cuál es la distancia donde es mayor la probabilidad de encontrar al electrón?
Solución:
Usamos el código EjercicioII.f
Lo primero que hace el código es revisar en un intervalo los ceros de la derivada, es decir sus
máximos o mínimos. Utilizando un criterio similar al visto en el ejercicio 6 de la Tarea 1, solo
que adaptado a la derivada.
Y con un condicional if, va guardando en una variable el valor de x, que nos del f(x) más
grande, comprándolo con los valores obtenidos anteriormente.
Después graficamos la función, su derivada, y el punto obtenido para confirmar que se trata del
máximo.

Por último, definimos la función, su derivada, utilizando la formula centrada.


Ahora, corremos el código.

∴ La distancia donde es mayor la probabilidad de encontrar al electrón es


𝑟 = 0.5289 Armstrong.
III. La ley de desplazamiento de Wien se obtiene derivando la fórmula de radiación de
Planck con respecto a la longitud de onda para el cuerpo negro. Al igualar la
derivada a cero se obtiene la siguiente relación:
𝑎
𝜆𝑇 = 𝑎
5 [1 − 𝑒 −𝜆𝑇 ]
Encontrar el valor de lambda*T.
Solución:
Despejamos para tener una función a la que encontrar sus ceros.
𝑎
𝑓(𝜆𝑇) = 𝜆𝑇 − 𝑎

5 [1 − 𝑒 𝜆𝑇 ]

Lo que hay que hacer es encontrar los ceros de la función dada.


Usamos el código EjercicioIII.f
Lo primero que hace el código es graficar en gnuplot para poder escoger el valor al que
aproximar la raíz.
Después, el código utiliza el método de Newton para aproximar la raíz de la derivada.

Después volvemos a graficar la función, pero ahora marcando el punto que calculamos.
Por último, definimos la función, su derivada, utilizando la formula centrada.

El valor de a se encuentra calculado en los apéndices.


Ahora, corremos el código.

Lo cual nos genera la siguiente gráfica:


Como buscamos el cero de la función escogemos el valor de x0 = 0.1

∴ El valor de lambda*T es de 0.002897 mK.


IV. Encuentre el valor de la f de la siguiente ecuación. n = 0.4, Re = 6000.
1 4 0.4
= 0.75 log(𝑅𝑒 ∗ 𝑓 1−0.5∗𝑛 ) − 1.2
𝑓 𝑛 𝑛

Solución:
Despejamos para tener una función a la que encontrar sus ceros.
4 0.4 1
𝐹(𝑓) = 0.75 log(𝑅𝑒 ∗ 𝑓 1−0.5∗𝑛 ) − 1.2 −
𝑛 𝑛 𝑓
Lo que hay que hacer es encontrar los ceros de la función dada
Usamos el código EjercicioIV.f
Lo primero que hace el código es graficar en gnuplot para poder escoger el valor al que
aproximar la raíz.
Después, el código utiliza el método de Newton para aproximar la raíz de la derivada.

Después volvemos a graficar la función, pero ahora marcando el punto que calculamos.
Por último, definimos la función, su derivada, utilizando la formula centrada.

Ahora, corremos el código.

Lo cual nos genera la siguiente gráfica:


Pero vemos que debido a estar muy vertical la pendiente en el punto de la raíz, el método falla
y nos da un valor NaN.
Por lo que probamos acercar la función para ver de cerca una pendiente más horizontal.
Para ello abra que modificar el valor del incremento, para poder generar suficientes puntos en
un intervalo más pequeño:

Ahora, corremos el código de nuevo.

Lo cual nos genera la siguiente gráfica:


Como buscamos el cero de la función escogemos el valor de x0 = 0.02

∴ El valor de f es de 0.0227.
Conclusiones:

Aplicar el método de Newton para encontrar máximos y mínimos, logre extender mas el
alcance de los conocimientos ya adquiridos, permitiéndome, sentir un progreso en el uso de
ideas y aplicaciones de conocimientos básicos para tareas cada vez mas complejas.

Para la realización de este código fui capaz de aprender a derivar numéricamente, realizar
scripts, graficarlos, realizar do de una manera más optima, así como mejorar la redacción y la
optimización de las líneas de código de mis archivos.

Los últimos problemas fueron interesantes para comprender las aplicaciones de la


programación en problemas razonados que tiene relación con los problemas físicos que suelen
resolver en la carrera, por lo que me ayudo a entender más en claro el cómo mejorar mis
habilidades con el uso de Fortran para progresar en mi carrera como físico.

Para finalizar, pude ver la comparativa entre la derivación numérica y la analítica, fue
gratificante lograr realizar tareas al principio complejas utilizando mis habilidades de
programación, y en muchos menores iteraciones que los otros métodos.

Referencias:
LEHMANN, C. H. (1995). ALGEBRA (1a. ed.). MEXICO: LIMUSA/NORIEGA EDITORES.

Tipler, P. A., & Llewellyn, R. A. (2012). Modern physics. WH Freeman and Co..

https://www.wolframalpha.com/
Anexo:

Valor de a:

You might also like