2025年10月25日

有限長の電流が作る磁場 なんちゅーて

無限長電流の磁場 H = I/(2πr)   磁場をBと書く場合にHはなにか?  となると磁気強度とか言うらしいが、ここではそういう流派はどうでもよくで有限長の場合に電流に沿っての電場はどうなるかを計算するでございますじゃよ。ビオ・サバールの数式を計算してグラフ化しませうぞよ。
長さは1m, 距離は0.1mとしますぞよ。

例によってチャッターズ(Copilot先生、Gemini先生、chatGPT-5先生)に聞くぞよ。先ずはCopilot先生の回答

# 有限導線に沿った方向の磁場分布を計算およびプロットするコード by Copilot 2025-10-25 09:24:19
import numpy as np
import matplotlib.pyplot as plt

I = 1.0       # 電流 [A]
L = 1.0       # 導線長 [m]
dl = 0.001    # 微小要素長 [m]
r = 0.1       # 垂直距離 [m]

x_wire = np.arange(-L/2, L/2, dl)  # 導線上の位置
z_obs = np.linspace(-0.5, 0.5, 500)  # 観測点のz座標

Hz = []
for z in z_obs:
    rx = -x_wire  # 観測点が原点にあると仮定
    ry = -r
     rz = z
    r_vec = np.stack([rx, np.full_like(rx, ry), np.full_like(rx, rz)], axis=1)
    r_mag = np.linalg.norm(r_vec, axis=1)
    dl_vec = np.array([dl, 0, 0])
    cross = np.cross(dl_vec, r_vec)
    Hz_val = (I / (4 * np.pi)) * np.sum(cross[:,2] / (r_mag**3))
    Hz.append(Hz_val)

plt.plot(z_obs, Hz)
plt.xlabel('z [m]')
plt.ylabel('Hz [A/m]')
plt.title('有限導線に沿った方向の磁場分布')
plt.grid(True)
plt.show()
# np.stack()とかnp.cross()とか使ってみたかっただけなんだが
print('======== End ====================')
image

直感どおり。棒の中心で最大になり端まで減少していくでございますじゃよ。
H = I/(2πr) = 1/(2*π*0.1) = 1.5915 なのであり、中央ではそのぐらいの数値になっているですねうでございますじゃよ。
 

ところでこれは正しいか。確かに中央で最大、端へ向かって減少する。ワタクシがwxMaximaで数式通りに計算したグラフとはどうも異なるのである。
そこでGemini先生の回答を試した。コードは略するがビオ・サバールの数式どおりの計算をしている。計算式は次のとおりでございますじゃよ。
imageimage


ワタクシがwxMaximaで計算した結果のグラフ
image


さてと、これからCopilot先生の回答は間違っていると思うのでございますじゃよ。

検討を始めるでございますじゃよ。ま~Copilot先生に訊きまくるだけだが(笑)

結果。Copilot先生が問題を正しく捉えていなかったことがわかったでございますじゃよ。

これで数式を単純に計算した場合とベクトル積を利用した計算が一致したのであります。まさとし まさとし ---- ちがーーう。 めでたし めでたし

ただ、数式通りの計算式では np.stack(), np.cross()など使わないのでね。やっぱ、方法は複数試すべしであるぞよ。

いろいろやるがいいさ だって にんげんだもの byニセみつほ

修正後のCopilot先生のグラフも載せますじゃよ
image

いじょでございますじゃよ。

posted by toinohni at 10:10| 東京 ☔| Comment(0) | 物理科学雑学 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
コチラをクリックしてください