Crear exámenes de ciencias de la Tierra con Python

힘센캥거루
2024년 12월 18일(수정됨)
95
python

1. Pregunta 20 del examen de Ciencias de la Tierra 1 de septiembre del curso 2025

Mientras resolvía el examen de prueba de ciencias de la Tierra de septiembre de este año, me encontré con una pregunta que me rompió la cabeza.

Era la pregunta 20 sobre la exploración de un sistema planetario extrasolar, pero por más que miraba, no había periodo.

Crear exámenes de ciencias de la Tierra con Python-1

Al final no pude resolverla y sufrí la humillación de ver la clase de EBS.

La respuesta era el periodo del gráfico.

Como en el gráfico el periodo va de t1 a t4, en el punto donde la velocidad radial es de -30~+30 m/s, el planeta ha girado un tercio del periodo completo.

Por lo tanto, como el ángulo de giro entre t1 y t2 es de 120 grados, en el punto donde la velocidad radial es +30, el ángulo entre la línea de visión–centro de traslación–estrella central es de 60 grados.

Incluso mientras lo explicaba, pensaba “¿qué es esto?”, así que lo representé en un dibujo.

Crear exámenes de ciencias de la Tierra con Python-2

Entonces, si calculamos la velocidad radial en el punto t2, obtenemos lo siguiente.

Crear exámenes de ciencias de la Tierra con Python-3

Aquí Vr = V * cos30º y como Vr = 30 m/s, se cumple que V = Vr / cos30º.

Así que llegamos a la impactante conclusión de que la opción ㄷ es correcta.

Crear exámenes de ciencias de la Tierra con Python-4

¿Cómo se supone que alguien resuelva esto en 1 minuto...?

Creo que ni aunque Gauss reencarnara podría resolverlo en menos de 1 minuto.

En cualquier caso, decidí explicar por completo a los estudiantes de 2.º curso cómo se resuelve este problema y ponerles una pregunta igual como evaluación de desempeño.

Por supuesto, mientras explicaba la solución no les dije que esta pregunta iba a ser la evaluación de desempeño.

2. Hacer la evaluación de desempeño

Como todas las clases de Ciencias de la Tierra 1 caían en lunes, decidí hacer el examen el lunes.

Pero...?

Crear exámenes de ciencias de la Tierra con Python-5

Cuando entré en el aula, la mitad de la clase no estaba.

Se había corrido el rumor de que la pregunta era difícil, y los estudiantes que no se habían preparado para la evaluación de desempeño pidieron la baja médica.

Había alumnos que sí estaban realmente enfermos, pero aun así no podía hacer el examen con el mismo enunciado.

Los estudiantes que habían hecho el examen honestamente plantearon una objeción diciendo que, si los demás resolvían exactamente el mismo problema, se produciría un problema de equidad en la evaluación.

Así que terminé dibujando el gráfico con Python.

3. Poner la evaluación de desempeño con Python

Decidí mantener el mismo tipo de problema, pero cambiar los valores o el propio periodo.

Y para poder cambiar continuamente los valores y comprobarlos con facilidad, trabajé en un entorno Jupyter.

Primero llamamos a los módulos y configuramos la fuente para evitar que se rompan los caracteres en coreano.

from matplotlib import pyplot as plt
import matplotlib
import numpy as np
from numpy import pi
matplotlib.rcParams["font.family"] = "batang"

matplotlib.rcParams["font.size"] = 13
plt.rcParams['axes.unicode_minus'] = False

Luego fijamos el rango de los valores x del gráfico y la velocidad máxima.

xStart = -pi
xEnd = 3*pi
maxV = 20*(3**0.5)

x = np.arange(xStart, xEnd, 0.1)
y = np.sin(x)*maxV

El valor de pi se puede usar fácilmente llamando a pi de numpy.

Después ajustamos adecuadamente el tamaño de la imagen y, al ejecutar el código, obtenemos la siguiente figura.

plt.figure(figsize=(7,3))
plt.plot(x,y, color="black")
Crear exámenes de ciencias de la Tierra con Python-6

Todavía le falta bastante.

Ahora vamos a recortar la parte necesaria de este dibujo y a configurar cada eje.

Cambiamos los valores de los ejes con xticks y yticks, y recortamos adecuadamente el gráfico con xlim y ylim.

Y si dibujamos la cuadrícula, obtenemos una figura más convincente.

plt.xticks(np.arange(xStart, xEnd, 2*pi/3),[f"t{x}" for x in range(6)])
plt.yticks([-45,  -30, -15, 0, 15, 30, 45])
plt.xlim(xStart+2*pi/3, xEnd-pi*2/3)
plt.ylim(-45,45)
plt.grid(linestyle='--')
Crear exámenes de ciencias de la Tierra con Python-7

Por último, con scatter marcamos un punto con el valor que queremos y configuramos los nombres de los ejes.

z = np.arcsin(-(3**0.5)/2)
plt.scatter(z+2*pi,np.sin(z)*maxV, color="black")
plt.xlabel("시간 →", loc="right")
plt.ylabel("시선속도(m/s)")
Crear exámenes de ciencias de la Tierra con Python-8

Ahora, si cambiamos el periodo de la función o modificamos los valores máximo y mínimo, podemos transformar el problema.

4. Aplicación

En el segundo examen escrito de este trimestre, quería tomar el problema de abajo, invertir los valores de la velocidad radial del gráfico de la derecha y cambiar el valor máximo a 30.

Así que escribí el código siguiendo el método anterior.

Crear exámenes de ciencias de la Tierra con Python-9
from matplotlib import pyplot as plt
import matplotlib
import numpy as np
from numpy import pi
# matplotlib.rcParams["font.family"] = "AppleGothic"
matplotlib.rcParams["font.family"] = "batang"

matplotlib.rcParams["font.size"] = 13
plt.rcParams['axes.unicode_minus'] = False
xStart = 0
xEnd = 4*pi
maxV = 30

x = np.arange(xStart, xEnd, 0.1)
y = np.sin(x)*30
plt.figure(figsize=(2,2))
plt.plot(x,y, color="black")
plt.xticks([])
plt.yticks([-30, 0, 30], ["-30", 0 ,"+30"])
# plt.grid(linestyle="--")
plt.xlim([0, 2*pi])
plt.xlabel("시간 →", loc="right")
plt.plot([0, pi/2],[30, 30], color="black", linestyle="--",linewidth=0.5)
plt.plot([0, pi*3/2],[-30, -30], color="black", linestyle="--",linewidth=0.5)
plt.plot([0, pi*3],[0, 0], color="black", linewidth=0.5)
ylabel = plt.ylabel("시\n선\n속\n도\n(m/s)", rotation=0, labelpad=18)
ylabel.set_position((0,0.3))

Al principio pensé un poco cómo representar las líneas de puntos en medio, pero resultó que era tan sencillo como dibujar rectas.

Quedé bastante satisfecho con el resultado.

Crear exámenes de ciencias de la Tierra con Python-10

5. Comentarios finales

Fue una ocasión en la que mejoró la calidad de los exámenes y al mismo tiempo pude estudiar programación.

Tengo pensado seguir aplicándolo mucho en el futuro.

댓글을 불러오는 중...