交流回路:電力の最大化とインピーダンスマッチングについて

# はじめに
直流回路の場合、電源側の抵抗値と負荷側の抵抗値が一致した場合において取り出せる負荷側の消費電力が最大になることが知られている。しかし、交流回路の場合は電源側の複素インピーダンスと負荷側の複素インピーダンスが共役のときに、負荷側において取り出すことのできる消費電力が最大になるということはあまり知られていないようである。今回はそのことについて証明したのち、プログラムを用いてグラフを描写することにより確認する。そして、最後にノーズカーブとの関連性についても述べる。
# 問題設定
以下のような回路設定で考える。

![AC_P_max.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1686019/f1cbab40-94df-8f65-2474-d18fdec7432e.png)



まず、負荷に流れる電流は、以下のように表すことができる。ただし、x,rは電源側のインダクタンスと抵抗とし定数とする。一方で、RとXは負荷側のインダクタンスと抵抗とし変数とする。

```math
\dot{I}(R,X)=\frac{E}{(r+R)+j(x+X)}
```

ゆえに、負荷側の消費電力は以下のように表すことができる。

```math
P(R,X)=I^2(R,X) R=\frac{R}{(r+R)^2+(x+X)^2}E^2
```

ここで、Xはインダクタンスよりコンデンサの場合は負をとることもあるので実数全体をとる。
ゆえに、

```math
P(R,X)=I^2(R,X) R=\frac{R}{(r+R)^2+(x+X)^2}E^2\le\frac{R}{(r+R)^2}E^2  
```
ただし、等号成立は$x+X=0$つまり、$X=-x$のときである。

一方で、Rは抵抗より正の値をとることから、以下のことが分かる。

```math
P(R,X=-x)=\frac{R}{(r+R)^2}E=\frac{R}{r^2+2rR+R^2}E=\frac{1}{(\frac{r^2}{R}+R)+2r}E\le \frac{E^2}{4r}
```
ただし、等号成立は$R=r$のときで、相加・相乗平均の定理を用いた。

ゆえに、交流回路の場合は電源側と負荷側のインピーダンスが共役の関係にあるときに負荷が取り出すことのできる電力が最大になる。

# プログラム
さて、このことについてプログラムを用いて示してみよう。
以下のようなプログラムを書く。

```python　max_p_3d.py
import matplotlib.pyplot as plt
import numpy as np
import japanize_matplotlib
fig = plt.figure()
ax = fig.add_subplot(projection='3d')

#初期条件

E=10.0

r=10
X0=10

# 変数
R = np.arange(0, 100, 0.1)
X = np.arange(-100, 100, 0.1)

# 格子状の点を作成
R1,X1 = np.meshgrid(R, X)


#系統側のインピーダンス
Z_0=r+1j*X0
#負荷側のインピーダンス
Z=R1+1j*X1

I = E/(Z_0+Z)

V=Z*I

S=V*I.conjugate()
#もしくはP＝R1*|I|^2
P=S.real


ax.set_xlabel("R")
ax.set_ylabel("X")
ax.set_zlabel("負荷側の消費電力P")


ax.plot_surface(R1,X1,P, cmap='jet')
plt.show()
```

これを実行すると以下のような画像が出力される。

![max_p_3d.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1686019/7f40f1fe-263a-844f-6678-058c454b32ff.png)

このように、電源側（系統側）のインピーダンスと負荷側のインピーダンスが共役の関係になったとき負荷側の消費電力が最大になる。

一方で、コンター図で表すプログラムを書くと以下のようになる。

```python max_p_con.py
import matplotlib.pyplot as plt
import numpy as np
import japanize_matplotlib


#初期条件

E=10.0

r=10
X0=10

# 変数
R = np.arange(0, 100, 0.1)
X = np.arange(-100, 100, 0.1)

# 格子状の点を作成
R1,X1 = np.meshgrid(R, X)


#系統側のインピーダンス
Z_0=r+1j*X0
#負荷側のインピーダンス
Z=R1+1j*X1

I = E/(Z_0+Z)

V=Z*I

S=V*I.conjugate()
#もしくはP＝R1*|I|^2
P=S.real


plt.xlabel("R")
plt.ylabel("X")

plt.contourf(R1,X1,P, cmap='jet')
plt.colorbar(label="負荷側の消費電力P")

plt.show()
```

このような画像が出力されるはずである。

![max_min_con.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1686019/f9965312-0157-ef59-39dd-a5bb4136e556.png)

# ノーズカーブ
送電可能な有効電力の最大値はノーズカーブを用いても求められるはずである。そこで以下のようなプログラムを組んだ。ただし、今回は$X>0$とした。

```python nose_curve_inductor_angle.py
import matplotlib.pyplot as plt
import numpy as np
import japanize_matplotlib
import math


#初期条件

E=10.0
#変更点1
r=1
X0=1


n=2000
# 変数
R = np.linspace(0,200,n)
#変更点2
X = np.linspace(0,200,n)

# 格子状の点を作成
R1,X1 = np.meshgrid(R, X)


#系統側のインピーダンス
Z_0=r+1j*X0
#負荷側のインピーダンス
Z=R1+1j*X1

I = E/(Z_0+Z)

V=Z*I

S=V*I.conjugate()
#もしくはP＝R1*|I|^2
P=S.real


plt.xlabel("P")
plt.ylabel("V")

plt.contourf(P,abs(V),np.angle(Z)*180/math.pi, cmap='jet')
plt.colorbar(label="負荷側のインピーダンス位相角")
plt.savefig("nose_curve_inductor_angle.png")
plt.show()

```

これを実行すると以下のようなグラフが出力される。

![nose_curve_inductor_angle.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1686019/03836ec1-c968-18ec-4947-bc5194206734.png)

確かに、負荷のインピーダンス位相角が変化するごとに、系統残帯の力率が変化するので、送電可能電力が変化することが分かる。ただし、今回はインダクタンス負荷の場合のみで調査したので最大電力は得られなかった。





# まとめ
今回は、交流回路における電力最大化問題について扱った。結果、電源側のインピーダンスと負荷側のインピーダンスが共役になったとき、取り出せる電力は最大になり、そのとき以外ではあまり電力を取り出すことができないということがわかった。また、これらの情報を上手く活用することによってノーズカーブも描写することができるということも分かった。したがって、効率よく電力を取り出すためには負荷側と電源側のインピーダンスを適切にすることが大事である。

# 参考文献
https://amzn.asia/d/hg8okev