16. κ·Έλ¦° ν•¨μˆ˜ (Green's Functions)

16. κ·Έλ¦° ν•¨μˆ˜ (Green's Functions)

ν•™μŠ΅ λͺ©ν‘œ

  • λ””λž™ 델타 ν•¨μˆ˜ $\delta(x)$의 μ •μ˜, μ„±μ§ˆ, λ‹€μ–‘ν•œ ν‘œν˜„μ„ μ΄ν•΄ν•˜κ³  ν™œμš©ν•  수 μžˆλ‹€
  • λΉ„μ œμ°¨ 미뢄방정식 $L[u] = f(x)$의 ν•΄λ₯Ό κ·Έλ¦° ν•¨μˆ˜λ₯Ό μ΄μš©ν•˜μ—¬ 적뢄 ν˜•νƒœλ‘œ ν‘œν˜„ν•  수 μžˆλ‹€
  • 경계값 λ¬Έμ œμ—μ„œ κ·Έλ¦° ν•¨μˆ˜λ₯Ό 직접 κ΅¬μ„±ν•˜κ³ , μ ‘ν•© 쑰건(matching conditions)을 μ μš©ν•  수 μžˆλ‹€
  • κ³ μœ ν•¨μˆ˜ μ „κ°œλ²•μœΌλ‘œ κ·Έλ¦° ν•¨μˆ˜λ₯Ό κΈ‰μˆ˜ ν˜•νƒœλ‘œ λ‚˜νƒ€λ‚΄κ³ , μŠ€νˆ¬λ¦„-리우빌 이둠과의 연결을 μ΄ν•΄ν•œλ‹€
  • νŽΈλ―ΈλΆ„λ°©μ •μ‹μ˜ κ·Έλ¦° ν•¨μˆ˜(푸아솑 방정식, 열방정식, νŒŒλ™λ°©μ •μ‹)λ₯Ό κ΅¬ν•˜κ³  물리적으둜 해석할 수 μžˆλ‹€
  • μ •μ „κΈ°ν•™, μ–‘μžμ—­ν•™, 음ν–₯ν•™ λ“± 물리적 μ‘μš©μ—μ„œ κ·Έλ¦° ν•¨μˆ˜λ₯Ό ν™œμš©ν•˜μ—¬ μ‹€μ œ 문제λ₯Ό ν’€ 수 μžˆλ‹€

λ¬Όλ¦¬ν•™μ—μ„œμ˜ μ€‘μš”μ„±: κ·Έλ¦° ν•¨μˆ˜λŠ” "점 μ†ŒμŠ€κ°€ λ§Œλ“œλŠ” 응닡"을 κΈ°μˆ ν•˜λŠ” 보편적 도ꡬ이닀. 일단 점 μ†ŒμŠ€μ— λŒ€ν•œ 응닡(κ·Έλ¦° ν•¨μˆ˜)을 μ•Œλ©΄, 쀑첩 원리에 μ˜ν•΄ μž„μ˜μ˜ μ†ŒμŠ€ 뢄포에 λŒ€ν•œ ν•΄λ₯Ό 적뢄 ν•˜λ‚˜λ‘œ ꡬ할 수 μžˆλ‹€. μ •μ „κΈ°ν•™μ—μ„œ μ μ „ν•˜μ˜ μ „μœ„, μ–‘μžμ—­ν•™μ—μ„œ μ „νŒŒν•¨μˆ˜(propagator), 음ν–₯ν•™μ—μ„œ μ μŒμ›μ˜ 방사 λ“± ν˜„λŒ€ λ¬Όλ¦¬ν•™μ˜ 핡심 λ¬Έμ œλ“€μ΄ λͺ¨λ‘ κ·Έλ¦° ν•¨μˆ˜λ‘œ κ·€κ²°λœλ‹€.


1. λ””λž™ 델타 ν•¨μˆ˜

1.1 μ •μ˜μ™€ κΈ°λ³Έ μ„±μ§ˆ

λ””λž™ 델타 ν•¨μˆ˜ $\delta(x)$λŠ” μ—„λ°€ν•œ μ˜λ―Έμ—μ„œ ν•¨μˆ˜κ°€ μ•„λ‹ˆλΌ μΌλ°˜ν™”λœ ν•¨μˆ˜(generalized function) λ˜λŠ” 뢄포(distribution)이닀. λ‹€μŒ 두 μ„±μ§ˆλ‘œ μ •μ˜ν•œλ‹€:

$$\delta(x) = 0 \quad (x \neq 0), \qquad \int_{-\infty}^{\infty} \delta(x) \, dx = 1$$

체(sifting) μ„±μ§ˆ: 델타 ν•¨μˆ˜μ˜ κ°€μž₯ μ€‘μš”ν•œ μ„±μ§ˆμ΄λ‹€.

$$\int_{-\infty}^{\infty} f(x) \delta(x - a) \, dx = f(a)$$

이것은 $\delta(x-a)$κ°€ $x = a$μ—μ„œ ν•¨μˆ˜κ°’μ„ "μΆ”μΆœ"ν•œλ‹€λŠ” λœ»μ΄λ‹€.

μΆ”κ°€ μ„±μ§ˆλ“€:

$$\delta(-x) = \delta(x) \quad \text{(μ§ν•¨μˆ˜)}$$

$$\delta(ax) = \frac{1}{|a|}\delta(x) \quad (a \neq 0)$$

$$x\delta(x) = 0$$

$$\delta(g(x)) = \sum_i \frac{\delta(x - x_i)}{|g'(x_i)|} \quad (g(x_i) = 0, \; g'(x_i) \neq 0)$$

1.2 델타 ν•¨μˆ˜μ˜ ν‘œν˜„

$\delta(x)$λŠ” μ •μΉ™ ν•¨μˆ˜μ˜ κ·Ήν•œμœΌλ‘œ ν‘œν˜„ν•  수 μžˆλ‹€:

κ°€μš°μ‹œμ•ˆ ν‘œν˜„: $$\delta(x) = \lim_{\epsilon \to 0} \frac{1}{\epsilon\sqrt{\pi}} e^{-x^2/\epsilon^2}$$

둜렌츠 ν‘œν˜„: $$\delta(x) = \lim_{\epsilon \to 0} \frac{1}{\pi} \frac{\epsilon}{x^2 + \epsilon^2}$$

sinc ν‘œν˜„ (푸리에 ν‘œν˜„): $$\delta(x) = \frac{1}{2\pi} \int_{-\infty}^{\infty} e^{ikx} dk = \lim_{N \to \infty} \frac{\sin(Nx)}{\pi x}$$

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-3, 3, 1000)

fig, axes = plt.subplots(1, 3, figsize=(15, 4))

# κ°€μš°μ‹œμ•ˆ ν‘œν˜„
for eps in [1.0, 0.5, 0.2, 0.05]:
    delta_gauss = np.exp(-x**2 / eps**2) / (eps * np.sqrt(np.pi))
    axes[0].plot(x, delta_gauss, label=f'$\\epsilon={eps}$')
axes[0].set_title('κ°€μš°μ‹œμ•ˆ ν‘œν˜„')
axes[0].legend(); axes[0].set_ylim(0, 10); axes[0].grid(True, alpha=0.3)

# 둜렌츠 ν‘œν˜„
for eps in [1.0, 0.5, 0.2, 0.05]:
    delta_lorentz = (1/np.pi) * eps / (x**2 + eps**2)
    axes[1].plot(x, delta_lorentz, label=f'$\\epsilon={eps}$')
axes[1].set_title('둜렌츠 ν‘œν˜„')
axes[1].legend(); axes[1].set_ylim(0, 10); axes[1].grid(True, alpha=0.3)

# sinc ν‘œν˜„
for N in [5, 20, 50, 200]:
    delta_sinc = np.sin(N * x) / (np.pi * x + 1e-30)
    axes[2].plot(x, delta_sinc, label=f'$N={N}$', alpha=0.8)
axes[2].set_title('sinc ν‘œν˜„ (푸리에)')
axes[2].legend(); axes[2].set_ylim(-5, 70); axes[2].grid(True, alpha=0.3)

plt.suptitle('λ””λž™ 델타 ν•¨μˆ˜μ˜ λ‹€μ–‘ν•œ ν‘œν˜„', fontsize=14, fontweight='bold')
plt.tight_layout(); plt.show()

1.3 델타 ν•¨μˆ˜μ˜ λ„ν•¨μˆ˜

$\delta'(x)$λŠ” λ‹€μŒ 적뢄 μ„±μ§ˆλ‘œ μ •μ˜λœλ‹€:

$$\int_{-\infty}^{\infty} f(x) \delta'(x-a) \, dx = -f'(a)$$

일반적으둜 $n$μ°¨ λ„ν•¨μˆ˜:

$$\int_{-\infty}^{\infty} f(x) \delta^{(n)}(x-a) \, dx = (-1)^n f^{(n)}(a)$$

1.4 닀차원 델타 ν•¨μˆ˜

3차원 λ””λž™ 델타:

$$\delta^3(\mathbf{r} - \mathbf{r}') = \delta(x - x')\delta(y - y')\delta(z - z')$$

체 μ„±μ§ˆ: $\int f(\mathbf{r}) \delta^3(\mathbf{r} - \mathbf{r}') \, d^3r = f(\mathbf{r}')$

κ΅¬λ©΄μ’Œν‘œμ—μ„œ: $\delta^3(\mathbf{r} - \mathbf{r}') = \frac{\delta(r-r')}{r^2} \frac{\delta(\theta-\theta')}{\sin\theta} \delta(\phi-\phi')$

μ€‘μš”ν•œ 관계식 (μ •μ „κΈ°ν•™μ˜ 핡심):

$$\nabla^2 \left(\frac{1}{|\mathbf{r} - \mathbf{r}'|}\right) = -4\pi \delta^3(\mathbf{r} - \mathbf{r}')$$

import numpy as np
import matplotlib.pyplot as plt

# 체(sifting) μ„±μ§ˆμ˜ 수치 검증
# f(x) = cos(x), a = 1.0에 λŒ€ν•΄ integral f(x) delta_eps(x-a) dx ~ f(a)
a = 1.0
f = lambda t: np.cos(t)
x = np.linspace(-10, 10, 100000)

print("=== 체(sifting) μ„±μ§ˆ 수치 검증 ===")
print(f"f(a) = cos({a}) = {f(a):.8f}")
print()

for eps in [1.0, 0.1, 0.01, 0.001]:
    # κ°€μš°μ‹œμ•ˆ 근사 delta μ‚¬μš©
    delta_approx = np.exp(-(x - a)**2 / eps**2) / (eps * np.sqrt(np.pi))
    integral = np.trapz(f(x) * delta_approx, x)
    error = abs(integral - f(a))
    print(f"  eps = {eps:.3f}: integral = {integral:.8f}, 였차 = {error:.2e}")

2. κ·Έλ¦° ν•¨μˆ˜μ˜ κ°œλ…

2.1 λΉ„μ œμ°¨ 미뢄방정식과 쀑첩 원리

μ„ ν˜• λ―ΈλΆ„ μ—°μ‚°μž $L$에 λŒ€ν•΄ λΉ„μ œμ°¨ 방정식:

$$L[u(x)] = f(x)$$

을 ν’€κ³ μž ν•œλ‹€. λ§Œμ•½ $L$이 μ„ ν˜•μ΄λ©΄ 쀑첩 원리(superposition principle)κ°€ μ„±λ¦½ν•œλ‹€: $L[u_1] = f_1$이고 $L[u_2] = f_2$이면 $L[\alpha u_1 + \beta u_2] = \alpha f_1 + \beta f_2$.

2.2 점 μ†ŒμŠ€ μ‘λ‹΅μœΌλ‘œμ„œμ˜ κ·Έλ¦° ν•¨μˆ˜

μ†ŒμŠ€ $f(x)$λ₯Ό 델타 ν•¨μˆ˜μ˜ μ€‘μ²©μœΌλ‘œ ν‘œν˜„ν•˜λ©΄:

$$f(x) = \int f(x') \delta(x - x') \, dx'$$

κ·Έλ¦° ν•¨μˆ˜ $G(x, x')$λ₯Ό "점 μ†ŒμŠ€ $\delta(x - x')$에 λŒ€ν•œ 응닡"으둜 μ •μ˜ν•œλ‹€:

$$L[G(x, x')] = \delta(x - x')$$

그러면 쀑첩 원리에 μ˜ν•΄ μ›λž˜ λ°©μ •μ‹μ˜ ν•΄λŠ”:

$$\boxed{u(x) = \int G(x, x') f(x') \, dx'}$$

이것이 κ·Έλ¦° ν•¨μˆ˜ λ°©λ²•μ˜ 핡심이닀. 점 μ†ŒμŠ€μ˜ 응닡 $G$λ₯Ό ν•œ 번만 κ΅¬ν•˜λ©΄, μž„μ˜μ˜ μ†ŒμŠ€ $f$에 λŒ€ν•œ ν•΄λ₯Ό μ λΆ„μœΌλ‘œ λ°”λ‘œ 얻을 수 μžˆλ‹€.

2.3 물리적 직관

물리 μ‹œμŠ€ν…œ μ—°μ‚°μž $L$ μ†ŒμŠ€ $f$ κ·Έλ¦° ν•¨μˆ˜ $G$
μ •μ „κΈ°ν•™ $\nabla^2$ $-\rho/\epsilon_0$ μ μ „ν•˜μ˜ μ „μœ„
열전도 $\partial_t - \alpha^2\nabla^2$ 열원 μ μ—΄μ›μ˜ μ˜¨λ„ 응닡
νŒŒλ™ $\partial_t^2 - c^2\nabla^2$ μ™Έλ ₯ 점좩격에 λŒ€ν•œ νŒŒλ™
μ–‘μžμ—­ν•™ $i\hbar\partial_t - H$ β€” μ „νŒŒν•¨μˆ˜(propagator)
import numpy as np
import matplotlib.pyplot as plt

# κ°œλ… μ‹œμ—°: 1D ν˜„μ— κ°€ν•΄μ§„ μ ν•˜μ€‘μ˜ 응닡
# L[u] = u'' = f(x), u(0) = u(1) = 0
# κ·Έλ¦° ν•¨μˆ˜: G(x, x') = x'(1-x) for x > x', x(1-x') for x < x'

def greens_function_string(x, xp):
    """μ–‘ 끝 κ³ μ • ν˜„μ˜ κ·Έλ¦° ν•¨μˆ˜"""
    return np.where(x < xp, x * (1 - xp), xp * (1 - x))

x = np.linspace(0, 1, 500)
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(14, 5))

# μ™Όμͺ½: λ‹€μ–‘ν•œ 점 μ†ŒμŠ€ μœ„μΉ˜μ—μ„œμ˜ κ·Έλ¦° ν•¨μˆ˜
for xp in [0.2, 0.4, 0.5, 0.6, 0.8]:
    G = greens_function_string(x, xp)
    ax1.plot(x, G, linewidth=2, label=f"$x' = {xp}$")
    ax1.plot(xp, greens_function_string(xp, xp), 'ko', markersize=5)

ax1.set_xlabel('$x$'); ax1.set_ylabel("$G(x, x')$")
ax1.set_title("점 μ†ŒμŠ€ μœ„μΉ˜λ³„ κ·Έλ¦° ν•¨μˆ˜ $G(x, x')$")
ax1.legend(); ax1.grid(True, alpha=0.3)

# 였λ₯Έμͺ½: 쀑첩 원리 - μž„μ˜μ˜ μ†ŒμŠ€μ— λŒ€ν•œ ν•΄
f_source = lambda t: np.sin(2 * np.pi * t)  # μž„μ˜μ˜ μ†ŒμŠ€ f(x)
u_solution = np.array([np.trapz(greens_function_string(xi, x) * f_source(x), x)
                        for xi in x])

ax2.plot(x, f_source(x), 'r--', linewidth=1.5, label='μ†ŒμŠ€ $f(x) = \\sin(2\\pi x)$')
ax2.plot(x, u_solution, 'b-', linewidth=2.5, label='ν•΄ $u(x) = \\int G f \\, dx\'$')
ax2.set_xlabel('$x$'); ax2.set_title('쀑첩 원리에 μ˜ν•œ ν•΄ ꡬ성')
ax2.legend(); ax2.grid(True, alpha=0.3)

plt.suptitle('κ·Έλ¦° ν•¨μˆ˜μ˜ κ°œλ…: 점 μ†ŒμŠ€ μ‘λ‹΅μ˜ 쀑첩', fontsize=14, fontweight='bold')
plt.tight_layout(); plt.show()

3. 경계값 문제의 κ·Έλ¦° ν•¨μˆ˜

3.1 ꡬ성 방법

2μ°¨ ODE $L[y] = y'' + p(x)y' + q(x)y = f(x)$에 λŒ€ν•΄ 제차 경계 쑰건 $y(a) = 0$, $y(b) = 0$μ—μ„œμ˜ κ·Έλ¦° ν•¨μˆ˜λ₯Ό κ΅¬μ„±ν•˜μž.

단계 1: 제차 방정식 $L[y] = 0$의 두 독립해λ₯Ό κ΅¬ν•œλ‹€: - $y_1(x)$: $y_1(a) = 0$을 만쑱 - $y_2(x)$: $y_2(b) = 0$을 만쑱

단계 2: κ·Έλ¦° ν•¨μˆ˜λŠ” κ΅¬κ°„λ³„λ‘œ μ •μ˜λœλ‹€:

$$G(x, x') = \begin{cases} A \, y_1(x) y_2(x') & x < x' \\ A \, y_1(x') y_2(x) & x > x' \end{cases}$$

단계 3: μ ‘ν•© 쑰건(matching conditions)을 μ μš©ν•œλ‹€:

(1) 연속성: $G$λŠ” $x = x'$μ—μ„œ 연속

$$G(x'^-, x') = G(x'^+, x')$$

(2) λ„ν•¨μˆ˜μ˜ λΆˆμ—°μ†: $G'$λŠ” $x = x'$μ—μ„œ 점프 λΆˆμ—°μ†

$$\left.\frac{\partial G}{\partial x}\right|_{x'^+} - \left.\frac{\partial G}{\partial x}\right|_{x'^-} = \frac{1}{p(x')}$$

μ—¬κΈ°μ„œ $p(x')$λŠ” $L$의 졜고차 ν•­μ˜ κ³„μˆ˜μ΄λ‹€ (ν‘œμ€€ν˜• $y''$이면 $p=1$).

μƒμˆ˜ $A$λŠ” 이 μ‘°κ±΄λ“€λ‘œλΆ€ν„° κ²°μ •λœλ‹€:

$$A = \frac{1}{p(x') W(y_1, y_2)(x')}$$

$W$λŠ” λ‘ μŠ€ν‚€μ•ˆ(Wronskian): $W = y_1 y_2' - y_1' y_2$.

3.2 λŒ€μΉ­μ„±

정리: 자기수반 μ—°μ‚°μžμ˜ κ·Έλ¦° ν•¨μˆ˜λŠ” λŒ€μΉ­μ΄λ‹€:

$$G(x, x') = G(x', x)$$

이것은 μƒλ°˜ 정리(reciprocity theorem)λ₯Ό μˆ˜ν•™μ μœΌλ‘œ ν‘œν˜„ν•œ 것이닀: 점 $x'$의 μ†ŒμŠ€κ°€ 점 $x$에 λ§Œλ“œλŠ” 응닡은, 점 $x$의 μ†ŒμŠ€κ°€ 점 $x'$에 λ§Œλ“œλŠ” 응닡과 κ°™λ‹€.

3.3 예제: $y'' = f(x)$, $y(0) = y(1) = 0$

μ œμ°¨ν•΄: $y_1 = x$, $y_2 = 1 - x$. $W = y_1 y_2' - y_1'y_2 = -x - (1-x) = -1$.

$$G(x, x') = \begin{cases} x(1-x') & x < x' \\ x'(1-x) & x > x' \end{cases}$$

import numpy as np
import matplotlib.pyplot as plt
import sympy as sp

# SymPy둜 κ·Έλ¦° ν•¨μˆ˜ ꡬ성 및 검증
x_sym, xp_sym = sp.symbols('x xp')

# y'' = f(x), y(0) = y(1) = 0
# μ œμ°¨ν•΄: y1 = x (y1(0)=0), y2 = 1-x (y2(1)=0)
y1 = x_sym
y2 = 1 - x_sym
W = y1 * sp.diff(y2, x_sym) - sp.diff(y1, x_sym) * y2
print(f"λ‘ μŠ€ν‚€μ•ˆ W = {W}")  # -1

# κ·Έλ¦° ν•¨μˆ˜ (x < x' μ˜μ—­)
G_left = -y1 * y2.subs(x_sym, xp_sym) / W  # x < x'
G_right = -y1.subs(x_sym, xp_sym) * y2 / W  # x > x'
print(f"G(x, x') = {G_left} (x < x')")
print(f"G(x, x') = {G_right} (x > x')")

# μ ‘ν•© 쑰건 검증
print("\n=== μ ‘ν•© 쑰건 검증 (x = x') ===")
# 연속성
G_left_at_xp = G_left.subs(x_sym, xp_sym)
G_right_at_xp = G_right.subs(x_sym, xp_sym)
print(f"연속성: G(x'^-, x') = {G_left_at_xp}, G(x'^+, x') = {G_right_at_xp}")
print(f"  차이 = {sp.simplify(G_left_at_xp - G_right_at_xp)}")

# λ„ν•¨μˆ˜ 점프
dG_left = sp.diff(G_left, x_sym).subs(x_sym, xp_sym)
dG_right = sp.diff(G_right, x_sym).subs(x_sym, xp_sym)
jump = sp.simplify(dG_right - dG_left)
print(f"λ„ν•¨μˆ˜ 점프: G'(x'^+) - G'(x'^-) = {jump}")  # 1 (= 1/p(x'))

# 수치 μ‹œκ°ν™”
x_num = np.linspace(0, 1, 500)
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(14, 5))

# G(x, x') λ“±κ³ μ„  μ‹œκ°ν™” (λŒ€μΉ­μ„± 확인)
xp_vals = np.linspace(0, 1, 500)
X, XP = np.meshgrid(x_num, xp_vals)
G_vals = np.where(X < XP, X * (1 - XP), XP * (1 - X))

c = ax1.contourf(X, XP, G_vals, levels=30, cmap='viridis')
plt.colorbar(c, ax=ax1)
ax1.set_xlabel("$x$"); ax1.set_ylabel("$x'$")
ax1.set_title("$G(x, x')$ λ“±κ³ μ„  β€” λŒ€μΉ­μ„± $G(x,x') = G(x',x)$")

# νŠΉμ • x'μ—μ„œμ˜ G(x, x') 단면
for xp in [0.25, 0.5, 0.75]:
    G_section = np.where(x_num < xp, x_num * (1 - xp), xp * (1 - x_num))
    ax2.plot(x_num, G_section, linewidth=2, label=f"$x' = {xp}$")
    # κΊΎμ΄λŠ” 점(λ„ν•¨μˆ˜ λΆˆμ—°μ†) ν‘œμ‹œ
    ax2.plot(xp, xp * (1 - xp), 'ko', markersize=6)

ax2.set_xlabel('$x$'); ax2.set_ylabel("$G(x, x')$")
ax2.set_title("κ·Έλ¦° ν•¨μˆ˜ 단면: λ„ν•¨μˆ˜ λΆˆμ—°μ† 확인")
ax2.legend(); ax2.grid(True, alpha=0.3)
plt.tight_layout(); plt.show()

4. μŠ€νˆ¬λ¦„-리우빌 λ¬Έμ œμ™€ κ³ μœ ν•¨μˆ˜ μ „κ°œ

4.1 κ³ μœ ν•¨μˆ˜ μ „κ°œλ²•

μŠ€νˆ¬λ¦„-리우빌 이둠 (Lesson 10)μ—μ„œ 배운 κ³ μœ ν•¨μˆ˜μ˜ 완비성을 μ΄μš©ν•˜λ©΄, κ·Έλ¦° ν•¨μˆ˜λ₯Ό κ³ μœ ν•¨μˆ˜μ˜ κΈ‰μˆ˜λ‘œ μ „κ°œν•  수 μžˆλ‹€.

자기수반 μ—°μ‚°μž $L$의 κ³ μœ κ°’ 문제:

$$L[\phi_n] = \lambda_n w(x) \phi_n, \quad n = 1, 2, 3, \ldots$$

κ³ μœ ν•¨μˆ˜ $\{\phi_n\}$이 $L^2_w[a,b]$μ—μ„œ μ™„λΉ„ 직ꡐ계λ₯Ό 이루면, κ·Έλ¦° ν•¨μˆ˜λŠ”:

$$\boxed{G(x, x') = \sum_{n=1}^{\infty} \frac{\phi_n(x) \phi_n(x')}{\lambda_n \|\phi_n\|_w^2}}$$

μ—¬κΈ°μ„œ $\|\phi_n\|_w^2 = \int_a^b w(x) |\phi_n(x)|^2 dx$이닀.

4.2 μœ λ„

$G(x, x')$λ₯Ό κ³ μœ ν•¨μˆ˜λ‘œ μ „κ°œν•œλ‹€:

$$G(x, x') = \sum_n c_n(x') \phi_n(x)$$

$L[G] = \delta(x - x')$에 λŒ€μž…ν•˜κ³ , 양변에 $\phi_m(x)$λ₯Ό κ³±ν•˜κ³  μ λΆ„ν•˜λ©΄:

$$\lambda_m c_m(x') \|\phi_m\|_w^2 = \phi_m(x')$$

λ”°λΌμ„œ $c_m(x') = \phi_m(x') / (\lambda_m \|\phi_m\|_w^2)$.

4.3 예제: $y'' = f(x)$, $y(0) = y(\pi) = 0$

κ³ μœ κ°’ 문제: $\phi_n'' = -\lambda_n \phi_n$, $\phi_n(0) = \phi_n(\pi) = 0$

$\phi_n = \sin(nx)$, $\lambda_n = n^2$, $\|\phi_n\|^2 = \pi/2$

$$G(x, x') = \frac{2}{\pi} \sum_{n=1}^{\infty} \frac{\sin(nx)\sin(nx')}{n^2}$$

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, np.pi, 500)

def G_eigenfunction(x_val, xp, N_terms):
    """κ³ μœ ν•¨μˆ˜ μ „κ°œλ‘œ κ΅¬ν•œ κ·Έλ¦° ν•¨μˆ˜"""
    G = np.zeros_like(x_val)
    for n in range(1, N_terms + 1):
        G += (2 / np.pi) * np.sin(n * x_val) * np.sin(n * xp) / n**2
    return G

def G_exact(x_val, xp):
    """μ •ν™•ν•œ κ·Έλ¦° ν•¨μˆ˜ (λ‹«νžŒ ν˜•νƒœ)"""
    return np.where(x_val < xp,
                    x_val * (np.pi - xp) / np.pi,
                    xp * (np.pi - x_val) / np.pi)

fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(14, 5))
xp = np.pi / 2  # x' = pi/2

# μ™Όμͺ½: κΈ‰μˆ˜ 수렴 μ‹œκ°ν™”
ax1.plot(x, G_exact(x, xp), 'k-', linewidth=3, label='μ •ν™•ν•œ ν•΄')
for N in [1, 3, 10, 50]:
    ax1.plot(x, G_eigenfunction(x, xp, N), '--', linewidth=1.5, label=f'$N = {N}$')
ax1.set_title(f"κ³ μœ ν•¨μˆ˜ μ „κ°œμ˜ 수렴 ($x' = \\pi/2$)")
ax1.set_xlabel('$x$'); ax1.legend(); ax1.grid(True, alpha=0.3)

# 였λ₯Έμͺ½: ν•­ μˆ˜μ— λ”°λ₯Έ 였차
N_values = np.arange(1, 101)
errors = []
for N in N_values:
    G_approx = G_eigenfunction(x, xp, N)
    G_true = G_exact(x, xp)
    errors.append(np.max(np.abs(G_approx - G_true)))

ax2.semilogy(N_values, errors, 'b-', linewidth=2)
ax2.set_xlabel('ν•­ 수 $N$'); ax2.set_ylabel('μ΅œλŒ€ 였차')
ax2.set_title('κ³ μœ ν•¨μˆ˜ μ „κ°œμ˜ 수렴 속도')
ax2.grid(True, alpha=0.3)

plt.suptitle('κ³ μœ ν•¨μˆ˜ μ „κ°œλ²•μ— μ˜ν•œ κ·Έλ¦° ν•¨μˆ˜', fontsize=14, fontweight='bold')
plt.tight_layout(); plt.show()

5. μƒλ―ΈλΆ„λ°©μ •μ‹μ˜ κ·Έλ¦° ν•¨μˆ˜

5.1 일반적인 2차 ODE

$$y'' + p(x)y' + q(x)y = f(x), \quad y(a) = y(b) = 0$$

이 문제의 ν•΄λŠ” λ§€κ°œλ³€μˆ˜ λ³€ν™˜λ²•(variation of parameters)κ³Ό λ°€μ ‘ν•˜κ²Œ μ—°κ²°λœλ‹€. 사싀 λ§€κ°œλ³€μˆ˜ λ³€ν™˜λ²•μœΌλ‘œ κ΅¬ν•œ νŠΉμˆ˜ν•΄κ°€ κ·Έλ¦° ν•¨μˆ˜λ₯Ό μ΄μš©ν•œ 적뢄 ν‘œν˜„κ³Ό λ™μΉ˜μž„μ„ 보일 수 μžˆλ‹€.

5.2 μƒμˆ˜κ³„μˆ˜ 방정식

$y'' + k^2 y = f(x)$, $y(0) = y(L) = 0$인 경우:

μ œμ°¨ν•΄: $y_1 = \sin(kx)$, $y_2 = \sin(k(L-x))$

$$G(x, x') = \frac{1}{k\sin(kL)} \begin{cases} \sin(kx)\sin(k(L-x')) & x < x' \\ \sin(kx')\sin(k(L-x)) & x > x' \end{cases}$$

5.3 예제: μ‘°ν™” μ§„λ™μžμ˜ κ·Έλ¦° ν•¨μˆ˜

감쇠 μ‘°ν™” μ§„λ™μž: $\ddot{x} + 2\gamma\dot{x} + \omega_0^2 x = f(t)$

초기 쑰건 $x(0) = \dot{x}(0) = 0$인 인과적(causal) κ·Έλ¦° ν•¨μˆ˜ λ˜λŠ” μ§€μ—° κ·Έλ¦° ν•¨μˆ˜(retarded Green's function):

$$G_R(t, t') = \begin{cases} \frac{1}{\omega_d} e^{-\gamma(t-t')} \sin(\omega_d(t-t')) & t > t' \\ 0 & t < t' \end{cases}$$

μ—¬κΈ°μ„œ $\omega_d = \sqrt{\omega_0^2 - \gamma^2}$ (λ―Έμ†Œ 감쇠, $\gamma < \omega_0$).

ν•΄: $x(t) = \int_0^t G_R(t, t') f(t') \, dt'$

import numpy as np
import matplotlib.pyplot as plt

# 감쇠 μ‘°ν™” μ§„λ™μžμ˜ κ·Έλ¦° ν•¨μˆ˜
omega0, gamma = 5.0, 0.5
omega_d = np.sqrt(omega0**2 - gamma**2)

def G_retarded(t, tp):
    """μ§€μ—° κ·Έλ¦° ν•¨μˆ˜"""
    dt = t - tp
    return np.where(dt > 0,
                    np.exp(-gamma * dt) * np.sin(omega_d * dt) / omega_d,
                    0.0)

t = np.linspace(0, 10, 2000)

# λ‹€μ–‘ν•œ μ†ŒμŠ€ ν•¨μˆ˜μ— λŒ€ν•œ 응닡 계산
fig, axes = plt.subplots(2, 2, figsize=(14, 10))

sources = {
    'μž„νŽ„μŠ€': lambda tp: np.where(np.abs(tp - 1.0) < 0.05, 1.0/0.1, 0.0),
    '계단 ν•¨μˆ˜': lambda tp: np.where(tp > 1.0, 1.0, 0.0),
    'μ •ν˜„νŒŒ': lambda tp: np.sin(3.0 * tp),
    '이쀑 νŽ„μŠ€': lambda tp: (np.where(np.abs(tp-1)<0.05, 1/0.1, 0.0) +
                             np.where(np.abs(tp-3)<0.05, -1/0.1, 0.0))
}

for ax, (name, f_source) in zip(axes.flat, sources.items()):
    # κ·Έλ¦° ν•¨μˆ˜λ₯Ό μ΄μš©ν•œ μ»¨λ³Όλ£¨μ…˜ 적뢄
    f_vals = f_source(t)
    x_response = np.array([np.trapz(G_retarded(ti, t[:i+1]) * f_vals[:i+1], t[:i+1])
                           if i > 0 else 0.0 for i, ti in enumerate(t)])

    ax.plot(t, f_vals * 0.1, 'r--', alpha=0.5, label='μ†ŒμŠ€ $f(t)$ (μΆ•μ†Œ)')
    ax.plot(t, x_response, 'b-', linewidth=2, label='응닡 $x(t)$')
    ax.set_title(f'μ†ŒμŠ€: {name}'); ax.legend(); ax.grid(True, alpha=0.3)
    ax.set_xlabel('$t$')

plt.suptitle(f'감쇠 μ‘°ν™” μ§„λ™μž ($\\omega_0={omega0}, \\gamma={gamma}$)',
             fontsize=14, fontweight='bold')
plt.tight_layout(); plt.show()

6. νŽΈλ―ΈλΆ„λ°©μ •μ‹μ˜ κ·Έλ¦° ν•¨μˆ˜

6.1 푸아솑 λ°©μ •μ‹μ˜ 자유 곡간 κ·Έλ¦° ν•¨μˆ˜

푸아솑 방정식: $\nabla^2 \phi = -\rho/\epsilon_0$

κ·Έλ¦° ν•¨μˆ˜ μ •μ˜: $\nabla^2 G(\mathbf{r}, \mathbf{r}') = \delta^3(\mathbf{r} - \mathbf{r}')$

3차원 자유 곡간:

$$G(\mathbf{r}, \mathbf{r}') = -\frac{1}{4\pi|\mathbf{r} - \mathbf{r}'|}$$

2차원 자유 곡간:

$$G(\mathbf{r}, \mathbf{r}') = \frac{1}{2\pi}\ln|\mathbf{r} - \mathbf{r}'|$$

ν•΄: $\phi(\mathbf{r}) = \frac{1}{4\pi\epsilon_0}\int \frac{\rho(\mathbf{r}')}{|\mathbf{r} - \mathbf{r}'|} d^3r'$ β€” λ°”λ‘œ μΏ¨λ‘± μ „μœ„!

6.2 μ˜μƒλ²• (Method of Images)

μœ ν•œ 경계가 있으면 자유 곡간 κ·Έλ¦° ν•¨μˆ˜λ₯Ό 직접 μ“Έ 수 μ—†λ‹€. μ˜μƒλ²•(method of images)은 경계 쑰건을 λ§Œμ‘±ν•˜λŠ” κ·Έλ¦° ν•¨μˆ˜λ₯Ό "ν—ˆμƒ μ†ŒμŠ€"λ₯Ό μΆ”κ°€ν•˜μ—¬ κ΅¬μ„±ν•˜λŠ” 기법이닀.

예: μ ‘μ§€λœ λ¬΄ν•œ 평면 ($z = 0$) μœ„μ˜ μ μ „ν•˜

μ‹€μ œ μ „ν•˜ $q$κ°€ $(0, 0, d)$에 있으면, ν—ˆμƒ μ „ν•˜ $-q$λ₯Ό $(0, 0, -d)$에 λ†“λŠ”λ‹€:

$$G(\mathbf{r}, \mathbf{r}') = -\frac{1}{4\pi}\left(\frac{1}{|\mathbf{r} - \mathbf{r}'|} - \frac{1}{|\mathbf{r} - \mathbf{r}''|}\right)$$

μ—¬κΈ°μ„œ $\mathbf{r}'' = (x', y', -z')$λŠ” μ˜μƒμ μ΄λ‹€.

6.3 μ—΄λ°©μ •μ‹μ˜ κ·Έλ¦° ν•¨μˆ˜

열방정식: $\frac{\partial u}{\partial t} = \alpha^2 \nabla^2 u$

자유 곡간 κ·Έλ¦° ν•¨μˆ˜ (1D):

$$G(x, t; x', t') = \frac{1}{\sqrt{4\pi\alpha^2(t-t')}} \exp\left(-\frac{(x-x')^2}{4\alpha^2(t-t')}\right), \quad t > t'$$

이것은 $t = t'$μ—μ„œ $\delta(x - x')$둜 μ‹œμž‘ν•˜μ—¬ μ‹œκ°„μ— 따라 κ°€μš°μ‹œμ•ˆμœΌλ‘œ 퍼져 λ‚˜κ°€λŠ” λͺ¨μ–‘이닀.

6.4 νŒŒλ™λ°©μ •μ‹μ˜ μ§€μ—° κ·Έλ¦° ν•¨μˆ˜

νŒŒλ™λ°©μ •μ‹: $\nabla^2 G - \frac{1}{c^2}\frac{\partial^2 G}{\partial t^2} = \delta^3(\mathbf{r} - \mathbf{r}')\delta(t - t')$

3D μ§€μ—° κ·Έλ¦° ν•¨μˆ˜(retarded Green's function):

$$G_R(\mathbf{r}, t; \mathbf{r}', t') = -\frac{\delta(t - t' - |\mathbf{r}-\mathbf{r}'|/c)}{4\pi|\mathbf{r}-\mathbf{r}'|}$$

이것은 인과율(causality)을 λ°˜μ˜ν•œλ‹€: μ‹ ν˜Έκ°€ λΉ›μ˜ 속도 $c$둜 μ „νŒŒλ˜μ–΄ μ‹œκ°„ $|\mathbf{r}-\mathbf{r}'|/c$ 후에 λ„λ‹¬ν•œλ‹€.

import numpy as np
import matplotlib.pyplot as plt

# --- 열방정식 κ·Έλ¦° ν•¨μˆ˜ μ‹œκ°ν™” ---
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(14, 5))

alpha2 = 0.01
x = np.linspace(-2, 2, 1000)
xp = 0.0  # μ†ŒμŠ€ μœ„μΉ˜

for t_val in [0.01, 0.05, 0.1, 0.5, 1.0, 2.0]:
    G_heat = np.exp(-(x - xp)**2 / (4 * alpha2 * t_val)) / np.sqrt(4 * np.pi * alpha2 * t_val)
    ax1.plot(x, G_heat, linewidth=2, label=f'$t = {t_val}$')

ax1.set_xlabel('$x$'); ax1.set_ylabel("$G(x, t; 0, 0)$")
ax1.set_title('열방정식 κ·Έλ¦° ν•¨μˆ˜ (1D)')
ax1.legend(); ax1.grid(True, alpha=0.3)

# --- 2D 푸아솑 방정식 κ·Έλ¦° ν•¨μˆ˜ μ‹œκ°ν™” ---
x2d = np.linspace(-2, 2, 300)
y2d = np.linspace(-2, 2, 300)
X, Y = np.meshgrid(x2d, y2d)

# 점 μ†ŒμŠ€ μœ„μΉ˜
xp2, yp2 = 0.5, 0.3
R = np.sqrt((X - xp2)**2 + (Y - yp2)**2)
R = np.maximum(R, 0.01)  # 특이점 λ°©μ§€
G_2d = np.log(R) / (2 * np.pi)

c = ax2.contourf(X, Y, G_2d, levels=30, cmap='RdBu_r')
ax2.plot(xp2, yp2, 'k*', markersize=15, label="μ†ŒμŠ€ μœ„μΉ˜ $(x', y')$")
plt.colorbar(c, ax=ax2)
ax2.set_xlabel('$x$'); ax2.set_ylabel('$y$')
ax2.set_title("2D 푸아솑 κ·Έλ¦° ν•¨μˆ˜ $G = \\frac{1}{2\\pi}\\ln r$")
ax2.legend(); ax2.set_aspect('equal')

plt.suptitle('νŽΈλ―ΈλΆ„λ°©μ •μ‹μ˜ κ·Έλ¦° ν•¨μˆ˜', fontsize=14, fontweight='bold')
plt.tight_layout(); plt.show()

7. 물리적 μ‘μš©

7.1 μ •μ „κΈ°ν•™: μ „ν•˜ λΆ„ν¬μ˜ μ „μœ„

μ „ν•˜ 밀도 $\rho(\mathbf{r})$κ°€ μ£Όμ–΄μ§€λ©΄ μ „μœ„λŠ”:

$$\phi(\mathbf{r}) = \frac{1}{4\pi\epsilon_0} \int \frac{\rho(\mathbf{r}')}{|\mathbf{r} - \mathbf{r}'|} d^3r'$$

이것은 μ •ν™•νžˆ $\nabla^2\phi = -\rho/\epsilon_0$의 κ·Έλ¦° ν•¨μˆ˜ 해이닀.

7.2 μ–‘μžμ—­ν•™: μ „νŒŒν•¨μˆ˜

μ‹œκ°„ 의쑴 μŠˆλ’°λ”©κ±° λ°©μ •μ‹μ˜ κ·Έλ¦° ν•¨μˆ˜κ°€ λ°”λ‘œ μ „νŒŒν•¨μˆ˜(propagator) $K(\mathbf{r}, t; \mathbf{r}', t')$이닀:

$$\psi(\mathbf{r}, t) = \int K(\mathbf{r}, t; \mathbf{r}', t_0) \psi(\mathbf{r}', t_0) \, d^3r'$$

자유 μž…μžμ˜ μ „νŒŒν•¨μˆ˜: $K = \left(\frac{m}{2\pi i\hbar(t-t')}\right)^{3/2} \exp\left(\frac{im|\mathbf{r}-\mathbf{r}'|^2}{2\hbar(t-t')}\right)$

7.3 음ν–₯ν•™: μ μŒμ›μ˜ 방사

음파 방정식 $\nabla^2 p - \frac{1}{c^2}\ddot{p} = -S(\mathbf{r}, t)$μ—μ„œ λ‹¨μƒ‰νŒŒ μ μŒμ› $S = \delta^3(\mathbf{r})e^{-i\omega t}$의 μŒμ••:

$$p(\mathbf{r}) = -\frac{e^{ikr}}{4\pi r} \quad (k = \omega/c)$$

이것이 ꡬ면파(spherical wave)이닀.

import numpy as np
import matplotlib.pyplot as plt

# === μ •μ „κΈ°ν•™ μ‘μš©: 2D μ „ν•˜ λΆ„ν¬μ˜ μ „μœ„ ===
fig, axes = plt.subplots(1, 3, figsize=(16, 5))

x = np.linspace(-3, 3, 300)
y = np.linspace(-3, 3, 300)
X, Y = np.meshgrid(x, y)

# (a) μ μ „ν•˜
q1, x1, y1 = 1.0, 0.0, 0.0
R1 = np.sqrt((X - x1)**2 + (Y - y1)**2)
phi_point = q1 / (2 * np.pi * np.maximum(R1, 0.05))

axes[0].contourf(X, Y, phi_point, levels=30, cmap='hot_r')
axes[0].plot(x1, y1, 'k+', markersize=15, markeredgewidth=3)
axes[0].set_title('(a) μ μ „ν•˜ $+q$'); axes[0].set_aspect('equal')

# (b) 쌍극자 (dipole)
q2, d = 1.0, 0.5
R_plus = np.sqrt((X - d)**2 + Y**2)
R_minus = np.sqrt((X + d)**2 + Y**2)
phi_dipole = q2 / (2*np.pi*np.maximum(R_plus, 0.05)) - q2 / (2*np.pi*np.maximum(R_minus, 0.05))

axes[1].contourf(X, Y, phi_dipole, levels=np.linspace(-3, 3, 31), cmap='RdBu_r')
axes[1].plot(d, 0, 'r+', markersize=12, markeredgewidth=3)
axes[1].plot(-d, 0, 'b_', markersize=12, markeredgewidth=3)
axes[1].set_title('(b) μ „κΈ° 쌍극자 $+q, -q$'); axes[1].set_aspect('equal')

# (c) μ˜μƒλ²•: μ ‘μ§€λ©΄ 근처 μ μ „ν•˜
q3, d3 = 1.0, 1.0
R_real = np.sqrt(X**2 + (Y - d3)**2)
R_image = np.sqrt(X**2 + (Y + d3)**2)  # ν—ˆμƒ μ „ν•˜
phi_image = q3/(2*np.pi*np.maximum(R_real, 0.05)) - q3/(2*np.pi*np.maximum(R_image, 0.05))
phi_image[Y < 0] = 0  # μ ‘μ§€λ©΄ μ•„λž˜λŠ” 0

axes[2].contourf(X, Y, phi_image, levels=30, cmap='hot_r')
axes[2].axhline(0, color='green', linewidth=3, label='μ ‘μ§€λ©΄')
axes[2].plot(0, d3, 'k+', markersize=12, markeredgewidth=3)
axes[2].plot(0, -d3, 'kx', markersize=12, markeredgewidth=3, alpha=0.4)
axes[2].set_title('(c) μ˜μƒλ²•: μ ‘μ§€λ©΄ μœ„ μ μ „ν•˜')
axes[2].legend(); axes[2].set_aspect('equal')

plt.suptitle('μ •μ „κΈ°ν•™μ—μ„œμ˜ κ·Έλ¦° ν•¨μˆ˜ μ‘μš© (2D)', fontsize=14, fontweight='bold')
plt.tight_layout(); plt.show()

# μ „κΈ°μž₯ 벑터 (쌍극자)
fig, ax = plt.subplots(figsize=(8, 6))
Ex = q2*(X-d)/(2*np.pi*np.maximum(R_plus,0.05)**2) - q2*(X+d)/(2*np.pi*np.maximum(R_minus,0.05)**2)
Ey = q2*Y/(2*np.pi*np.maximum(R_plus,0.05)**2) - q2*Y/(2*np.pi*np.maximum(R_minus,0.05)**2)
E_mag = np.sqrt(Ex**2 + Ey**2)

ax.streamplot(X, Y, Ex, Ey, color=np.log10(E_mag+1e-3), cmap='inferno',
              density=2, linewidth=1)
ax.plot(d, 0, 'ro', markersize=10, label='$+q$')
ax.plot(-d, 0, 'bo', markersize=10, label='$-q$')
ax.set_title('μ „κΈ° 쌍극자의 μ „κΈ°μž₯μ„  (κ·Έλ¦° ν•¨μˆ˜ 쀑첩)')
ax.legend(); ax.set_aspect('equal'); ax.set_xlim(-3, 3); ax.set_ylim(-3, 3)
plt.tight_layout(); plt.show()

8. κ·Έλ¦° 정리와 적뢄 ν‘œν˜„

8.1 κ·Έλ¦° 항등식

κ·Έλ¦° 제1 항등식: $u$, $v$κ°€ μ˜μ—­ $\Omega$μ—μ„œ μΆ©λΆ„νžˆ λ§€λ„λŸ¬μš°λ©΄:

$$\int_\Omega (u \nabla^2 v + \nabla u \cdot \nabla v) \, dV = \oint_{\partial\Omega} u \frac{\partial v}{\partial n} \, dS$$

κ·Έλ¦° 제2 항등식 (λŒ€μΉ­ ν˜•νƒœ):

$$\int_\Omega (u \nabla^2 v - v \nabla^2 u) \, dV = \oint_{\partial\Omega} \left(u \frac{\partial v}{\partial n} - v \frac{\partial u}{\partial n}\right) dS$$

8.2 적뢄 ν‘œν˜„

κ·Έλ¦° 제2 ν•­λ“±μ‹μ—μ„œ $v = G$둜 λ†“μœΌλ©΄ ($\nabla^2 G = \delta^3(\mathbf{r} - \mathbf{r}')$):

$$u(\mathbf{r}) = \int_\Omega G(\mathbf{r}, \mathbf{r}') f(\mathbf{r}') \, dV' + \oint_{\partial\Omega} \left(G \frac{\partial u}{\partial n'} - u \frac{\partial G}{\partial n'}\right) dS'$$

λ””λ¦¬ν΄λ ˆ 경계 쑰건 ($u = h$ on $\partial\Omega$): $G = 0$ on $\partial\Omega$으둜 μ„ νƒν•˜λ©΄:

$$u(\mathbf{r}) = \int_\Omega G f \, dV' - \oint_{\partial\Omega} h \frac{\partial G}{\partial n'} dS'$$

λ…Έμ΄λ§Œ 경계 쑰건 ($\partial u/\partial n = g$ on $\partial\Omega$): $\partial G/\partial n' = -1/|\partial\Omega|$ (μƒμˆ˜)둜 선택.

import numpy as np
import matplotlib.pyplot as plt

# κ·Έλ¦° ν•­λ“±μ‹μ˜ 수치 검증 (1D 버전)
# integral_0^1 (u v'' + u'v') dx = [u v']_0^1
# u(x) = sin(pi*x), v(x) = x^2

x = np.linspace(0, 1, 10000)

u = np.sin(np.pi * x)
u_prime = np.pi * np.cos(np.pi * x)
v = x**2
v_prime = 2 * x
v_double_prime = 2 * np.ones_like(x)

# μ’Œλ³€
lhs = np.trapz(u * v_double_prime + u_prime * v_prime, x)

# μš°λ³€: [u v']_0^1 = u(1)v'(1) - u(0)v'(0)
rhs = u[-1] * v_prime[-1] - u[0] * v_prime[0]

print("=== κ·Έλ¦° 제1 항등식 수치 검증 (1D) ===")
print(f"u(x) = sin(pi*x), v(x) = x^2")
print(f"μ’Œλ³€: integral(u v'' + u'v') dx = {lhs:.8f}")
print(f"μš°λ³€: [u v']_0^1               = {rhs:.8f}")
print(f"차이: {abs(lhs - rhs):.2e}")

# κ·Έλ¦° 제2 항등식
u_dbl_prime = -np.pi**2 * np.sin(np.pi * x)

lhs2 = np.trapz(u * v_double_prime - v * u_dbl_prime, x)
rhs2 = (u[-1]*v_prime[-1] - v[-1]*u_prime[-1]) - (u[0]*v_prime[0] - v[0]*u_prime[0])

print("\n=== κ·Έλ¦° 제2 항등식 수치 검증 (1D) ===")
print(f"μ’Œλ³€: integral(u v'' - v u'') dx = {lhs2:.8f}")
print(f"μš°λ³€: [uv' - vu']_0^1           = {rhs2:.8f}")
print(f"차이: {abs(lhs2 - rhs2):.2e}")

# κ·Έλ¦° ν•¨μˆ˜λ₯Ό μ΄μš©ν•œ 적뢄 ν‘œν˜„ 검증
# 문제: u'' = f(x), u(0) = u(1) = 0, f(x) = -pi^2 sin(pi*x)
# μ •ν™•ν•œ ν•΄: u(x) = sin(pi*x)
print("\n=== 적뢄 ν‘œν˜„ 검증 ===")
f_rhs = -np.pi**2 * np.sin(np.pi * x)
u_green = np.array([np.trapz(np.where(x < xi, x*(1-xi), xi*(1-x)) * f_rhs, x)
                     for xi in x])
u_exact = np.sin(np.pi * x)

print(f"μ΅œλŒ€ 였차 |u_Green - u_exact| = {np.max(np.abs(u_green - u_exact)):.6e}")

μ—°μŠ΅ 문제

기본 문제

문제 1. λ‹€μŒ λ””λž™ 델타 ν•¨μˆ˜ 적뢄을 κ³„μ‚°ν•˜λΌ.

(a) $\int_{-\infty}^{\infty} (x^3 + 2x + 1)\delta(x - 2) \, dx$

(b) $\int_0^5 e^{-x}\delta(x - 3) \, dx$

(c) $\int_{-\infty}^{\infty} \cos(x)\delta'(x) \, dx$

문제 2. $\delta(x^2 - a^2) = \frac{1}{2|a|}[\delta(x-a) + \delta(x+a)]$ ($a > 0$)μž„μ„ 보이고, $\int_{-\infty}^{\infty} e^{x}\delta(x^2 - 4)\,dx$λ₯Ό κ³„μ‚°ν•˜λΌ.

문제 3. $y'' = f(x)$, $y(0) = y(L) = 0$의 κ·Έλ¦° ν•¨μˆ˜λ₯Ό 직접 κ΅¬μ„±ν•˜κ³ , $G(x, x') = G(x', x)$λ₯Ό ν™•μΈν•˜λΌ.

문제 4. $y'' + y = f(x)$, $y(0) = y(\pi/2) = 0$의 κ·Έλ¦° ν•¨μˆ˜λ₯Ό κ΅¬ν•˜λΌ. (힌트: μ œμ°¨ν•΄ $\sin x$, $\cos x$ 이용)

심화 문제

문제 5. $y'' = f(x)$, $y(0) = y(\pi) = 0$의 κ·Έλ¦° ν•¨μˆ˜λ₯Ό κ³ μœ ν•¨μˆ˜ μ „κ°œλ‘œ κ΅¬ν•˜κ³ , λ‹«νžŒ ν˜•νƒœ $G(x,x') = \frac{1}{\pi}[x(\pi-x') \text{ or } x'(\pi-x)]$κ³Ό λΉ„κ΅ν•˜μ—¬ λ‹€μŒ κΈ‰μˆ˜λ₯Ό μœ λ„ν•˜λΌ:

$$\sum_{n=1}^{\infty} \frac{\sin(nx)\sin(nx')}{n^2} = \frac{\pi}{2} \begin{cases} x(1-x'/\pi) & x < x' \\ x'(1-x/\pi) & x > x' \end{cases}$$

문제 6. μ˜μƒλ²•μ„ μ΄μš©ν•˜μ—¬ $y > 0$ λ°˜ν‰λ©΄μ—μ„œ $\nabla^2 G = \delta^2(\mathbf{r} - \mathbf{r}')$, $G(x, 0) = 0$ (λ””λ¦¬ν΄λ ˆ)인 κ·Έλ¦° ν•¨μˆ˜λ₯Ό κ΅¬ν•˜λΌ.

문제 7. 1차원 열방정식 κ·Έλ¦° ν•¨μˆ˜ $G(x, t; 0, 0) = \frac{1}{\sqrt{4\pi\alpha^2 t}}e^{-x^2/(4\alpha^2 t)}$κ°€ λ‹€μŒμ„ λ§Œμ‘±ν•¨μ„ 보여라:

(a) $\partial_t G = \alpha^2 \partial_{xx} G$ ($t > 0$)

(b) $\int_{-\infty}^{\infty} G \, dx = 1$ (λͺ¨λ“  $t > 0$)

(c) $\lim_{t \to 0^+} G(x, t; 0, 0) = \delta(x)$

문제 8. 감쇠 μ‘°ν™” μ§„λ™μž $\ddot{x} + 2\gamma\dot{x} + \omega_0^2 x = \delta(t)$에 λŒ€ν•΄ $\gamma > \omega_0$ (과감쇠), $\gamma = \omega_0$ (μž„κ³„ 감쇠), $\gamma < \omega_0$ (λ―Έμ†Œ 감쇠) μ„Έ 경우의 κ·Έλ¦° ν•¨μˆ˜λ₯Ό 각각 κ΅¬ν•˜λΌ.

문제 9. λ‹€μŒ 2차원 푸아솑 방정식을 풀어라: $$\nabla^2 \phi = -\delta(\mathbf{r} - \mathbf{r}_1) + \delta(\mathbf{r} - \mathbf{r}_2)$$ $\mathbf{r}_1 = (1, 0)$, $\mathbf{r}_2 = (-1, 0)$. μ „μœ„ $\phi$와 μ „κΈ°μž₯ $\mathbf{E} = -\nabla\phi$λ₯Ό μ‹œκ°ν™”ν•˜λΌ.

문제 10. κ·Έλ¦° 제2 항등식을 μ΄μš©ν•˜μ—¬ $G(x, x') = G(x', x)$ (자기수반 μ—°μ‚°μžμ˜ κ·Έλ¦° ν•¨μˆ˜ λŒ€μΉ­μ„±)λ₯Ό 증λͺ…ν•˜λΌ.


심화 ν•™μŠ΅

닀이아딕 κ·Έλ¦° ν•¨μˆ˜ (Dyadic Green's Functions)

μŠ€μΉΌλΌκ°€ μ•„λ‹Œ 벑터μž₯의 λΉ„μ œμ°¨ 문제(예: λ§₯μŠ€μ›° 방정식)μ—μ„œλŠ” κ·Έλ¦° ν•¨μˆ˜κ°€ ν…μ„œ(닀이아딕) ν˜•νƒœκ°€ λœλ‹€:

$$\mathbf{E}(\mathbf{r}) = \int \overleftrightarrow{G}(\mathbf{r}, \mathbf{r}') \cdot \mathbf{J}(\mathbf{r}') \, d^3r'$$

주파수 μ˜μ—­μ˜ κ·Έλ¦° ν•¨μˆ˜

μ‹œκ°„ 의쑴 λ¬Έμ œμ—μ„œ 푸리에 λ³€ν™˜μ„ μ·¨ν•˜λ©΄:

$$G(\mathbf{r}, \mathbf{r}'; \omega) = \int_{-\infty}^{\infty} G(\mathbf{r}, t; \mathbf{r}', t') e^{i\omega(t-t')} d(t-t')$$

헬름홀츠 λ°©μ •μ‹μ˜ κ·Έλ¦° ν•¨μˆ˜: $(\nabla^2 + k^2)G = \delta^3(\mathbf{r} - \mathbf{r}')$ $\rightarrow$ $G = -\frac{e^{ik|\mathbf{r}-\mathbf{r}'|}}{4\pi|\mathbf{r}-\mathbf{r}'|}$

수치적 κ·Έλ¦° ν•¨μˆ˜μ™€ κ²½κ³„μš”μ†Œλ²• (BEM)

ν•΄μ„μ μœΌλ‘œ κ·Έλ¦° ν•¨μˆ˜λ₯Ό κ΅¬ν•˜κΈ° μ–΄λ €μš΄ λ³΅μž‘ν•œ κΈ°ν•˜ν•™μ—μ„œλŠ” κ²½κ³„μš”μ†Œλ²•(Boundary Element Method)을 μ‚¬μš©ν•œλ‹€. 자유 곡간 κ·Έλ¦° ν•¨μˆ˜λ₯Ό μ•Œλ©΄, 체적 적뢄 λŒ€μ‹  경계면 μ λΆ„λ§ŒμœΌλ‘œ ν•΄λ₯Ό ꡬ할 수 μžˆμ–΄ 차원이 ν•˜λ‚˜ μ€„μ–΄λ“œλŠ” μž₯점이 μžˆλ‹€.

참고 자료

  • Boas, M. L. Mathematical Methods in the Physical Sciences, 3rd Ed., Ch. 13
  • Arfken, Weber, Harris. Mathematical Methods for Physicists, 7th Ed., Ch. 10
  • Jackson, J. D. Classical Electrodynamics, 3rd Ed., Ch. 1-2 (μ •μ „κΈ°ν•™ κ·Έλ¦° ν•¨μˆ˜)
  • Stakgold, I., Holst, M. Green's Functions and Boundary Value Problems, 3rd Ed. (2011)
  • Duffy, D. G. Green's Functions with Applications, 2nd Ed. (2015)

이전: 15. λΌν”ŒλΌμŠ€ λ³€ν™˜ λ‹€μŒ: 17. 변뢄법

to navigate between lessons