美文网首页
为什么球形导体内的电场是零

为什么球形导体内的电场是零

作者: Python_Camp | 来源:发表于2022-06-19 17:01 被阅读0次

为什么球形导体内的电场是零?

照片。Rhett Allain
在物理学入门课程中介绍电场时,第一件事就是计算点电荷引起的电场。但有谁真正见过一个点电荷呢?我的意思是,当然--电子会是一个点电荷,但你不能真正看到它。

大多数教科书继续介绍宏观物体,如带有多余电荷的固体金属(导电)球体。对于一个导电球体,以下情况应该是真实的。

额外的电荷将均匀地分布在球体的表面(在没有外部电场的情况下)。
导体内部的净电场将是零(零矢量)。
导体外的电场与位于球体中心的导体的总多余电荷的点电荷值相同。
好吧,我打算跳过第一点,只是假设它是真的(但这里有一个超级棒的帖子,显示了自由电荷如何在表面上结束--我想用python重现这些计算)。

但是另外两点呢?你如何证明导体内部的电场是零?那外面呢?下面是我要做的事情。我将用2000个点电荷建立一个球形导体的模型,这些点电荷大多均匀地分布在球体的表面。由此,我可以计算出我选择的任何位置的总电场(由于所有2000个点)。

点电荷产生的电场

假设我在某个位置(r1)有一个单点电荷,我想找到某个观察位置(ro)的电场。这里有一个图。

如果我知道q1(电荷)和观察地点的矢量位置,那么我可以找到从电荷到观察地点的矢量r。有了这个,我就可以计算出电场(仅仅由于那一个点):。

是的,你需要找到矢量r的大小和r方向的一个单位矢量(r-hat)。

但是2000个点电荷呢?这只是同样的事情(但你必须做2000次)。我只需要做所有这些点。

球体上的蒙特卡洛点

蒙特卡洛计算的想法是使用随机数来产生某种类型的计算。我不打算做2000个均匀分布的点,而只是做2000个随机的点。如果这些点是以正确的随机方式创建的,它们应该大部分是均匀的--大部分。

让我们从半径为0.1米、总电荷为1纳库仑的球体开始。你如何将这些电荷分散在仅仅是表面的地方呢?这里有一些选择。

使用球面坐标生成两个角度--θ和φ来绘制所有的点。这里的问题是,θ的范围是φ的两倍。我的意思是,你可以让这个工作,但有另一种方法。
使用软轴坐标。在这种情况下,我可以为点电荷的x、y、z生成三个随机值,只要确保它在球体的表面就可以了。这是我要使用的方法。
如何在python中生成一个随机的笛卡尔点?在这种情况下,我将使用Glowscript / VPython。这是一个已经加载了一些东西的python版本。特别是,它有一个内置的向量类,以及创建3维视觉对象的能力。这是非常棒的。因此,以下所有的代码都是使用Glowscript。

它有一个内置的随机数函数。它看起来像这样。

x = random()
但我想在-0.1和0.1之间创建一个X值(这将是我的半径为0.1米的球体的空间)。我可以用下面的方法来做。

x = 0.1(2random()-1)
最大的值将是随机()返回1的时候。在这种情况下,你会有0.1(2*1-1) = 0.1。随机()的最小值将是0,这意味着你有0.1(0-1)=-0.1。看吧。它是有效的。

下面是我将如何在一个立方体中生成2000个点,从-0.1到0.1。是的,我知道这不是一个球体--请稍等。这里是代码(也在网上)。

一些评论。

第3-7行只是常数。N是点的总数,n是一个计数器。
第9行:这创建了一个空列表。当我创建一个新的点电荷时,我将把它添加到列表中(见第13行)。
第10行:这是一个循环,经过n = 1999(它从n = 0开始)。
第12行:这是一个三维的随机矢量,其x、y、z分量在-R和R之间。
下面是输出结果的样子。我把它做成了GIF,因为它实在是超级棒。

但是,我如何将其放入球体的外壳中呢?答案是:把不在球体表面的东西剪掉。好吧,我需要比 "表面上 "多一点。比方说,表面实际上是一个半径为0.01倍的球体的外壳。所以,我打算这样做。

生成一个与上面的立方体相同的随机向量。
如果该点的位置与原点的距离为+/- 0.01*R/2(外壳厚度的一半),那么我将制作它并将其添加到电荷列表中。
否则,我就做一个新的随机矢量(但不增加n的值--如果点在表面上,只增加计数)。
实际上,我只需要修改上面的部分代码,使其包括while循环中的这个代码块。

r=Rvector(2random()-1,2random()-1,2random()-1)
如果mag(r)>=(R-Rthick/2)并且mag(r)<=(R+Rthick/2)。
charges=charges+[sphere(pos=r, radius=0.001,q=Q/N)] 。

n=n+1

轰隆隆。这里是球体 "表面 "上的2000个点。

是的,它看起来像《星球大战4》中死星的动画。这只是一个奖励。

计算2000个点的电场

让我们直接开始吧。现在我只需要把这两件事放在一起。首先,在球体表面创建2000个点。第二,找出所有这些点所产生的总电场。

有一件事会让这变得更容易,那就是使用函数。哦,你不熟悉python中的函数?这里有一个快速的教程给你。

就这样,我有了下面的代码。我将对一些重要的行给出一些评论。

到第21行为止的所有内容都是旧的。没有评论。
第25行:这是一个计算电场在位置robs(代表r-观察)的值的函数。
第26行:注意,我一开始就用Et=矢量(0,0,0)。这就是总电场。它必须从零开始,然后我为每个电荷添加它。
norm(rt)返回rt方向的单位向量,mag(rt)是向量rt的大小。
在这个例子中,我使用了x轴上0.3米的观察位置(在球体外。这样,我既可以计算蒙特卡洛版本的电场,也可以计算理论值(假设所有电荷都在球体中心的一个点上)。

我的意思是,这显然是可行的,而且是一种很好的方式。是的,它是随机的,所以如果你再次运行它,你应该得到一个稍微不同的数字。

电场的内部和外部

让我们回到最初的想法--球体内部的电场应该是零(零矢量),外部的电场应该看起来像点电荷引起的电场。

因此,我打算这样做。我将从球体中心的一个观察点开始,计算电场的蒙特卡洛值。然后,我将移动观察位置,再做一次,直到我非常接近球体的边缘。我不想穿过球体,因为很有可能我的观察位置超级接近一个随机电荷。这将使电场变得巨大(而且不现实)。

然后我就可以在球体外接上我的计算。因为这应该看起来像点电荷引起的电场(理论值)。下面是这个图的样子。哦,由于电场是一个矢量,我只是绘制了电场的大小。

请注意,在 "内部",电场并不完全是零--但它非常接近。在球体外,蒙特卡洛电场与理论电场非常接近。所以,我想这整个事情的效果足够好。这是个胜利。

这是因为上限函数是用来向上取整的,即向正无穷大取整,而下限函数是用来向下取整的,即向负无穷大取整。

有趣的是,python有表达无穷大和无穷小的办法。有截断函数是用来向上或向下四舍五入到零的。

截断函数的示意图:

Python中的截断

trunc.png

在Python中,有许多内置模块。在这些模块中,有一个有趣的模块被称为数学模块,其中有几个函数,如ceil, floor, truncate, factorial, fabs, 等等。

在这些函数中,有一个有趣的函数叫截断,它对负数表现为上限函数,对正数表现为下限函数。

下面显示数值计算解放学生的时间,不必为算术运算精度等细节耗费精神,精力专注在更高级的思维探索。

import math

print (math.floor(3.5)) # floor
print (math.trunc(3.5)) # work as floor
print (math.ceil(3.5))  # ceil
3
3
4

print(math.pi)
print (math.floor(math.pi)) # floor
print (math.trunc(math.pi)) # work as floor
print (math.ceil(math.pi))  # ceil
3.141592653589793
3
3
4


# Python program to show output of floor(), ceil()
# truncate() for a negative number.
import math
print (math.floor(-3.5)) # floor
print (math.trunc(-3.5)) # work as ceil
print (math.ceil(-3.5))  # ceil
-4
-3
-3

再譬如,处理物理单位换算中,编码的效率,特别是处理大量数据时显示惊人的效率

两个运动的物体A和B在同一个轨道上运动(这些物体可以是任何东西:两颗行星,两颗卫星,两艘宇宙飞船,两个飞碟,或者如果你愿意的话,蜘蛛侠与蝙蝠侠)。如果这两个物体从同一点开始移动,并且轨道是圆形的,那么写一个函数,给出这两个物体再次相遇的时间,给定物体A和B通过一个完整的轨道所需的时间,分别为Ta和Tb,以及轨道的半径r。

该函数将返回一个字符串,给出时间,用两个小数点表示。Ta和Tb的计量单位相同,所以你不应该在解决方案中期待它。

def meeting_time(Ta, Tb, r):
    if Ta == 0:
        return "{:.2f}".format(abs(Tb))
    elif Tb == 0:
        return "{:.2f}".format(abs(Ta))
    else:
        return "{:.2f}".format(abs(Ta * Tb / (Tb - Ta)))

提示:使用角速度 "w "而不是经典的 "u"。
基本物理学算法

学习数据科学的人都应该知道的6种机器学习算法
用简单的英语解释机器学习算法

图片来源于Shutterstock,授权给Frank Andrade
机器学习是任何学习数据科学的人都应该知道的领域之一。如果你是数据科学的新手,你可能一定听说过 "算法 "或 "模型 "这些词,但不知道它们与机器学习有什么关系。

机器学习算法分为有监督的和无监督的。

有监督的学习算法对标记的输入和输出数据(又称目标)之间的关系进行建模。然后,这个模型被用来预测使用新标记的输入数据的新观察值的标签。如果目标变量是离散的,我们处理的是一个分类问题,而如果目标变量是连续的,我们处理的是一个回归问题。

相比之下,无监督学习并不依赖标记的输入/输出数据,而是处理未标记的数据。

图片由作者在Canva上制作
这里有6种监督学习算法,任何学习数据科学的人都应该知道。

  1. 1.线性回归
    线性回归是机器学习中使用的最简单的算法。这种算法用于对两个或多个变量之间的关系进行建模。有两种类型的线性回归--简单线性回归和多重线性回归。

在简单线性回归中,有一个自变量和一个因变量,而在多元线性回归中,有多个自变量和一个因变量。

下面是多元线性回归的方程式。

其中y是因变量(目标值),x1,x2,...xn是自变量(预测因子),b0是截距,b1,b2,...bn是系数,n是观察值的数量。

在下面的图片中,你会看到一个简化版的线性回归方程。

图片由作者提供
正如你在上图中所看到的,有一个线性关系,所以如果一个变量增加或减少,其他变量也会增加或减少。

我们可以用线性回归来预测分数、工资、房价等。也就是说,预测的准确性并不像你用其他算法得到的那样好。

  1. SVM
    支持向量机(SVM)是一种监督下的学习算法,主要用于分类问题。我们通常给SVM模型提供标记的训练数据来对新文本进行分类。

当我们的样本数量有限且速度优先时,SVM是一个不错的选择。这就是为什么当我们在文本分类中处理有几千个标记样本的数据集时,会使用它。

为了更好地理解SVM的工作原理,让我们看一个例子。

在下面的图片中,我们有两个标签(绿色和黄色)和两个特征(x和y)。假设我们想建立一个分类器,找出我们的文本数据是绿色还是黄色。如果是这样的话,我们会在一个n维空间中绘制每个观察值(又称数据点),其中 "n "是所使用的特征的数量。

我们只有两个特征,所以观察结果被绘制在二维空间,如下图所示。

图片由作者提供
SVM获取数据点,并制作一个超平面,以最好的方式将各类分开。由于观察结果是在二维空间中绘制的,所以超平面是一条线。

图片由作者提供
这条红线也被称为决策边界。决策边界决定了一个数据点是属于一个类还是属于另一个类。在我们的例子中,如果数据点落在左边,它将被归为绿色,而如果它落在右边,它将被归为黄色。

  1. 决策树
    如果你对机器学习一无所知,你可能还知道决策树。

决策树是一种用于规划、统计和机器学习的模型,它使用决策/后果的树状结构来评估一个特定问题中涉及的可能事件。

下面是一棵决策树,它评估了人们想要踢足球的场景。

源于此。维基共享资源
每个方块被称为一个节点。决策树的最后一个节点被称为树的叶子。为了进行预测,我们从树的根(第一个节点)开始。决策树中的每个节点都将被评估。然后我们沿着与评估结果一致的分支,跳到下一个节点。

决策树算法可用于解决回归和分类问题。我们使用决策树来建立一个模型,通过学习从训练数据中推断出的决策树规则来预测目标变量的类别或数值。

  1. 随机森林
    随机森林是许多决策树的集合体。它结合了决策树的简单性和灵活性,从而提高了准确性。

为了制作随机森林,首先,我们需要创建一个 "自举 "数据集。引导是指从原始数据中随机选择样本(我们甚至可以不止一次地选择相同的样本)。然后,我们使用boo
要制作随机森林,首先,我们需要创建一个 "自举 "的数据集。引导是指从原始数据中随机选择样本(我们甚至可以不止一次地选择相同的样本)。然后,我们使用引导的数据集来创建一棵决策树。

维基共享资源
这种方法被称为 "装袋"。如果我们多次重复前面的步骤,我们就会得到大量的树。这种树的多样性是使随机森林比单一决策树更有效的原因。

维基共享资源
如果随机森林被用于分类任务,模型会选择每个决策树的预测模式。对于回归任务,该模型选择决策树结果的平均值。

  1. 5.Naive Bayes
    Naive Bayes是一种监督学习算法,使用条件概率来预测一个类别。

天真贝叶斯算法是基于贝叶斯定理的。

p(A|B)。鉴于事件B已经发生,事件A的概率
p(B|A)。鉴于事件A已经发生,事件B的概率
p(A): 事件A的概率
p(B): 事件B的概率
Naive Bayes假设每个特征都是相互独立的,这并不总是如此,所以我们在选择这种算法之前应该检查我们的数据。

假设特征是相互独立的,这使得Naive Bayes与更复杂的算法相比速度更快;但是,它也使得这个算法的准确性降低。

我们可以用Naive Bayes来预测天气预报、欺诈检测等。

  1. Logistic回归
    Logistic回归是一种监督学习算法,通常用于二进制分类问题。这意味着我们可以使用逻辑回归来预测一个客户是否会流失,以及发现一个邮件是否是垃圾邮件。

逻辑回归是基于logistic函数(又称sigmoid函数),它接收一个值,并在0和1之间分配一个概率。

下面是逻辑回归的图表。

为了更好地理解逻辑回归的工作原理,考虑一个场景,我们需要对一封邮件是否是垃圾邮件进行分类。

在图中,如果Z上升到无穷大,Y(我们的目标值)将变成1,这意味着该邮件是垃圾邮件。然而,如果Z上升到负无穷大,Y将变成0,这意味着该邮件不是垃圾邮件。

输出值是一个概率,所以如果我们得到一个0.64的值,这意味着有64%的机会,一封电子邮件将是垃圾邮件。

相关文章

网友评论

      本文标题:为什么球形导体内的电场是零

      本文链接:https://www.haomeiwen.com/subject/iturvrtx.html