2025 Exams/July

Sine wave crossing a medium boundary

Pre-College Physics Korea 2025. 8. 22. 06:23

[SUMMARY]

This blog page intuitively uses boundary continuity, wavelength–speed relationships, frequency invariance, and time-shift visualization to solve a Korean high-school wave exam, with a Python program provided to animate the wave motion.

Link to Original Problem in Korean
Link to Original Problem in Korean

 

<PROBLEEM>

Main Diagram of the Problem
Main Diagram of the Problem

 

<PROBLEM>
The figure shows the displacement of a wave at time t = 0, propagating along the x-axis from medium A to medium B as a function of position x. The wave propagation speed in medium A is 4 m/s. Which of the following <STATEMENTS> are correct regarding this situation?

<STATEMENTS>
(a) The frequency of the wave in medium A is twice that in medium B.
(b) The wave propagation speed in medium B is 8 m/s.
(c) At t = 0.5 s and x = 12 m, the displacement of the wave is 0.

<Choices>
① (a)  ② (c)  ③ (a), (b)  ④ (b), (c)  ⑤ (a), (b), (c)

 

[Think Along]
To solve this problem, you need to picture how the wave behaves at the interface between media A and B. Look at the animation below.

Animated Illustration of Wave Propagation Across a Boundary
Animated Illustration of Wave Propagation Across a Boundary


 

As you can see in the figure, at the boundary located at x = 6, the y-value (amplitude) of the sine wave remains continuous. Of course, during an exam you can’t actually write an animation program like the one above. That’s why, as test takers, we need to remember that at the boundary between two media with different propagation speeds, the wave behaves in this way. It’s important to develop the ability to picture this process clearly in your mind.

Now let's examine statement (a).

(a) The frequency of the wave in medium A is twice that in medium B.

Frequency is about how many times a wave oscillates per unit time. If you closely examine the crest at the boundary line x = 6 between media A and B, you can consider the point at x = 5.999 as belonging to medium A and the point at x = 6.001 as belonging to medium B. The crest y(5.999) is almost the same as y(6.001)—at every moment. Two waves whose crests match at all times must have the same frequency. Therefore, the frequencies in media A and B are the same. They are not in a 2:1 ratio.
Hence, statement (a) is false.

Animated Illustration of Wave Propagation Across a Boundary

Now, let’s move on to statement (b).

(b) The wave propagation speed in medium B is 8 m/s.

If the wavefront is continuous at x = 6 and the wave’s propagation speed in medium A is 4 m/s, then in medium B—where the wavelength is twice as long—the propagation speed must be twice 4 m/s, i.e., 8 m/s. (Isn’t it obvious at a glance that the wave on the right is moving twice as fast?)
Therefore, statement (b) is true.

Finally, let’s look at statement (c).

(c) At t = 0.5 s and x = 12 m, the displacement of the wave is 0.

When t = 0.5, the wave has moved 2 m to the right (measured in medium A; see the blue arrow in the prompt’s figure). If we depict this, it looks as follows.

Shift the wave 2 m to the right in Medium A
Shift the wave 2 m to the right in Medium A


Therefore, the displacement (the wave height y at x = 12) is indeed 0.
Thus, statement (c) is also true.
In conclusion, the correct answer is ④.

 

 

[Original Problem in Korean]

Original Problem in Korean
Original Problem in Korean

[Translation]

14. [Purpose of the Question] Derive and evaluate the properties of the wave

ㄱ. The frequencies of the waves in A and B are the same.

ㄴ. Since the wavelength in B is twice that in A, the propagation speed of the wave in B is 8 m/s.

ㄷ. 0.5 seconds corresponds to 1/2 of a period, so at t=0.5t = 0.5 seconds,
the displacement of the wave at x=12 mx = 12 \,\text{m} is 0.

 

[Python Program for the Wave Animation]

# Wave animation across two media (A→B) matching the snapshot in the prompt.
# - Medium A (x ≤ 6 m): wavelength λ_A = 4 m, speed v_A = 4 m/s (given)
# - Medium B (x ≥ 6 m): wavelength λ_B = 8 m (from figure),
#   so with frequency continuity f = v_A/λ_A = 1 Hz → v_B = 8 m/s
# - Snapshot at t = 0: crest at x=2 and x=6 in A, trough at x=4;
#   crest at x=6, trough at x=10, zero near x=12, crest at x=14 in B.

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation, PillowWriter

# -----------------------
# Domain and parameters
# -----------------------
x_min, x_max = 0.0, 14.0
boundary = 6.0       # interface between media A and B
A = 1.0              # amplitude (arbitrary units)

# Medium A
lambda_A = 4.0       # m (from figure; crests at 2 and 6)
v_A = 4.0            # m/s (given)
k_A = 2*np.pi/lambda_A
f = v_A / lambda_A   # 1 Hz
omega = 2*np.pi*f

# Medium B (frequency is continuous across boundary)
lambda_B = 8.0       # m (from figure; crests at 6 and 14)
v_B = f * lambda_B   # 8 m/s
k_B = 2*np.pi/lambda_B

# -----------------------
# Wave profile
# -----------------------
# Choose phases so t=0 profile matches the figure exactly:
#   y_A(x,0) = A cos[ 2π(x - 2)/λ_A ] → crests at x=2,6 in A
#   y_B(x,0) = A cos[ 2π(x - 6)/λ_B ] → crest at 6, trough at 10, crest at 14 in B
def y_profile(x, t):
    y = np.zeros_like(x)
    mask_A = x <= boundary
    mask_B = x >= boundary

    # Right-going harmonic waves in each medium
    if np.any(mask_A):
        xa = x[mask_A]
        y[mask_A] = A * np.cos(2*np.pi*(xa - v_A*t - 2.0)/lambda_A)
    if np.any(mask_B):
        xb = x[mask_B]
        y[mask_B] = A * np.cos(2*np.pi*(xb - v_B*t - 6.0)/lambda_B)
    return y

# -----------------------
# Figure / Animation
# -----------------------
fig, ax = plt.subplots(figsize=(8, 3.4), dpi=130)
x = np.linspace(x_min, x_max, 1000)
(line,) = ax.plot([], [], lw=2)

ax.set_xlim(x_min, x_max)
ax.set_ylim(-1.3, 1.3)
ax.set_xlabel("x (m)")
ax.set_ylabel("Displacement (arb. units)")

# Interface marker and labels
ax.axvline(boundary, linestyle="--", linewidth=1)
ax.text(1.5, 1.05, "Medium A", fontsize=10)
ax.text(9.0, 1.05, "Medium B", fontsize=10)
title = ax.text(0.02, 0.92, "", transform=ax.transAxes, fontsize=10)

def init():
    line.set_data([], [])
    title.set_text("t = 0.000 s")
    return line, title

def update(frame):
    t = frame
    y = y_profile(x, t)
    line.set_data(x, y)
    title.set_text(f"t = {t:0.3f} s")
    return line, title

# One period because f = 1 Hz → T = 1 s
T = 1.0
frames = np.linspace(0.0, T, 80)
ani = FuncAnimation(
    fig, update, frames=frames, init_func=init, blit=True, interval=1000 * (T / len(frames))
)

# Save GIF (optional)
# Requires 'pillow' package: pip install pillow
gif_path = "wave_medium_AB.gif"
ani.save(gif_path, writer=PillowWriter(fps=30))
print(f"Saved: {gif_path}")

# If you want to just show the animation window instead of saving, comment out the two lines above
# and uncomment the line below:
# plt.show()

[Source: July 2025 Korean National Physics I Exam, Grade 12, Problem 14]