对于导线周围的磁场分布,可以从比奥-萨伐尔(Biot-Savart)定理出发,推导出任意电流导线、或者导体周围的磁感应强度。讨论这个问题主要是为了能够对 电磁炉中的螺旋线圈 周围测磁场进行数值分析研究。
00基础理论
1.毕奥-萨伐尔定律
毕奥-萨伐尔定理(Biot-Savart Law): 电流元 I d l ⃗ Id\vec l Idl在空间某点P处产生的磁感应强度 d B ⃗ d\vec B dB的大小与电流元 I d l ⃗ Id\vec l Idl的大小成正比,与电流元 I d l ⃗ Id\vec l Idl所在处到P点的位置矢量和电流元 I d l ⃗ Id\vec l Idl之间的夹角的正弦成正比,而与电流元 I d l ⃗ Id\vec l Idl到P点的距离的平方成反比。
d B ⃗ = μ 0 4 π ⋅ I d l ⃗ × r ⃗ r 3 = μ 0 4 π ⋅ I d l ⋅ sin θ r 2 d\vec B = {{\mu _0 } \over {4\pi }} \cdot {{Id\vec l \times \vec r} \over {r^3 }} = {{\mu _0 } \over {4\pi }} \cdot {{Idl \cdot \sin \theta } \over {r^2 }} dB=4πμ0⋅r3Idl×r=4πμ0⋅r2Idl⋅sinθ
B ⃗ = ∫ L μ 0 4 π ⋅ I d l × e ⃗ r r 2 \vec B = \int_L^{} {{{\mu _0 } \over {4\pi }} \cdot {{Idl \times \vec e_r } \over {r^2 }}} B=∫L4πμ0⋅r2Idl×er
其中 I I I是源电流, L L L是积分路径。 d l dl dl是源电流危险线元素, e ⃗ r \vec e_r er是电流元到待求场点的单位向量。
μ 0 = 4 π × 1 0 − 7 T m / A \mu _0 = 4\pi \times 10^{ - 7} Tm/A μ0=4π×10−7Tm/A是真空磁导率值。
▲ 毕奥-萨伐尔定律
01基本磁场推导
2.直线导线所产生的磁场
下面是非常常见到的磁场计算公式推导。如果在一段有限长直线电流旁边P点,距离直线电流直线距离为a,计算P点出的磁感应场强B。
(1) 推导方法1
建立如下的坐标系 O x y Oxy Oxy。那么直线上的电流元就是 I d y Idy Idy。那么根据Biot-Savart定理,P点的磁场为:
▲ 有限长直线旁边的磁场
B P = μ 0 I 4 π ∫ c b sin θ ( y 2 + a 2 ) d y = μ 0 I 4 π ∫ c b a y 2 + a 2 ( y 2 + a 2 ) d y B_P = {{\mu _0 I} \over {4\pi }}\int_c^b {{{\sin \theta } \over {\left( {y^2 + a^2 } \right)}}dy} = {{\mu _0 I} \over {4\pi }}\int_c^b {{{{a \over {\sqrt {y^2 + a^2 } }}} \over {\left( {y^2 + a^2 } \right)}}dy} BP=4πμ0I∫cb(y2+a2)sinθdy=4πμ0I∫cb(y2+a2)y2+a2ady = μ 0 I ⋅ a 4 π ∫ c b d y ( y 2 + a 2 ) 3 2 = μ 0 I ⋅ a 4 π ⋅ y a 3 1 + y 2 a 2 ∣ c b = {{\mu _0 I \cdot a} \over {4\pi }}\int_c^b {{{dy} \over {\left( {y^2 + a^2 } \right)^{{3 \over 2}} }}} = {{\mu _0 I \cdot a} \over {4\pi }} \cdot \left. {{y \over {a^3 \sqrt {1 + {{y^2 } \over {a^2 }}} }}} \right|_c^b =4πμ0I⋅a∫cb(y2+a2)23dy=4πμ0I⋅a⋅a31+a2y2y∣∣∣∣∣∣cb
其中对于:
∫
c
b
d
y
(
y
2
+
a
2
)
3
2
\int_c^b {{{dy} \over {\left( {y^2 + a^2 } \right)^{{3 \over 2}} }}}
∫cb(y2+a2)23dy
的积分,使用simpy库函数进行推导。
#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# TEST1.PY -- by Dr. ZhuoQing 2020-09-25
#
# Note:
#============================================================
from headm import *
from sympy import symbols,Integral, oo, exp, integrate
from sympy import print_latex, sin, sqrt
x, y, a= symbols('x, y, a')
ixs = integrate(1/(x**2+a**2)/sqrt(x**2+a**2), x)
#------------------------------------------------------------
print_latex(ixs)
tspec('msg2latex')
#------------------------------------------------------------
# END OF FILE : TEST1.PY
#============================================================
将b,c的值代入上述可以得到:
B
p
=
μ
0
I
4
π
a
(
cos
θ
1
−
cos
θ
2
)
B_p = {{\mu _0 I} \over {4\pi a}}\left( {\cos \theta _1 - \cos \theta _2 } \right)
Bp=4πaμ0I(cosθ1−cosθ2)
(2) 推导方法2
根据:
y
=
−
a
⋅
cos
θ
sin
θ
y = - a \cdot {{\cos \theta } \over {\sin \theta }}
y=−a⋅sinθcosθ
那么对于上式两边同时进行微分:
d
y
=
d
(
−
a
cos
θ
sin
θ
)
=
a
sin
2
θ
d
θ
dy = d\left( { - a{{\cos \theta } \over {\sin \theta }}} \right) = {a \over {\sin ^2 \theta }}d\theta
dy=d(−asinθcosθ)=sin2θadθ
这其中应用到:
d
(
cos
θ
sin
θ
)
=
−
(
1
+
cos
2
θ
sin
2
θ
)
=
−
1
sin
2
θ
d\left( {{{\cos \theta } \over {\sin \theta }}} \right) = - \left( {1 + {{\cos ^2 \theta } \over {\sin ^2 \theta }}} \right) = {{ - 1} \over {\sin ^2 \theta }}
d(sinθcosθ)=−(1+sin2θcos2θ)=sin2θ−1
#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# TEST1.PY -- by Dr. ZhuoQing 2020-09-25
#
# Note:
#============================================================
from headm import *
from sympy import symbols,Integral, oo, exp, integrate
from sympy import print_latex, sin, cos, sqrt, diff
x, y, a= symbols('x, y, a')
ixs = diff(cos(x)/sin(x),x)
#------------------------------------------------------------
print_latex(ixs)
tspec('msg2latex')
#------------------------------------------------------------
# END OF FILE : TEST1.PY
#============================================================
那么,由Biot-Savart定理:
d y ⃗ × r ⃗ r 3 = d y ⋅ sin θ r 2 = a sin 2 θ d θ ⋅ sin θ ( a sin θ ) 2 = sin θ d θ a {{d\vec y \times \vec r} \over {r^3 }} = {{dy \cdot \sin \theta } \over {r^2 }} = {{{a \over {\sin ^2 \theta }}d\theta \cdot \sin \theta } \over {\left( {{a \over {\sin \theta }}} \right)^2 }} = {{\sin \theta d\theta } \over a} r3dy×r=r2dy⋅sinθ=(sinθa)2sin2θadθ⋅sinθ=asinθdθ
最终积分式变为:
μ
0
4
π
∫
c
b
d
y
⃗
×
r
⃗
r
3
=
μ
0
I
4
π
a
∫
θ
1
θ
2
sin
θ
d
θ
{{\mu _0 } \over {4\pi }}\int_c^b {{{d\vec y \times \vec r} \over {r^3 }}} = {{\mu _0 I} \over {4\pi a}}\int_{\theta _1 }^{\theta _2 } {\sin \theta d\theta }
4πμ0∫cbr3dy×r=4πaμ0I∫θ1θ2sinθdθ
最终可以得到与上式相同的表达式。
3.圆环的磁场
电流元可以表示为:
d
l
=
R
d
θ
dl = Rd\theta
dl=Rdθ
I d l ⃗ × r ⃗ = I ⋅ R d θ ⋅ R Id\vec l \times \vec r = I \cdot Rd\theta \cdot R Idl×r=I⋅Rdθ⋅R
那么积分: B 0 = μ 0 4 π ∫ 0 2 π I ⋅ R d θ ⋅ R R 3 = μ 0 I 2 R B_0 = {{\mu _0 } \over {4\pi }}\int_0^{2\pi } {{{I \cdot Rd\theta \cdot R} \over {R^3 }}} = {{\mu _0 I} \over {2R}} B0=4πμ0∫02πR3I⋅Rdθ⋅R=2Rμ0I
▲ 圆环磁场
02结论
利用基本的Biot-Savart定理,可以得到基本的直线和圆环磁场强度的解析解。那么对于一些复杂的曲线的推导就会非常复杂,具体的结果需要通过数值求解来完成。
可以利用在 Laplace数值逆运算的讨论 给出的一些Python语言实现的数值积分来完成求解。
比如利用下面的梯形数值积分来验证一下直线磁场计算数值解。
def trapz(f, a, b, N=50):
x = linspace(a, b, N+1)
y = f(x)
y_right = y[1:]
y_left = y[:-1]
dx = (b-a) / N
T = dx/2 * sum(y_right + y_left)
return T
1.对于直线磁场数值求解
假设具体的参数为:
a
=
1
,
θ
1
=
π
4
,
θ
2
=
2
π
3
a = 1,\theta _1 = {\pi \over 4},\theta _2 = {2\pi \over 3}
a=1,θ1=4π,θ2=32π
I
=
1
,
μ
0
=
4
π
×
1
0
−
7
I = 1,\,\,\mu _0 = 4\pi \times 10^{ - 7}
I=1,μ0=4π×10−7
直接根据公式:
B
=
μ
0
I
4
π
a
(
cos
θ
1
−
cos
θ
2
)
B = {{\mu _0 I} \over {4\pi a}}\left( {\cos \theta _1 - \cos \theta _2 } \right)
B=4πaμ0I(cosθ1−cosθ2)
可以得到:
B
=
1.20711
×
1
0
−
7
B = 1.20711 \times 10^{ - 7}
B=1.20711×10−7
利用数据进行求解:
c
=
−
a
⋅
c
t
g
(
π
4
)
=
−
1
c = - a \cdot ctg\left( {{\pi \over 4}} \right) = - 1
c=−a⋅ctg(4π)=−1
b
=
−
a
⋅
c
t
g
(
2
π
4
)
=
0.57735
b = - a \cdot ctg\left( {{{2\pi } \over 4}} \right) = 0.57735
b=−a⋅ctg(42π)=0.57735
B = μ 0 ⋅ I 4 π ∫ c b a ( y 2 + a 2 ) 3 2 d y B = {{\mu _0 \cdot I} \over {4\pi }}\int_c^b {{a \over {\left( {y^2 + a^2 } \right)^{{3 \over 2}} }}dy} B=4πμ0⋅I∫cb(y2+a2)23ady
#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# TEST2.PY -- by Dr. ZhuoQing 2020-09-19
#
# Note:
#============================================================
from headm import *
def trapz(f, a, b, N=50):
x = linspace(a, b, N+1)
y = f(x)
y_right = y[1:]
y_left = y[:-1]
dx = (b-a) / N
T = dx/2 * sum(y_right + y_left)
return T
def f(x):
return 1/(x**2+1)**(3/2)
intr = trapz(f, -1, 0.57735, 100)
m0=4*pi*10**-7
result = m0*intr/4/pi
printf(result)
#------------------------------------------------------------
# END OF FILE : TEST2.PY
#============================================================
经过数值积分结果为:
B
=
1.207078
×
1
0
−
7
B = 1.207078 \times 10^{ - 7}
B=1.207078×10−7
对比上述结果可以看到结果是非常接近的。
■ 相关文献链接:
● 相关图表链接: