14. ๋ณต์ํด์ (Complex Analysis)
14. ๋ณต์ํด์ (Complex Analysis)¶
ํ์ต ๋ชฉํ¶
- ๋ณต์ํจ์์ ๋ฏธ๋ถ ๊ฐ๋ฅ์ฑ๊ณผ ์ฝ์-๋ฆฌ๋ง ์กฐ๊ฑด์ ์ดํดํ๋ค
- ์ฝ์ ์ ๋ถ ์ ๋ฆฌ์ ์ ๋ถ ๊ณต์์ ํ์ฉํ์ฌ ๋ณต์ ์ ๋ถ์ ๊ณ์ฐํ๋ค
- ํ ์ผ๋ฌ ๊ธ์์ ๋ก๋ ๊ธ์๋ฅผ ํตํด ๋ณต์ํจ์๋ฅผ ๊ธ์๋ก ์ ๊ฐํ๋ค
- ์ ์ ์ ๋ฆฌ๋ฅผ ์ด์ฉํ์ฌ ์ค์ ์ ๋ถ ๋ฌธ์ ๋ฅผ ํจ์จ์ ์ผ๋ก ํ ์ ์๋ค
- ๋ฑ๊ฐ์ฌ์์ ๊ฐ๋ ์ ์ดํดํ๊ณ ๋ฌผ๋ฆฌํ ๋ฌธ์ ์ ์ ์ฉํ๋ค
๋ฌผ๋ฆฌํ์์์ ์ค์์ฑ: ๋ณต์ํด์์ ์์์ญํ์ ์ ํํจ์, ์ ๊ธฐ์ญํ์ ์ ์๋ก , ์ ์ฒด์ญํ์ ํ๋ฆ ํจ์, ์ ํธ์ฒ๋ฆฌ์ ์ฃผํ์ ๋ถ์ ๋ฑ ๋ฌผ๋ฆฌํ ์ ๋ฐ์ ๊ฑธ์ณ ํต์ฌ ๋๊ตฌ์ด๋ค. ํนํ ์ ์ ์ ๋ฆฌ๋ฅผ ํตํ ์ ๋ถ ๊ณ์ฐ์ ์ด๋ก ๋ฌผ๋ฆฌํ์์ ๊ฐ์ฅ ๋น๋ฒํ๊ฒ ํ์ฉ๋๋ ๊ธฐ๋ฒ ์ค ํ๋์ด๋ค.
1. ํด์ํจ์ (Analytic Functions)¶
1.1 ๋ณต์ ๋ฏธ๋ถ๊ณผ ์ฝ์-๋ฆฌ๋ง ์กฐ๊ฑด¶
๋ณต์ํจ์ $f(z) = u(x, y) + iv(x, y)$๊ฐ ์ $z_0$์์ ๋ฏธ๋ถ ๊ฐ๋ฅํ๋ ค๋ฉด, ๊ทนํ
$$f'(z_0) = \lim_{\Delta z \to 0} \frac{f(z_0 + \Delta z) - f(z_0)}{\Delta z}$$
์ด $\Delta z$๊ฐ ์ด๋ค ๋ฐฉํฅ์์ ์ ๊ทผํ๋ ๊ฐ์ ๊ฐ์ผ๋ก ์๋ ดํด์ผ ํ๋ค. ์ด๋ก๋ถํฐ ์ฝ์-๋ฆฌ๋ง ๋ฐฉ์ ์์ด ๋์ถ๋๋ค:
$$\frac{\partial u}{\partial x} = \frac{\partial v}{\partial y}, \quad \frac{\partial u}{\partial y} = -\frac{\partial v}{\partial x}$$
ํ ์์ญ์ ๋ชจ๋ ์ ์์ ๋ฏธ๋ถ ๊ฐ๋ฅํ ํจ์๋ฅผ ๊ทธ ์์ญ์์ ํด์์ (analytic)์ด๋ผ ํ๋ค.
๊ทน์ขํ ํํ ($z = re^{i\theta}$):
$$\frac{\partial u}{\partial r} = \frac{1}{r}\frac{\partial v}{\partial \theta}, \quad \frac{1}{r}\frac{\partial u}{\partial \theta} = -\frac{\partial v}{\partial r}$$
import numpy as np
import matplotlib.pyplot as plt
def check_cauchy_riemann(u_func, v_func, x, y, h=1e-7):
"""์ฝ์-๋ฆฌ๋ง ์กฐ๊ฑด์ ์์น์ ์ผ๋ก ๊ฒ์ฆ"""
du_dx = (u_func(x + h, y) - u_func(x - h, y)) / (2 * h)
du_dy = (u_func(x, y + h) - u_func(x, y - h)) / (2 * h)
dv_dx = (v_func(x + h, y) - v_func(x - h, y)) / (2 * h)
dv_dy = (v_func(x, y + h) - v_func(x, y - h)) / (2 * h)
cond1 = np.abs(du_dx - dv_dy) # โu/โx = โv/โy
cond2 = np.abs(du_dy + dv_dx) # โu/โy = -โv/โx
print(f"์ ({x}, {y}): |โu/โx - โv/โy| = {cond1:.2e}, "
f"|โu/โy + โv/โx| = {cond2:.2e}")
return cond1 < 1e-5 and cond2 < 1e-5
# f(z) = zยฒ = (xยฒ - yยฒ) + i(2xy)
u = lambda x, y: x**2 - y**2
v = lambda x, y: 2 * x * y
print("=== f(z) = zยฒ ์ฝ์-๋ฆฌ๋ง ๊ฒ์ฆ ===")
for pt in [(1, 1), (2, -1), (0.5, 3)]:
analytic = check_cauchy_riemann(u, v, *pt)
print(f" ํด์์ : {analytic}")
1.2 ์กฐํํจ์ (Harmonic Functions)¶
ํด์ํจ์์ ์ค์๋ถ $u$์ ํ์๋ถ $v$๋ ๊ฐ๊ฐ ๋ผํ๋ผ์ค ๋ฐฉ์ ์์ ๋ง์กฑํ๋ค:
$$\nabla^2 u = \frac{\partial^2 u}{\partial x^2} + \frac{\partial^2 u}{\partial y^2} = 0, \quad \nabla^2 v = 0$$
์ด๋ฌํ ํจ์๋ฅผ ์กฐํํจ์(harmonic function)๋ผ ํ๋ฉฐ, $u$์ $v$๋ ์๋ก์ ์กฐํ ์ผค๋ ์ด๋ค.
๋ฌผ๋ฆฌ์ ์๋ฏธ: 2์ฐจ์ ์ ์ ๊ธฐํ์์ ์ ์ $\phi(x,y)$๋ ๋ผํ๋ผ์ค ๋ฐฉ์ ์์ ๋ง์กฑํ๋ฏ๋ก ์กฐํํจ์์ด๋ค. ํด์ํจ์์ ์ค์๋ถ๋ฅผ ์ ์๋ก, ํ์๋ถ๋ฅผ ์ ๊ธฐ๋ ฅ์ ํจ์๋ก ํด์ํ ์ ์๋ค.
import sympy as sp
x, y = sp.symbols('x y', real=True)
def is_harmonic(expr):
"""๋ผํ๋ผ์์์ด 0์ธ์ง ํ์ธ"""
lap = sp.simplify(sp.diff(expr, x, 2) + sp.diff(expr, y, 2))
return lap, lap == 0
# f(z) = zยณ์ ์ค์๋ถ/ํ์๋ถ
u_expr = x**3 - 3*x*y**2 # Re(zยณ)
v_expr = 3*x**2*y - y**3 # Im(zยณ)
for name, expr in [("Re(zยณ)", u_expr), ("Im(zยณ)", v_expr)]:
lap, harmonic = is_harmonic(expr)
print(f"{name} = {expr}: โยฒ = {lap}, ์กฐํํจ์: {harmonic}")
1.3 ํด์ ํจ์์ ์¶
๋ฌผ๋ฆฌํ์์ ์์ฃผ ๋ฑ์ฅํ๋ ํด์ํจ์๋ค:
| ํจ์ | ์ค์๋ถ $u$ | ํ์๋ถ $v$ | ๋ฌผ๋ฆฌ์ ์์ฉ |
|---|---|---|---|
| $e^z$ | $e^x \cos y$ | $e^x \sin y$ | ํ๋, ๊ฐ์ |
| $\ln z$ | $\ln r$ | $\theta$ | ์ ์ ํ ์ ์ |
| $z^n$ | $r^n \cos n\theta$ | $r^n \sin n\theta$ | ๋ค๊ทน์ ์ ๊ฐ |
| $1/z$ | $x/(x^2+y^2)$ | $-y/(x^2+y^2)$ | ์ ์ ํ, ์์ค/์ฑํฌ |
from matplotlib.colors import hsv_to_rgb
def domain_coloring(f, xlim=(-2, 2), ylim=(-2, 2), N=500):
"""๋ณต์ํจ์์ ๋๋ฉ์ธ ์ปฌ๋ฌ๋ง ์๊ฐํ (์์โ์์, ํฌ๊ธฐโ๋ช
๋)"""
xv = np.linspace(*xlim, N)
yv = np.linspace(*ylim, N)
X, Y = np.meshgrid(xv, yv)
Z = X + 1j * Y
with np.errstate(divide='ignore', invalid='ignore'):
W = f(Z)
H = (np.angle(W) + np.pi) / (2 * np.pi)
V = 1 - 1 / (1 + np.abs(W)**0.3)
HSV = np.stack([H, np.ones_like(H), V], axis=-1)
fig, ax = plt.subplots(figsize=(6, 6))
ax.imshow(hsv_to_rgb(HSV), extent=[*xlim, *ylim], origin='lower')
ax.set_xlabel('Re(z)'); ax.set_ylabel('Im(z)')
plt.tight_layout(); plt.show()
# domain_coloring(lambda z: z**3) # zยณ์ ๋๋ฉ์ธ ์ปฌ๋ฌ๋ง
# domain_coloring(lambda z: np.exp(z)) # e^z์ ๋๋ฉ์ธ ์ปฌ๋ฌ๋ง
2. ๋ณต์ ์ ๋ถ¶
2.1 ๊ฒฝ๋ก ์ ๋ถ (Contour Integrals)¶
๊ฒฝ๋ก $C$๋ฅผ ๋ฐ๋ผ ๋ณต์ํจ์๋ฅผ ์ ๋ถํ๋ ๊ฒ์ ๊ฒฝ๋ก ์ ๋ถ์ด๋ผ ํ๋ค:
$$\oint_C f(z)\, dz = \int_a^b f(z(t))\, z'(t)\, dt$$
ํต์ฌ ๊ฒฐ๊ณผ: $|z - z_0| = r$ ์์ ๋ฐ์๊ณ ๋ฐฉํฅ ์ ๋ถ์ ๋ํด:
$$\oint \frac{dz}{(z - z_0)^n} = \begin{cases} 2\pi i & n = 1 \\ 0 & n \neq 1 \end{cases}$$
def contour_integral_circle(f, z0=0, r=1, N=10000):
"""์ํ ๊ฒฝ๋ก |z-z0|=r ์์์์ ๊ฒฝ๋ก ์ ๋ถ (์์น ๊ณ์ฐ)"""
t = np.linspace(0, 2*np.pi, N, endpoint=False)
dt = 2*np.pi / N
z = z0 + r * np.exp(1j * t)
dz_dt = 1j * r * np.exp(1j * t)
return np.sum(f(z) * dz_dt) * dt
# โฎ 1/z dz = 2ฯi
I1 = contour_integral_circle(lambda z: 1/z)
print(f"โฎ 1/z dz = {I1:.6f} (์ด๋ก ๊ฐ: {2*np.pi*1j:.6f})")
# โฎ 1/zยฒ dz = 0
I2 = contour_integral_circle(lambda z: 1/z**2)
print(f"โฎ 1/zยฒ dz = {I2:.6f} (์ด๋ก ๊ฐ: 0)")
# โฎ e^z/z dz = 2ฯi (์ฝ์ ๊ณต์: f(0)=eโฐ=1)
I3 = contour_integral_circle(lambda z: np.exp(z)/z)
print(f"โฎ e^z/z dz = {I3:.6f} (์ด๋ก ๊ฐ: {2*np.pi*1j:.6f})")
2.2 ์ฝ์ ์ ๋ถ ์ ๋ฆฌ (Cauchy's Theorem)¶
$f(z)$๊ฐ ๋จ์ ์ฐ๊ฒฐ ์์ญ $D$ ๋ด์์ ํด์์ ์ด๋ฉด, $D$ ์์ ์์์ ํ๊ณก์ $C$์ ๋ํด:
$$\oint_C f(z)\, dz = 0$$
๋ฌผ๋ฆฌ์ ์๋ฏธ: ๋ณด์กด๋ ฅ์ ์ํ์ด 0์ธ ๊ฒ๊ณผ ๋์น์ด๋ค. ํด์ํจ์์ ์ ๋ถ์ ๊ฒฝ๋ก์ ๋ฌด๊ดํ๋ค.
2.3 ์ฝ์ ์ ๋ถ ๊ณต์ (Cauchy's Formula)¶
$f(z)$๊ฐ $C$ ๋ด๋ถ์์ ํด์์ ์ด๊ณ $z_0$๊ฐ ๋ด๋ถ ์ ์ด๋ฉด:
$$f(z_0) = \frac{1}{2\pi i} \oint_C \frac{f(z)}{z - z_0}\, dz$$
์ผ๋ฐํ (n์ฐจ ๋ํจ์):
$$f^{(n)}(z_0) = \frac{n!}{2\pi i} \oint_C \frac{f(z)}{(z - z_0)^{n+1}}\, dz$$
์ด ๊ณต์์ ํด์ํจ์๊ฐ ๋ฌดํ๋ฒ ๋ฏธ๋ถ ๊ฐ๋ฅํ๋ฉฐ, ๊ฒฝ๊ณ๊ฐ์ด ๋ด๋ถ๊ฐ์ ๊ฒฐ์ ํจ์ ์๋ฏธํ๋ค.
from math import factorial
def cauchy_derivative(f, z0, n=0, r=1, N=10000):
"""์ฝ์ ์ ๋ถ ๊ณต์์ผ๋ก f^(n)(z0) ๊ณ์ฐ"""
t = np.linspace(0, 2*np.pi, N, endpoint=False)
dt = 2*np.pi / N
z = z0 + r * np.exp(1j * t)
dz_dt = 1j * r * np.exp(1j * t)
integrand = f(z) / (z - z0)**(n + 1) * dz_dt
return np.sum(integrand) * dt * factorial(n) / (2*np.pi*1j)
# ๊ฒ์ฆ: f(z) = sin(z)
f = lambda z: np.sin(z)
print("์ฝ์ ๊ณต์ ๊ฒ์ฆ: f(z) = sin(z)")
print(f" f(0) = {cauchy_derivative(f, 0, 0):.6f} (์ ํ๊ฐ: 0)")
print(f" f'(0) = {cauchy_derivative(f, 0, 1):.6f} (์ ํ๊ฐ: 1)")
print(f" f''(0) = {cauchy_derivative(f, 0, 2):.6f} (์ ํ๊ฐ: 0)")
print(f" f'''(0)= {cauchy_derivative(f, 0, 3):.6f} (์ ํ๊ฐ: -1)")
3. ๊ธ์ ์ ๊ฐ¶
3.1 ํ ์ผ๋ฌ ๊ธ์¶
$f(z)$๊ฐ $z_0$ ์ค์ฌ ๋ฐ์ง๋ฆ $R$์ธ ์ ๋ด์์ ํด์์ ์ด๋ฉด:
$$f(z) = \sum_{n=0}^{\infty} a_n (z - z_0)^n, \quad a_n = \frac{f^{(n)}(z_0)}{n!}$$
์๋ ด ๋ฐ์ง๋ฆ $R$์ $z_0$์์ ๊ฐ์ฅ ๊ฐ๊น์ด ํน์ด์ ๊น์ง์ ๊ฑฐ๋ฆฌ์ด๋ค.
์: $f(z) = 1/(1+z^2)$์ $z=0$ ์ฃผ์ ํ ์ผ๋ฌ ๊ธ์ ์๋ ด ๋ฐ์ง๋ฆ์ $R=1$์ด๋ค. $z = \pm i$์ ๊ทน์ ์ด ์๊ธฐ ๋๋ฌธ์ด๋ค. ์ค์์ถ์์๋ ํน์ด์ฑ์ด ์์ง๋ง, ๋ณต์ํ๋ฉด์ ํน์ด์ ์ด ์๋ ด ๋ฐ์ง๋ฆ์ ๊ฒฐ์ ํ๋ค.
3.2 ๋ก๋ ๊ธ์ (Laurent Series)¶
$f(z)$๊ฐ ๊ณ ๋ฆฌํ ์์ญ $r < |z - z_0| < R$์์ ํด์์ ์ด๋ฉด:
$$f(z) = \sum_{n=-\infty}^{\infty} a_n (z - z_0)^n$$
$n < 0$์ธ ํญ๋ค์ ์ฃผ๋ถ(principal part), ํนํ $a_{-1}$์ ์ ์(residue)๋ผ ํ๋ค.
z = sp.Symbol('z')
# ๋ก๋ ๊ธ์: e^z / zยณ (z=0 ์ฃผ์)
f1 = sp.exp(z) / z**3
print("e^z/zยณ ์ ๋ก๋ ๊ธ์:")
print(f" {sp.series(f1, z, 0, n=5)}")
print(f" ์ ์ (zโปยน ๊ณ์) = 1/2\n")
# ๋ก๋ ๊ธ์: 1/(z(z-1)) (z=0 ์ฃผ์)
f2 = 1 / (z * (z - 1))
print("1/(z(z-1)) ์ ๋ก๋ ๊ธ์ (z=0 ์ฃผ์):")
print(f" {sp.series(f2, z, 0, n=4)}")
# z=1 ์ฃผ์
w = sp.Symbol('w')
print("\n1/(z(z-1)) ์ ๋ก๋ ๊ธ์ (z=1 ์ฃผ์, w=z-1):")
print(f" {sp.series(f2.subs(z, w+1), w, 0, n=4)}")
3.3 ํน์ด์ ์ ๋ถ๋ฅ (์ ๊ฑฐ๊ฐ๋ฅ, ๊ทน์ , ๋ณธ์ง์ )¶
| ์ข ๋ฅ | ์ฃผ๋ถ์ ํญ ์ | ์์ | $\lim_{z \to z_0} f(z)$ |
|---|---|---|---|
| ์ ๊ฑฐ๊ฐ๋ฅ ํน์ด์ | 0๊ฐ | $\sin z / z$ at $z=0$ | ์ ํ๊ฐ |
| $m$์ฐจ ๊ทน์ | $m$๊ฐ | $1/z^m$ at $z=0$ | $\infty$ |
| ๋ณธ์ง์ ํน์ด์ | ๋ฌดํ๊ฐ | $e^{1/z}$ at $z=0$ | ์กด์ฌ ์ ํจ |
์นด์๋ผํฐ-๋ฐ์ด์ด์ํธ๋ผ์ค ์ ๋ฆฌ: ๋ณธ์ง์ ํน์ด์ ๊ทผ๋ฐฉ์์ ํจ์๋ ๊ฑฐ์ ๋ชจ๋ ๋ณต์์ ๊ฐ์ ์ทจํ๋ค.
# ํน์ด์ ๋ถ๋ฅ ํ์ธ
cases = [
("sin(z)/z (z=0, ์ ๊ฑฐ๊ฐ๋ฅ)", sp.sin(z)/z, z, 0),
("1/(z-1)ยณ (z=1, 3์ฐจ ๊ทน์ )", 1/(z-1)**3, z, 1),
("exp(1/z) (z=0, ๋ณธ์ง์ )", sp.exp(1/z), z, 0),
]
for name, expr, var, pt in cases:
if pt != 0:
w = sp.Symbol('w')
s = sp.series(expr.subs(var, w + pt), w, 0, n=5)
else:
s = sp.series(expr, var, 0, n=5)
print(f"{name}:\n {s}\n")
4. ์ ์ ์ ๋ฆฌ (Residue Theorem)¶
4.1 ์ ์์ ์ ์์ ๊ณ์ฐ¶
์ $z_0$์์ $f(z)$์ ์ ์๋ ๋ก๋ ๊ธ์์ $a_{-1}$ ๊ณ์์ด๋ค:
$$\text{Res}_{z=z_0} f(z) = \frac{1}{2\pi i} \oint_C f(z)\, dz$$
์ ์ ๊ณ์ฐ๋ฒ:
- ๋จ์ ๊ทน์ : $\text{Res}_{z=z_0} f = \lim_{z \to z_0} (z - z_0) f(z)$
- $m$์ฐจ ๊ทน์ : $\text{Res}_{z=z_0} f = \frac{1}{(m-1)!} \lim_{z \to z_0} \frac{d^{m-1}}{dz^{m-1}} [(z - z_0)^m f(z)]$
- $p/q$ ํํ (๋จ์ ๊ทน์ ): $\text{Res}_{z=z_0} \frac{p}{q} = \frac{p(z_0)}{q'(z_0)}$
z = sp.Symbol('z')
examples = [
("1/(zยฒ+1)", 1/(z**2+1), sp.I),
("1/(zยฒ+1)", 1/(z**2+1), -sp.I),
("e^z/zยฒ", sp.exp(z)/z**2, 0),
("z/(zยฒ-3z+2)", z/(z**2-3*z+2), 1),
("z/(zยฒ-3z+2)", z/(z**2-3*z+2), 2),
]
print("=== ์ ์ ๊ณ์ฐ ===")
for name, expr, z0 in examples:
print(f"Res[{name}, z={z0}] = {sp.residue(expr, z, z0)}")
4.2 ์ ์ ์ ๋ฆฌ¶
$f(z)$๊ฐ ํ๊ณก์ $C$ ๋ด๋ถ์์ ์ ํ ๊ฐ์ ํน์ด์ $z_1, \ldots, z_n$์ ์ ์ธํ๊ณ ํด์์ ์ด๋ฉด:
$$\oint_C f(z)\, dz = 2\pi i \sum_{k=1}^{n} \text{Res}_{z=z_k} f(z)$$
4.3 ์กฐ๋ฅด๋น ๋ณด์กฐ์ ๋ฆฌ (Jordan's Lemma)¶
์ ์ ์ ๋ฆฌ๋ก ์ค์ ์ ๋ถ์ ๊ณ์ฐํ ๋, ๋ฌดํ ๋ฐ์ ๊ฒฝ๋ก์ ๊ธฐ์ฌ๊ฐ 0์ธ์ง ํ์ธํด์ผ ํ๋ค. ์กฐ๋ฅด๋น ๋ณด์กฐ์ ๋ฆฌ๋ ์ด๋ฅผ ๋ณด์ฅํ๋ค.
์ ๋ฆฌ: $f(z) \to 0$ uniformly as $|z| \to \infty$ (์๋ฐ๋ฉด)์ด๋ฉด, $a > 0$์ ๋ํด:
$$\lim_{R \to \infty} \int_{C_R} f(z) e^{iaz}\, dz = 0$$
์ฌ๊ธฐ์ $C_R$์ ์๋ฐ๋ฉด์ ๋ฐ์ง๋ฆ $R$์ธ ๋ฐ์์ด๋ค. ํต์ฌ์ $e^{iaz} = e^{ia(x+iy)} = e^{iax}e^{-ay}$์ด๋ฏ๋ก, ์๋ฐ๋ฉด($y > 0$)์์ $e^{-ay}$๊ฐ ์ง์์ ์ผ๋ก ๊ฐ์ํ๋ค๋ ๊ฒ์ด๋ค.
์ฃผ์: $a < 0$์ด๋ฉด ํ๋ฐ๋ฉด ๋ฐ์์ ์ฌ์ฉํด์ผ ํ๋ฉฐ, ์ด ๊ฒฝ์ฐ ๊ฒฝ๋ก์ ๋ฐฉํฅ์ด ์๊ณ๋ฐฉํฅ์ด๋ฏ๋ก ์ ์์ $(-2\pi i)$๊ฐ ๊ณฑํด์ง๋ค.
4.4 ์ค์ ์ ๋ถ ๊ณ์ฐ์ 4๊ฐ์ง ์ ํ¶
์ ์ ์ ๋ฆฌ์ ๊ฐ์ฅ ์ค์ํ ์์ฉ์ ์ค์ ์ ๋ถ์ ๊ณ์ฐ์ด๋ค. ์ ๋ถ์ ํํ์ ๋ฐ๋ผ ์ฒด๊ณ์ ์ผ๋ก ๋ถ๋ฅํ๋ค.
์ ํ 1: ์ผ๊ฐํจ์ ์ ๋ฆฌ์ โ $\int_0^{2\pi} R(\cos\theta, \sin\theta)\, d\theta$¶
$z = e^{i\theta}$ ์นํ: $\cos\theta = (z + z^{-1})/2$, $\sin\theta = (z - z^{-1})/(2i)$, $d\theta = dz/(iz)$.
์ ๋ถ์ด ๋จ์์ $|z| = 1$ ์์ ๊ฒฝ๋ก ์ ๋ถ์ผ๋ก ๋ณํ๋๋ค. ๋จ์์ ๋ด๋ถ์ ๊ทน์ ์ ๋ํ ์ ์๋ง ๊ณ์ฐํ๋ค.
from scipy.integrate import quad
import sympy as sp
import numpy as np
z = sp.Symbol('z')
# --- ์ ํ 1: โซโยฒฯ dฮธ/(2 + cosฮธ) ---
print("=== ์ ํ 1: โซโยฒฯ dฮธ/(2 + cosฮธ) ===")
integrand1 = 2 / (sp.I * (z**2 + 4*z + 1))
inner_pole = -2 + sp.sqrt(3) # |z| < 1์ธ ๊ทน์
res1 = sp.residue(integrand1, z, inner_pole)
result1 = sp.simplify(2 * sp.pi * sp.I * res1)
print(f"์ ์ ์ ๋ฆฌ: {result1} = {float(result1):.6f}")
num1, _ = quad(lambda t: 1/(2 + np.cos(t)), 0, 2*np.pi)
print(f"์์น ๊ฒ์ฆ: {num1:.6f}\n")
์ ํ 2: ์ ๋ฆฌํจ์ โ $\int_{-\infty}^{\infty} \frac{P(x)}{Q(x)}\, dx$¶
์กฐ๊ฑด: $\deg(Q) \geq \deg(P) + 2$ (์ ๋ถ์ด ์๋ ด), $Q(x) \neq 0$ on ์ค์์ถ.
์๋ฐ๋ฉด ๋ฐ์ ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉ. $R \to \infty$์์ ๋ฐ์ ์์ ์ ๋ถ์ด 0์ด ๋๋ฏ๋ก ($f(z) \to 0$ sufficiently fast):
$$\int_{-\infty}^{\infty} \frac{P(x)}{Q(x)}\, dx = 2\pi i \sum_{\text{Im}(z_k) > 0} \text{Res}_{z=z_k} \frac{P(z)}{Q(z)}$$
# --- ์ ํ 2: โซโโ^โ dx/(xยฒ+1)ยฒ ---
print("=== ์ ํ 2: โซโโ^โ dx/(xยฒ+1)ยฒ ===")
res2 = sp.residue(1/(z**2+1)**2, z, sp.I)
result2 = sp.simplify(2 * sp.pi * sp.I * res2)
print(f"์ ์ ์ ๋ฆฌ: {result2} = {float(result2):.6f}")
num2, _ = quad(lambda x: 1/(x**2+1)**2, -100, 100)
print(f"์์น ๊ฒ์ฆ: {num2:.6f}\n")
์ ํ 3: ํธ๋ฆฌ์ํ ์ ๋ถ โ $\int_{-\infty}^{\infty} f(x) e^{iax}\, dx$ ($a > 0$)¶
์กฐ๋ฅด๋น ๋ณด์กฐ์ ๋ฆฌ๋ฅผ ์ ์ฉ. $f(z) \to 0$ as $|z| \to \infty$์ด๋ฉด (1์ฐจ ์ถฉ๋ถ) ์๋ฐ๋ฉด ๋ฐ์์ ๊ธฐ์ฌ๊ฐ 0:
$$\int_{-\infty}^{\infty} f(x) e^{iax}\, dx = 2\pi i \sum_{\text{Im}(z_k) > 0} \text{Res}_{z=z_k} f(z) e^{iaz}$$
$\cos(ax)$๋ $\sin(ax)$๋ฅผ ํฌํจํ๋ ์ ๋ถ์ $e^{iax}$๋ฅผ ์ฌ์ฉํ ํ ์ค์๋ถ/ํ์๋ถ๋ฅผ ์ทจํ๋ค.
# --- ์ ํ 3: โซโโ^โ cos(x)/(xยฒ+1) dx = ฯ/e ---
print("=== ์ ํ 3: โซโโ^โ cos(x)/(xยฒ+1) dx ===")
f3 = sp.exp(sp.I*z) / (z**2 + 1)
res3 = sp.residue(f3, z, sp.I)
result3 = sp.simplify(2 * sp.pi * sp.I * res3)
print(f"์ ์ ์ ๋ฆฌ: Re({result3}) = ฯ/e = {float(sp.pi/sp.E):.6f}")
num3, _ = quad(lambda x: np.cos(x)/(x**2+1), -100, 100)
print(f"์์น ๊ฒ์ฆ: {num3:.6f}\n")
์ ํ 4: ๋ถ์ง์ ๋จ ์ ๋ถ โ $\int_0^{\infty} x^{a-1} f(x)\, dx$ ($0 < a < 1$)¶
ํผ์ ๋ถํจ์์ $x^a$ ($a$๊ฐ ์ ์๊ฐ ์๋ ๊ฒฝ์ฐ)๊ฐ ํฌํจ๋๋ฉด ๋ถ์ง์ ๋จ(branch cut)์ด ํ์ํ๋ค. ์ด์ ๊ตฌ๋ฉ(keyhole) ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํ๋ค.
๋ํ ์์ : $\int_0^{\infty} \frac{x^{a-1}}{1+x}\, dx = \frac{\pi}{\sin(\pi a)}$ ($0 < a < 1$)
ํ์ด ์ ๋ต: 1. $f(z) = z^{a-1}/(1+z)$์์ ์์ ์ค์์ถ์ ๋ถ์ง์ ๋จ์ผ๋ก ์ ํ 2. ์ด์ ๊ตฌ๋ฉ ๊ฒฝ๋ก: ๋ถ์ง์ ๋จ ์์ชฝ โ ํฐ ์ โ ๋ถ์ง์ ๋จ ์๋์ชฝ โ ์์ ์ 3. ๋ถ์ง์ ๋จ ์๋์ชฝ์์ $z^{a-1} = |z|^{a-1} e^{2\pi i(a-1)}$ 4. $z = -1$์์์ ์ ์: $e^{i\pi(a-1)} = -e^{i\pi a}$
$$\int_0^{\infty} \frac{x^{a-1}}{1+x} dx - e^{2\pi i(a-1)} \int_0^{\infty} \frac{x^{a-1}}{1+x} dx = 2\pi i \cdot (-e^{i\pi a})$$
$$(1 - e^{2\pi i(a-1)}) I = -2\pi i e^{i\pi a} \implies I = \frac{\pi}{\sin(\pi a)}$$
# --- ์ ํ 4: โซโ^โ x^{a-1}/(1+x) dx = ฯ/sin(ฯa) ---
print("=== ์ ํ 4: โซโ^โ x^{a-1}/(1+x) dx ===")
for a in [0.25, 0.5, 0.75]:
theory = np.pi / np.sin(np.pi * a)
numerical, _ = quad(lambda x: x**(a-1)/(1+x), 0, np.inf)
print(f" a = {a}: ฯ/sin(ฯa) = {theory:.6f}, ์์น = {numerical:.6f}")
5. ๋ฑ๊ฐ์ฌ์ (Conformal Mapping)¶
5.1 ๋ฑ๊ฐ์ฌ์์ ์ ์์ ์ฑ์ง¶
$f'(z_0) \neq 0$์ธ ํด์ํจ์ $w = f(z)$๋ $z_0$ ๊ทผ๋ฐฉ์์ ๋ฑ๊ฐ(conformal)์ด๋ค:
- ๊ฐ๋ ๋ณด์กด: ๋ ๊ณก์ ์ ๊ต์ฐจ ๊ฐ๋๊ฐ ์ฌ์ ํ์๋ ์ ์ง
- ๋ผํ๋ผ์ค ๋ฐฉ์ ์ ๋ถ๋ณ: ์กฐํํจ์๊ฐ ์ฌ์ ํ์๋ ์กฐํํจ์
- ๊ฒฝ๊ณ์กฐ๊ฑด ๋ณด์กด: ๋ฌผ๋ฆฌ์ ๊ฒฝ๊ณ ์กฐ๊ฑด์ด ์ฌ์ ํ์๋ ์ ํจ
5.2 ๋ซผ๋น์ฐ์ค ๋ณํ¶
$$w = \frac{az + b}{cz + d}, \quad ad - bc \neq 0$$
์ฑ์ง: ์๊ณผ ์ง์ ์ ์๊ณผ ์ง์ ์ผ๋ก ์ฌ์ํ๋ฉฐ, ์ธ ์ ์ผ๋ก ์ ์ผํ๊ฒ ๊ฒฐ์ ๋๋ค.
def mobius_transform(z, a, b, c, d):
"""๋ซผ๋น์ฐ์ค ๋ณํ w = (az+b)/(cz+d)"""
return (a*z + b) / (c*z + d)
def plot_mobius(a, b, c, d, title="๋ซผ๋น์ฐ์ค ๋ณํ"):
"""๊ฒฉ์์ ์ ๋ซผ๋น์ฐ์ค ๋ณํ ์๊ฐํ"""
fig, axes = plt.subplots(1, 2, figsize=(12, 5))
t = np.linspace(-2, 2, 300)
for x0 in np.linspace(-2, 2, 9):
zv = x0 + 1j*t; wv = mobius_transform(zv, a, b, c, d)
axes[0].plot(zv.real, zv.imag, 'b-', alpha=0.4, lw=0.7)
m = np.abs(wv) < 10
axes[1].plot(wv.real[m], wv.imag[m], 'b-', alpha=0.4, lw=0.7)
for y0 in np.linspace(-2, 2, 9):
zv = t + 1j*y0; wv = mobius_transform(zv, a, b, c, d)
axes[0].plot(zv.real, zv.imag, 'r-', alpha=0.4, lw=0.7)
m = np.abs(wv) < 10
axes[1].plot(wv.real[m], wv.imag[m], 'r-', alpha=0.4, lw=0.7)
for ax, lab in zip(axes, ['z-ํ๋ฉด', 'w-ํ๋ฉด']):
ax.set_xlim(-4,4); ax.set_ylim(-4,4)
ax.set_aspect('equal'); ax.grid(True, alpha=0.3); ax.set_title(lab)
fig.suptitle(f'{title}: w=({a}z+{b})/({c}z+{d})')
plt.tight_layout(); plt.show()
# ์ผ์ผ๋ฆฌ ๋ณํ (์๋ฐ๋ฉดโ๋จ์์): w = (z-i)/(z+i)
# plot_mobius(1, -1j, 1, 1j, "์ผ์ผ๋ฆฌ ๋ณํ")
5.3 ๋ฌผ๋ฆฌํ ์์ฉ (์ ์ฒด ์ญํ, ์ ๊ธฐ์ฅ)¶
๋ณต์ ํฌํ ์ : 2์ฐจ์ ๋น์์ถ์ฑ ๋นํ์ ํ๋ฆ์์:
$$W(z) = \phi(x, y) + i\psi(x, y), \quad \frac{dW}{dz} = v_x - iv_y$$
$\phi$๋ ์๋ ํฌํ ์ , $\psi$๋ ์ ์ ํจ์์ด๋ค.
| ํ๋ฆ | $W(z)$ | ๋ฌผ๋ฆฌ์ ์๋ฏธ |
|---|---|---|
| ๊ท ์ผ ํ๋ฆ | $Uz$ | ์๋ $U$ |
| ์์ค/์ฑํฌ | $(Q/2\pi)\ln z$ | ๊ฐ๋ $Q$ |
| ์๋ฅ | $(-i\Gamma/2\pi)\ln z$ | ์ํ $\Gamma$ |
| ์ด์ค๊ทน | $\mu/z$ | ์๊ทน์ |
| ์์ฃผ ์ฃผ์ | $U(z + a^2/z)$ | ๋ฐ์ง๋ฆ $a$ |
def plot_flow(W_func, xlim=(-3,3), ylim=(-3,3), N=400, title="์ ์ ๋"):
"""๋ณต์ ํฌํ
์
๋ก๋ถํฐ ์ ์ ๋์ ๋ฑํฌํ
์
์ ์๊ฐํ"""
xv = np.linspace(*xlim, N); yv = np.linspace(*ylim, N)
X, Y = np.meshgrid(xv, yv); Z = X + 1j*Y
with np.errstate(divide='ignore', invalid='ignore'):
W = W_func(Z)
phi, psi = np.real(W), np.imag(W)
mask = np.abs(W) > 50; phi[mask] = np.nan; psi[mask] = np.nan
fig, axes = plt.subplots(1, 2, figsize=(12, 5))
axes[0].contour(X, Y, psi, levels=30, colors='blue', linewidths=0.8)
axes[0].set_title(f'{title} - ์ ์ (ฯ=const)')
axes[1].contour(X, Y, phi, levels=30, colors='red', linewidths=0.8)
axes[1].set_title(f'{title} - ๋ฑํฌํ
์
์ (ฯ=const)')
for ax in axes:
ax.set_aspect('equal'); ax.set_xlabel('x'); ax.set_ylabel('y')
plt.tight_layout(); plt.show()
# ์ํ ์๋ ์์ฃผ ์ฃผ์ ํ๋ฆ
U, a, Gamma = 1.0, 1.0, 2*np.pi
W_cyl = lambda z: U*(z + a**2/z) - 1j*Gamma/(2*np.pi)*np.log(z)
# plot_flow(W_cyl, title="์ํ ์๋ ์์ฃผ ์ฃผ์ ํ๋ฆ")
# ์ ๊ธฐ ์๊ทน์ (+q at z=d, -q at z=-d)
W_dipole = lambda z: -1/(2*np.pi) * (np.log(z-0.5) - np.log(z+0.5))
# plot_flow(W_dipole, title="์ ๊ธฐ ์๊ทน์ ์ ์")
์ฃผ์ฝํ์คํค ๋ณํ๊ณผ ์๋ ฅ: $w = z + c^2/z$๋ ์์ ์์ดํฌ์ผ๋ก ์ฌ์ํ๋ค. ์ฟ ํ-์ฃผ์ฝํ์คํค ์ ๋ฆฌ์ ์ํ ๋จ์ ๊ธธ์ด๋น ์๋ ฅ:
$$L = \rho U \Gamma$$
์ด ๊ฒฐ๊ณผ๋ ์ ์ ์ ๋ฆฌ๋ก๋ถํฐ ์ฐ์ํ๊ฒ ๋์ถ๋๋ค.
5.4 ์๋ฐ๋ฅด์ธ -ํฌ๋ฆฌ์คํ ํ ์ฌ์ (Schwarz-Christoffel Mapping)¶
๋ฌธ์ : ์๋ฐ๋ฉด์ ๋ค๊ฐํ ์์ญ์ผ๋ก ์ฌ์ํ๋ ๋ฑ๊ฐ์ฌ์์ ๊ตฌํ๋ผ.
์๋ฐ๋ฅด์ธ -ํฌ๋ฆฌ์คํ ํ ๊ณต์: ์๋ฐ๋ฉด์ ์ค์์ถ ์์ ์ $x_1, x_2, \ldots, x_n$์ด ๋ค๊ฐํ์ ๊ผญ์ง์ $w_1, w_2, \ldots, w_n$์ผ๋ก ์ฌ์๋๊ณ , ๊ฐ ๊ผญ์ง์ ์ ๋ด๊ฐ์ด $\alpha_k \pi$์ด๋ฉด:
$$\frac{dw}{dz} = A \prod_{k=1}^{n} (z - x_k)^{\alpha_k - 1}$$
์ฌ๊ธฐ์ $A$๋ ๋ณต์ ์์์ด๋ค.
์: ์๋ฐ๋ฉด โ ์ง์ฌ๊ฐํ ์ฌ์์ ํ์ ์ ๋ถ์ผ๋ก ํํ๋๋ฉฐ, ์ ์ ๊ธฐํ์์ ํํํ ์ถ์ ๊ธฐ์ ๊ฐ์ฅ์๋ฆฌ ํจ๊ณผ(fringing field) ๊ณ์ฐ์ ์ฌ์ฉ๋๋ค.
6. ํด์์ ์ฐ์ (Analytic Continuation)¶
6.1 ๊ธฐ๋ณธ ๊ฐ๋ ¶
ํจ์ $f(z)$๊ฐ ์์ญ $D_1$์์ ์ ์๋์ด ์์ ๋, ๋ ํฐ ์์ญ $D_2 \supset D_1$์์ ํด์์ ์ธ ํจ์ $g(z)$๊ฐ $D_1$์์ $f$์ ์ผ์นํ๋ฉด, $g$๋ฅผ $f$์ ํด์์ ์ฐ์์ด๋ผ ํ๋ค.
์ ์ผ์ฑ: ํด์์ ์ฐ์์ด ์กด์ฌํ๋ฉด ์ ์ผํ๋ค (ํญ๋ฑ ์ ๋ฆฌ์ ์ํด).
6.2 ๋ฌผ๋ฆฌํ ์์ฉ¶
๊ฐ๋ง ํจ์: ์๋ $\Gamma(z) = \int_0^{\infty} t^{z-1} e^{-t} dt$๋ $\text{Re}(z) > 0$์์๋ง ์ ์๋์ง๋ง, ์ ํ์ $\Gamma(z) = \Gamma(z+1)/z$๋ฅผ ์ด์ฉํ๋ฉด ์์ ์ ์๋ฅผ ์ ์ธํ ์ ์ฒด ๋ณต์ ํ๋ฉด์ผ๋ก ํด์์ ์ฐ์๋๋ค.
๋ฆฌ๋ง ์ ํ ํจ์: $\zeta(s) = \sum_{n=1}^{\infty} n^{-s}$๋ $\text{Re}(s) > 1$์์ ์๋ ดํ์ง๋ง, ํด์์ ์ฐ์์ ํตํด $s = 1$์ ์ ์ธํ ์ ์ฒด ๋ณต์ ํ๋ฉด์ผ๋ก ํ์ฅ๋๋ค. ์ด๋ ๋ฌผ๋ฆฌํ์์ ์ ํ ํจ์ ์ ๊ทํ(์นด์๋ฏธ๋ฅด ํจ๊ณผ ๋ฑ)์ ์ฌ์ฉ๋๋ค.
# ๊ฐ๋ง ํจ์์ ํด์์ ์ฐ์ ์๊ฐํ
import numpy as np
import matplotlib.pyplot as plt
from scipy.special import gamma
x = np.linspace(-4.5, 5, 2000)
y = np.array([gamma(xi) if abs(xi - round(xi)) > 0.02 or xi > 0.5
else np.nan for xi in x])
plt.figure(figsize=(10, 6))
plt.plot(x, y, 'b-', linewidth=1.5)
plt.ylim(-10, 10)
for n in range(0, -5, -1):
plt.axvline(x=n, color='red', linewidth=0.5, linestyle='--', alpha=0.5)
plt.xlabel('z')
plt.ylabel('ฮ(z)')
plt.title('๊ฐ๋ง ํจ์์ ํด์์ ์ฐ์ (์์ ์ ์์์ ๊ทน์ )')
plt.grid(True, alpha=0.3)
plt.axhline(0, color='k', linewidth=0.5)
plt.tight_layout()
plt.show()
์ฐ์ต ๋ฌธ์ ¶
๊ธฐ๋ณธ ๋ฌธ์ ¶
- ๋ค์ ํจ์๊ฐ ํด์์ ์ธ์ง ์ฝ์-๋ฆฌ๋ง ์กฐ๊ฑด์ผ๋ก ํ๋ณํ๋ผ:
- (a) $f(z) = z^3$
- (b) $f(z) = |z|^2$
- (c) $f(z) = \bar{z}$
-
(d) $f(z) = e^{-z}\sin z$
-
$u(x, y) = x^3 - 3xy^2 + 2x$์ ์กฐํ ์ผค๋ $v(x, y)$๋ฅผ ๊ตฌํ๋ผ.
-
๋ค์ ์ ๋ถ์ ๊ณ์ฐํ๋ผ ($C$: ์์ ์ค์ฌ ๋ฐ์ง๋ฆ 2):
- (a) $\oint_C e^z/z^2\, dz$
- (b) $\oint_C \cos z/z^3\, dz$
- (c) $\oint_C z^2/((z-1)(z+2))\, dz$
์ค๊ธ ๋ฌธ์ ¶
- ์ ์ ์ ๋ฆฌ๋ก ๊ณ์ฐํ๋ผ:
- (a) $\displaystyle\int_0^{2\pi} \frac{d\theta}{5 + 4\cos\theta}$
- (b) $\displaystyle\int_0^{\infty} \frac{x^2}{(x^2+1)(x^2+4)}\, dx$
-
(c) $\displaystyle\int_0^{\infty} \frac{\cos 3x}{x^2 + 1}\, dx$
-
$f(z) = z/((z-1)^2(z+2))$์ ๋ชจ๋ ํน์ด์ ์์ ์ ์๋ฅผ ๊ตฌํ๊ณ , $|z|=3$ ์์ ์ ๋ถ๊ฐ์ ๊ตฌํ๋ผ.
์ฌํ ๋ฌธ์ ¶
-
์ ์ฒด์ญํ: ์์ค($z=a$)์ ์ฑํฌ($z=-a$)๊ฐ ์๊ณ $x$์ถ์ด ๋ฒฝ์ผ ๋, ์์๋ฒ์ผ๋ก ์๋ฐ๋ฉด ์ ์ ํจ์๋ฅผ ๊ตฌํ๋ผ.
-
์์์ญํ: ๊ทธ๋ฆฐ ํจ์ $G(E) = (E - H + i\epsilon)^{-1}$๋ก๋ถํฐ ์ํ๋ฐ๋ $\rho(E) = -\text{Im}\, G(E)/\pi$๋ฅผ ์ ์ ์ ๋ฆฌ๋ก ์ ๋ํ๋ผ.
-
ํ์ด (๋ฌธ์ 4a):
z = sp.Symbol('z')
# โซโยฒฯ dฮธ/(5+4cosฮธ) โ โฎ 1/(i(2zยฒ+5z+2)) dz
integrand = 1 / (sp.I * (2*z**2 + 5*z + 2))
poles = sp.solve(2*z**2 + 5*z + 2, z)
print(f"๊ทน์ : {poles}") # z=-1/2 (๋ด๋ถ), z=-2 (์ธ๋ถ)
res = sp.residue(integrand, z, sp.Rational(-1, 2))
print(f"์ ๋ถ๊ฐ: {sp.simplify(2*sp.pi*sp.I*res)}") # 2ฯ/3
์ฐธ๊ณ ์๋ฃ¶
๊ต์ฌ¶
- Boas, M. L. Mathematical Methods in the Physical Sciences, 3rd ed., Ch. 14
- Arfken, Weber Mathematical Methods for Physicists, Ch. 6-7
- Churchill, Brown Complex Variables and Applications
๋ณด์ถฉ ์๋ฃ¶
- Needham, T. Visual Complex Analysis - ๊ธฐํํ์ ์ง๊ด
- Ablowitz, Fokas Complex Variables: Introduction and Applications - ๋ฌผ๋ฆฌํ ์์ฉ
ํต์ฌ ๊ณต์ ์์ฝ¶
| ๊ณต์ | ์กฐ๊ฑด |
|---|---|
| ์ฝ์-๋ฆฌ๋ง: $u_x = v_y$, $u_y = -v_x$ | ๋ฏธ๋ถ ๊ฐ๋ฅ |
| ์ฝ์ ์ ๋ฆฌ: $\oint_C f\, dz = 0$ | ๋จ์ ์ฐ๊ฒฐ ๋ด ํด์์ |
| ์ฝ์ ๊ณต์: $f(z_0) = \frac{1}{2\pi i}\oint \frac{f}{z-z_0} dz$ | $f$ ํด์์ , $z_0$ ๋ด๋ถ |
| ์ ์ ์ ๋ฆฌ: $\oint f\, dz = 2\pi i \sum \text{Res}$ | ์ ํ ํน์ด์ |
๋ค์ ๋ ์จ¶
15. ๋ผํ๋ผ์ค ๋ณํ (Laplace Transform)์์๋ ๋ผํ๋ผ์ค ๋ณํ์ ์ ์์ ์ฑ์ง, ์ญ๋ณํ, ๋ฏธ๋ถ๋ฐฉ์ ์์์ ์์ฉ์ ๋ค๋ฃน๋๋ค.