基本磁场计算公式的简单推导

作者:卓晴博士,清华大学自动化系
更新时间:2020-09-25 Friday
 

对于导线周围的磁场分布,可以从比奥-萨伐尔(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πμ0r3Idl ×r =4πμ0r2Idlsinθ

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πμ0r2Idl×e r

其中 I I I是源电流, L L L是积分路径。 d l dl dl是源电流危险线元素, e ⃗ r \vec e_r e r是电流元到待求场点的单位向量。

μ 0 = 4 π × 1 0 − 7 T m / A \mu _0 = 4\pi \times 10^{ - 7} Tm/A μ0=4π×107Tm/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πμ0Icb(y2+a2)sinθdy=4πμ0Icb(y2+a2)y2+a2 ady = μ 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πμ0Iacb(y2+a2)23dy=4πμ0Iaa31+a2y2 ycb

其中对于: ∫ 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θ1cosθ2)

(2) 推导方法2

根据: y = − a ⋅ cos ⁡ θ sin ⁡ θ y = - a \cdot {{\cos \theta } \over {\sin \theta }} y=asinθ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 =r2dysinθ=(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πμ0cbr3dy ×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 =IRdθ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πμ002πR3IRdθ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π×107

直接根据公式: 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θ1cosθ2)
可以得到: B = 1.20711 × 1 0 − 7 B = 1.20711 \times 10^{ - 7} B=1.20711×107

利用数据进行求解:
c = − a ⋅ c t g ( π 4 ) = − 1 c = - a \cdot ctg\left( {{\pi \over 4}} \right) = - 1 c=actg(4π)=1
b = − a ⋅ c t g ( 2 π 4 ) = 0.57735 b = - a \cdot ctg\left( {{{2\pi } \over 4}} \right) = 0.57735 b=actg(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πμ0Icb(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×107

对比上述结果可以看到结果是非常接近的。


 
■ 相关文献链接:

©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页