- Authors

- Name
- Youngju Kim
- @fjvbn20031
工業数学:複素解析とZ変換 完全ガイド
電子・制御工学において、複素数は単なる数学的抽象ではありません。交流回路解析のフェーザー、ラプラス変換の 、Z変換の単位円、ボード線図の複素周波数応答 — これらすべてが複素解析に根ざしています。本ガイドでは複素数体系から留数定理、Z変換、デジタルフィルタ設計まで体系的に解説します。
1. 複素数体系
1.1 複素数の表現
直交形(Rectangular Form):
(電気工学では電流を表すため の代わりに を使います)
- 実部:
- 虚部:
極形(Polar Form):
- 絶対値(大きさ):
- 偏角(位相): (象限を考慮)
オイラーの公式(Euler's Formula):
これより:
数学史上最も美しい公式とされるオイラーの等式:
5つの最重要定数(、、、、)が一つの式に結びついています。
ド・モアブルの公式(De Moivre's Formula):
n乗根: 、
単位円上のn等分点を表します。(1のn乗根: — FFTに登場します!)
1.2 複素数の演算
加算・減算(直交形が便利):
乗算(極形が便利):
大きさは積、位相は和 — 電気工学でのインピーダンス乗算の基盤です。
除算:
共役複素数(Complex Conjugate):
有用な性質:
1.3 工学応用:フェーザー解析
交流回路解析で複素数の威力が発揮されます。
をフェーザーで表現:
インピーダンス(Impedance):
直列RLCインピーダンス:
共振条件: より 、(純抵抗)
2. 複素関数と正則関数
2.1 複素関数
ここで 、 は実数値関数です。
例:
2.2 複素微分とコーシー・リーマン方程式
の複素微分:
実数と違い、 が複素平面上の任意の方向から0に近づいても極限値が同じでなければなりません。
x軸方向():
y軸方向():
2つの表現が等しいためには:
これが**コーシー・リーマン方程式(Cauchy-Riemann Equations)**です。
、 の偏微分が連続でコーシー・リーマン方程式を満たせば、 は**正則関数(Analytic Function)**です。
2.3 調和関数
正則関数の実部と虚部はそれぞれラプラス方程式を満たします:
コーシー・リーマンから 、 なので 。
を知ればコーシー・リーマンで調和共役関数 が求められます。
工学的意味: ポテンシャル流の速度ポテンシャルと流線の関係、静電気学での電位と電気力線の関係。
import numpy as np
import matplotlib.pyplot as plt
# f(z) = z^2 のコーシー・リーマン直交性を可視化
x = np.linspace(-2, 2, 400)
y = np.linspace(-2, 2, 400)
X, Y = np.meshgrid(x, y)
U = X**2 - Y**2 # Re(z^2)
V = 2 * X * Y # Im(z^2)
fig, axes = plt.subplots(1, 2, figsize=(12, 5))
for ax, data, title in zip(axes, [U, V],
['Re(z^2) = x^2 - y^2', 'Im(z^2) = 2xy']):
c = ax.contour(X, Y, data, levels=20, cmap='RdBu')
ax.set_title(title)
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_aspect('equal')
plt.colorbar(c, ax=ax)
plt.suptitle('f(z)=z^2 の等高線: 直交格子(コーシー・リーマン)', fontsize=12)
plt.tight_layout()
plt.savefig('cauchy_riemann_z2.png', dpi=150)
plt.show()
2.4 重要な正則関数
三角関数:
実数の三角関数と違い大きさが無限大になれます:
対数関数(多価関数):
主値: 、。 と負の実数軸で特異性が発生(分岐切断)。
3. 複素積分
3.1 経路積分
: 複素平面上の曲線(パラメータ 、)
例: (: 原点から への直線)
パラメータ化: 、、
3.2 コーシーの積分定理
条件: が単純閉曲線 上とその内部で正則。
直感: 正則関数は経路に無関係に積分されます。グリーンの定理とコーシー・リーマン方程式を適用すると両積分が消えます。
原始関数: ならば
3.3 コーシーの積分公式
条件: が 上と内部で正則、 は の内部。
高階微分の公式:
これは正則関数が無限回微分可能であることを示します!
import numpy as np
def cauchy_formula(f, a, R=1.0, N=2000):
"""コーシーの積分公式を数値的に検証: f(a) = (1/2pi*i) integral f(z)/(z-a) dz"""
theta = np.linspace(0, 2*np.pi, N, endpoint=False)
z = a + R * np.exp(1j * theta)
dz = np.diff(np.append(z, z[0]))
integrand = f(z[:-1]) / (z[:-1] - a)
return np.sum(integrand * dz) / (2 * np.pi * 1j)
a = 1 + 1j
numerical = cauchy_formula(np.exp, a)
print(f"コーシー公式の結果: {numerical:.6f}")
print(f"厳密値 exp(1+j) : {np.exp(a):.6f}")
print(f"誤差 : {abs(numerical - np.exp(a)):.2e}")
4. ローラン級数と留数定理
4.1 テイラー級数とローラン級数
テイラー級数( で正則):
ローラン級数(環状領域 で正則):
負の指数部分を**主要部(principal part)**といいます。テイラー級数との違いは負冪項の有無であり、その構造が特異点の種類を分類します。
4.2 特異点の分類
除去可能特異点(Removable Singularity): ローラン級数に負冪項なし。
m位の極(Pole of Order m): 有限個の負冪項。( は正則、)
真性特異点(Essential Singularity): 無限に多くの負冪項。
ピカールの定理: 真性特異点近傍で関数値はほぼすべての複素数をとります。
4.3 留数定理
留数(Residue)の定義: のローラン展開における の係数。
留数の計算法:
単純極():
有理関数 (単純極):
m位の極:
留数定理(Residue Theorem):
は の内部にある全ての特異点。
4.4 留数定理による実積分の計算
例1:
上半平面の単純極: 、留数: 。 ジョルダンの補題より半円弧の寄与は消えて:
例2:
、極 、留数 。 実部を取ると:
例3:
、 と置換:
4.5 逆ラプラス変換への応用
ブロミッチ積分(Bromwich Integral):
例: 、極
確認: 成立。
5. 等角写像
5.1 定義と角度保存
の条件のもとで、正則関数 は**等角写像(conformal mapping)**を定義します。これは各点において曲線間の角度と向きを保存します。
5.2 メビウス変換
性質:
- 円と直線を円と直線に写像する
- 任意の3点を他の任意の3点に写像できる
- メビウス変換の合成は再びメビウス変換になる
主要な例:
- : 反転写像
- : 単位円を単位円に写像
- : 単位円を右半平面に写像
5.3 工学応用
ポテンシャル流: 等角写像は複雑な領域形状(例: 翼型)を単純な形状(半平面、円板)に変換し、解析解を可能にします。
静電気学: 不規則な電極間の電界分布を標準領域への写像で求めます。
デジタルフィルタ設計: 双一次変換 は等角写像であり、 軸を単位円に正確に写像します。
import numpy as np
import matplotlib.pyplot as plt
def mobius(z, a=1, b=-1, c=1, d=1):
return (a * z + b) / (c * z + d)
theta = np.linspace(0, 2*np.pi, 300)
r_vals = [0.3, 0.6, 0.9, 1.0]
fig, axes = plt.subplots(1, 2, figsize=(12, 6))
for r in r_vals:
z_c = r * np.exp(1j * theta)
w_c = mobius(z_c)
axes[0].plot(z_c.real, z_c.imag, linewidth=1.5)
axes[1].plot(w_c.real, w_c.imag, linewidth=1.5)
for phi in np.linspace(0, 2*np.pi, 12, endpoint=False):
r_line = np.linspace(0.01, 0.99, 100)
z_l = r_line * np.exp(1j * phi)
w_l = mobius(z_l)
axes[0].plot(z_l.real, z_l.imag, 'gray', alpha=0.4, linewidth=0.8)
axes[1].plot(w_l.real, w_l.imag, 'gray', alpha=0.4, linewidth=0.8)
for ax, title in zip(axes, ['z平面(単位円板)', 'w平面: w = (z-1)/(z+1)']):
ax.set_xlim([-2, 2])
ax.set_ylim([-2, 2])
ax.axhline(0, color='k', linewidth=0.5)
ax.axvline(0, color='k', linewidth=0.5)
ax.set_aspect('equal')
ax.set_title(title)
ax.grid(True, alpha=0.3)
plt.tight_layout()
plt.savefig('mobius_transform.png', dpi=150)
plt.show()
6. Z変換
6.1 定義と収束領域
収束領域(ROC: Region of Convergence):
- 因果信号(片側右): (全極点の外側)
- 反因果信号(片側左): (全極点の内側)
- 両側信号: 環状領域
6.2 主要Z変換対
| 信号 | | ROC | | --------------------------- | ------------------------------------------ | ---------- | --- | --- | --- | --- | | | | 全ての | | | | | | | | | | | | | | | | |
6.3 Z変換の重要な性質
- 時間移動: ( = 単位遅延演算子)
- 畳み込み:
- 最終値定理:
6.4 デジタルフィルタ設計
伝達関数:
安定性: 全極点が を満たす必要があります。
FIRフィルタ: 極点は原点のみ — 常に安定、線形位相が可能。
IIRフィルタ: フィードバックあり — 少ない係数で鋭い特性を実現、安定性の確認が必要。
from scipy import signal
import numpy as np
import matplotlib.pyplot as plt
b, a = signal.butter(4, 0.2, btype='low')
w, h = signal.freqz(b, a, worN=2048)
zeros, poles, gain = signal.tf2zpk(b, a)
fig, axes = plt.subplots(1, 2, figsize=(12, 5))
axes[0].plot(w/np.pi, 20*np.log10(abs(h) + 1e-15), 'b-', linewidth=2)
axes[0].axhline(-3, color='r', linestyle='--', label='-3 dB')
axes[0].set_xlabel('正規化周波数')
axes[0].set_ylabel('振幅 (dB)')
axes[0].set_title('バターワースLPF(4次)')
axes[0].set_xlim([0, 1])
axes[0].legend()
axes[0].grid(True, alpha=0.3)
unit_circle = np.exp(1j * np.linspace(0, 2*np.pi, 200))
axes[1].plot(unit_circle.real, unit_circle.imag, 'k--', alpha=0.5)
axes[1].scatter(zeros.real, zeros.imag, s=100, marker='o', color='blue', label='零点')
axes[1].scatter(poles.real, poles.imag, s=100, marker='x', color='red', linewidths=2, label='極点')
axes[1].set_title('極-零点図(z平面)')
axes[1].set_aspect('equal')
axes[1].legend()
axes[1].grid(True, alpha=0.3)
plt.tight_layout()
plt.savefig('butterworth_lpf.png', dpi=150)
plt.show()
print(f"極点の大きさ: {np.abs(poles)}")
6.5 s平面とz平面の対応
| s平面 | z平面 | | --------------------------- | -------------- | --- | ---- | | 軸 () | 単位円 | | 左半平面 () | 単位円の内部 | | 右半平面 () | 単位円の外部 |
安定性の対応: 連続系の全極点が左半平面 ↔ 離散系の全極点が単位円の内部
双一次変換(エイリアシングなしのアナログ-デジタル変換):
7. AIと信号処理への応用
7.1 複素数値ニューラルネットワーク
複素数値ニューラルネットワークは振幅-位相構造を持つ信号を複素領域で処理します。**ウィルティンガー微分(Wirtinger derivative)**は、機械学習で用いられる非正則複素関数にコーシー・リーマンの枠組みを一般化し、複素領域での勾配に基づく最適化を可能にします。
7.2 損失曲面の幾何学
複素解析の道具はニューラルネットワーク損失関数の臨界点を特徴付けます。鞍点、局所極小、そのアトラクション盆地は正則関数理論と等角幾何の観点から研究できます。
import numpy as np
import matplotlib.pyplot as plt
# sin(z)/z のドメインカラーリング(z=0 は除去可能特異点)
x = np.linspace(-5, 5, 600)
y = np.linspace(-3, 3, 600)
X, Y = np.meshgrid(x, y)
Z = X + 1j * Y
with np.errstate(invalid='ignore', divide='ignore'):
F = np.where(np.abs(Z) < 1e-10, 1.0 + 0j, np.sin(Z) / Z)
fig, axes = plt.subplots(1, 2, figsize=(14, 5))
im1 = axes[0].pcolormesh(X, Y, np.abs(F), cmap='viridis', vmax=2.5)
axes[0].set_title('|sin(z)/z| — 絶対値')
axes[0].set_xlabel('Re(z)')
axes[0].set_ylabel('Im(z)')
axes[0].set_aspect('equal')
plt.colorbar(im1, ax=axes[0])
im2 = axes[1].pcolormesh(X, Y, np.angle(F), cmap='hsv')
axes[1].set_title('arg(sin(z)/z) — 偏角')
axes[1].set_xlabel('Re(z)')
axes[1].set_ylabel('Im(z)')
axes[1].set_aspect('equal')
plt.colorbar(im2, ax=axes[1])
plt.suptitle('sin(z)/z のドメインカラーリング(z=0 に除去可能特異点)', fontsize=11)
plt.tight_layout()
plt.savefig('domain_coloring_sinc.png', dpi=150)
plt.show()
まとめと次のステップ
本ガイドで扱った内容:
- 複素数体系: 直交形、極形、オイラーの公式、ド・モアブルの公式、フェーザー解析、インピーダンス
- 複素関数と正則関数: コーシー・リーマン方程式、調和関数
- 複素積分: 経路積分、コーシーの積分定理、コーシーの積分公式
- ローラン級数と留数定理: 特異点の分類、留数計算、実積分への応用、逆ラプラス変換
- 等角写像: メビウス変換、角度保存、工学応用
- Z変換: 収束領域、主要変換対、差分方程式の解法
- デジタルフィルタ設計: FIR/IIR、極-零点図、安定性、双一次変換
- AI応用: 複素数値ネットワーク、最適化曲面の幾何学
次回は**数値解析(Numerical Methods)**を扱います。方程式の解法、数値微分・積分、ODE数値解法、線形システム、補間までPythonで完全実装します。
参考文献
- Churchill, R. & Brown, J. "Complex Variables and Applications", 9th Edition
- Oppenheim, A. & Schafer, R. "Discrete-Time Signal Processing", 3rd Edition
- Proakis, J. & Manolakis, D. "Digital Signal Processing", 4th Edition
- Ogata, K. "Modern Control Engineering", 5th Edition
- SciPy 信号処理公式ドキュメント
練習問題
Q1. コーシー・リーマン方程式とは何か、また正則関数について何を意味するか?
答え: コーシー・リーマン方程式は および です。
解説: 複素微分が存在するためには、 の極限が の近づく方向によらず同じでなければなりません。水平方向と垂直方向の極限を等置することでこの2つのPDE条件が得られます。偏微分が連続でこれらを満たすとき は正則 — 領域全体で複素微分可能 — となります。注目すべき帰結として、正則関数は無限回微分可能で収束する冪級数として局所的に表現できます。また実部と虚部がともにラプラス方程式を満たす(調和関数)ことから、ポテンシャル理論への応用が生まれます。
Q2. コーシーの定理で閉じた経路上の積分がゼロになるのはなぜか?
答え: 正則関数は経路によらない積分を持つため、出発点と終点が同じ閉ループの積分はゼロになります。
解説: を 、 で書き直すと2つの実数線積分になります。グリーンの定理で各積分を領域上の二重積分に変換し、コーシー・リーマン方程式が両被積分関数をゼロにします。幾何学的には: 積分が端点のみに依存するなら、出発点と終点が同じならゼロ。これは実解析における保存的ベクトル場(仕事積分がゼロ)の複素解析版です。
Q3. テイラー級数とローラン級数の違いは何か?
答え: テイラー級数は の非負冪のみを含み、ローラン級数は負冪も含みます。
解説: テイラー級数は が で正則なときに成立します。ローラン級数は環状領域で成立し、 が に特異点を持つときに必要です。負冪項(主要部)の構造が特異点を分類します: 負冪項なし — 除去可能、有限個 — 極、無限個 — 真性特異点。 の係数 が留数であり、留数定理の中心的な量です。
Q4. 留数定理が実積分の計算をどのように簡単にするか?
答え: 実積分を複素平面上の周回積分に変換し、極での留数を求めるだけの代数的な計算に帰着させます。
解説: 実変数の方法では難しい多くの定積分( や など)も、被積分関数を複素関数に拡張し、経路を選択して(例えば上半平面の大きな半円)、余分な弧の寄与がゼロであること(ジョルダンの補題)を示せば、留数定理が答えを 乗の留数の和として与えます。手に負えない不定積分の計算問題が、極での極限を取るだけの簡単な代数計算になります。
Q5. 等角写像は角度を保存する — 実際の応用は何か?
答え: 等角写像は流体力学、静電気学、デジタルフィルタ設計において、複雑な幾何形状を支配方程式を保ちながら扱いやすい形状に変換するために使われます。
解説: 等角写像は角度とラプラシアンの構造を保存するため、複雑な領域(翼型周りの流れ、不規則な電極間の電界)での境界値問題を解の分かっている単純な領域(半平面、円板)に写像できます。デジタル信号処理では双一次変換がs平面の 軸をz平面の単位円に正確に写像する等角写像であり、安定性を保ちながらアナログ-デジタルフィルタ変換を可能にします。メビウス変換のクラスは円と直線を円と直線に写像するため特に汎用性が高いです。