请问,这个式子求导是什么


昨日的 《最美的公式: 你也能懂的麦克斯韦方程组(积分篇)》,让大家大呼过瘾,带着大家从零开始一步一步认识了麦克斯韦方程组积分形式。



今日份的这篇文章,就让我们就来看看它的微分形式。提醒:此文建议先收藏起来,谁知道什么时候又会急用呢?
积分篇里,我们一直在跟电场、磁场的通量打交道。我们任意画一个曲面,这个曲面可以是闭合的,也可以不是,然后我们让电场线、磁感线穿过这些曲面,它们就两两结合形成了四个积分形式的方程组。从这里我们能感觉到:麦克斯韦方程组的积分形式是从宏观角度来描述问题,这些曲面都是宏观可见的东西。那么微分形式呢?微分形式似乎应该从微观角度去看问题,那么我们要怎样把曲面通量这些宏观上的东西弄到微观里来呢?
一个很简单的想法就是:我让宏观上的东西缩小缩小,直到缩小成一个点,这样不就进入微观了么?积分形式的麦克斯韦方程组需要选定一个曲面,但是它并没有限定这个曲面的大小,我可以把这个曲面选得很大,也可以选得很小当你把这个曲面选得很小很小的时候,麦克斯韦方程组的积分形式就自然变成了微分形式。所以,微分形式的基本思想还是很简单的,它真正麻烦的地方是在于如何寻找一种方便的计算方式,这些我后面会细说。 因为微分形式和积分形式的这种承接关系,我建议大家尽量先看看积分篇的内容。在积分篇里,我是从零开始讲电磁学,讲麦克斯韦方程组,所以阅读起来不会有什么门槛。但是到了微分篇,上篇文章已经详细说了一些东西(诸如电场通量环流等概念)这里就不会再细说了。长尾君不会从天而降地抛出一个东西,如果在这篇文章里遇到了什么难以理解的东西,可以看看是不是在积分篇里已经说过了~ 积分篇里我跟大家讲过,麦克斯韦方程组总共有四个方程,分别描述了静电(高斯电场定律)、静磁(高斯磁场定律)、磁生电(法拉第定律)、电生磁(安培-麦克斯韦定律)。这四个方程各有积分微分两种形式,积分形式我们上篇已经说过了,微分形式我们还是按照顺序,也从静电开始。
01微分形式的静电积分篇里,我们是这样描述静电的:我在空间里任意画一个闭合曲面,那么通过闭合曲面的电场线的数量(电通量)就跟这个曲面包含的电荷量成正比。用公式表述就是这样:这就是积分形式的高斯电场定律:左边表示通过闭合曲面S的电通量E是电场强度,我们把面积为S的闭合曲面分割成许多小块,每一个小块用da表示,那么通过每一个小块面积的电通量就可以写成E·da。套上一个积分符号就表示把所有小块的电通量累加起来,这样就得到了通过整个闭合曲面S的电通量),右边那个带了enc下标的Q就表示闭合曲面包含的电荷量,ε0是个常数。这些内容我在积分篇里都详细说过了,这里不再多言。 下面是重点:因为这个闭合曲面S是可以任何选取的,它可以大可以小,可以是球面也可以是各种乱七八糟的闭合曲面。那么我们就不妨来学习一下孙悟空,变小变小再变小,我让这个闭合曲面也一直缩小缩小,缩小到无穷小,那么这时候高斯电场定律会变成什么样呢?这里会涉及一丢丢极限的概念,我们这样考虑:一个闭合曲面缩小到无穷小,其实就是它的表面积或者体积无限趋向于0。也就是说,我假设有一个球的体积为ΔV,然后让这个ΔV无限趋近于0,那这样就可以表示这个球缩小到无穷小了。用数学符号可以记成这样:Lim就是英文单词极限limit)的缩写,ΔV通过一个箭头指向0可以很形象的表示它无限趋近于0。有了这个极限的概念,我们就可以很自然的表示通过这个无穷小曲面的电通量了(直接在电通量的前面加个极限符号),这时候高斯电场定律就成了这样:这样,我们就把高斯电场定律宏观拉到了微观:方程的左边表示曲面缩小到无穷小时的电通量,方程的右边表示无穷小曲面包含的电荷量。但是,当曲面缩小到无穷小的时候,我们再使用电荷量Q就不合适了,所以我们改用电荷密度(符号为ρ)电荷密度,从名字里我们就能猜出它表示的是单位体积内包含电荷量的大小,所以它的表达式应该是用电荷量除以体积,即:ρ=Q/V。 所以,如果我们把微观的高斯电场定律左右两边都同时除以体积ΔV,那么右边的电荷量Q除以体积Δ就变成了电荷密度ρ,左边我们也再除以一个ΔV,那么公式就变成了下面这样:公式的右边除以一个体积ΔV,就成了电荷密度ρ除以真空介电常数ε0,那左边呢?左边原来是通过无穷小曲面的电通量,这玩意除以一个体积ΔV之后表示什么呢?这一长串的东西,我们给它取了个新名字:散度。 也就是说,电场E在一个点(被无穷小曲面围着的这个点)上的散度被定义为电场通过这个无穷小曲面的电通量除以体积散度的英文单词是divergence,所以我们通常就用div(E)表示电场E散度,即:所以,高斯电场定律微分形式就可以表示成这样:它告诉我们:电场在某点的散度跟该点的电荷密度成正比。 然后呢?然后微分篇的第一个方程就这样说完了?这只不过把高斯电场定律积分形式的曲面缩小到了无穷小,然后两边同时除了一个体积,右边凑出了一个电荷密度,左边巴拉巴拉凑出一大堆东西你告诉我这个新东西叫散度就完事了?不带这么玩的!那这个散度到底有什么物理意义?我要如何去计算具体的散度(你用无穷小通量去定义散度倒是好定义,但是这样计算可就麻烦了)?还有,很多人多多少少知道一些麦克斯韦方程组的样子,虽然不是很懂,那个倒三角符号▽倒还是记得的,你这公式里为什么没有▽符号呢?
02初入江湖的▽没错,我们用无穷小曲面的通量和体积的比值来定义散度,这样定义是为了突出它跟通量之间的联系,也方便大家从积分的思维自然的转化到微分的思维中来。但是,这种定义在具体计算的时候是没什么用的,我们不会通过去计算无穷小曲面的通量和体积的比值来计算一个点的散度,因为这样实在是太麻烦了我们有种更简单的方式来计算电场在某个点的散度,而这种方法,就会使用到我们熟悉的倒三角▽符号。 在这种新的表示方法里,电场E散度可以被写成这样:▽·E,所以我们就可以用这个东西替换掉方程左边div(E),那么麦克斯韦方程组第一个方程——描述静电高斯电场定律微分形式就可以写成这样:这样写的话,是不是就感觉熟悉多了?也就是说,同样是为了表示散度,我们用▽·E代替了代替了原来无穷小曲面通量和体积比值那么一大串的东西。而且这样还非常好计算,使用这种新的方式,你只要给出一个电场,我分分钟就可以把电场的散度写出来。这种倒三角▽符号,绝对是符号简化史上的奇迹。 所以,我接下来的工作,或者说理解麦克斯韦方程组的微分形式核心内容,就是要来告诉大家这个倒三角▽符号到底是什么意思,▽·(后面加了一个点)又是什么意思?为什么▽·E可以表示电场E的散度就?为什么▽·E跟我们前面散度的定义div(E)是等价的?也就是说:为什么上面的式子是相等的而且都可以用来表示电场E的散度? 这就是我在开篇说的:微分形式的基本思想还是很简单的,它真正麻烦的地方在于如何寻找一种方便计算的方式,这种方便的计算方式自然就是▽。那么我们接下来就先把电磁相关的物理内容搁置一旁,先一起来看一看这个传奇符号▽的前世今生,理解了它,你就理解了麦克斯韦方程组微分形式精髓
03从导数说起要理解▽,我们还是得先再来看一看这个衡量事物变化快慢的概念:导数。说“再”是因为我们在积分篇里已经讲过了:法拉第发现了电磁感应,发现变化的磁场能产生电场,而且磁场变化得越快,产生的电场越大。这里我们就需要这样一个量来描述磁场变化的快慢,只不过当时我们没有展开说。 我还是借用上篇身高的例子来看看我们是如何描述变化的快慢的。一个人在十二三岁的时候一年可以长10厘米,我们说他这时候长得;到了十七八岁的时候可能一年就只能长1厘米,我们就说他长得。也就是说,我们衡量一个量(这里就是身高,假设身高用y表示)变化快慢的方法是:给定一个变化的时间dt(比如一年,或者更小),看看这个量的变化Δy是多少,如果这个量的变化很大我们就说它变化得很快,反之则变化得慢。 在这里,我稍微解释一下Δydy的区别:如下图所示,我们假设函数在x轴上有一个增量Δx,这个用Δx或者dx表示都一样,两者相等。但是,这个在x轴上的变化带来的y轴上的变化就不一样了:Δy表示的是y轴实际的变化量,是我用前后两个不同的x对应的y值直接相减得到的真实结果;而dy则不是,dy是我们在M点做了一条切线,然后我用这条直线来代替曲线,当x轴上变化了Δx的时候这条直线上对应y上的变化


从这个图里我们可以看到:Δy的值是要比dy大一点点的,但是随着Δx或者dx的减小,它们的之间的差值会急速减小,比Δx减小的快得多,这个差值也是我们常说的高阶无穷小Δy叫做函数从一点到另一点的增量,而dy则被叫做函数的微分,或者叫它的线性主部“以直(dy)代曲(Δy)”是现代微积分的一个核心思想,从这个图里可见一斑。
在微积分刚创立的时候,莱布尼茨dx看作一个接近0但又不等于0的无穷小量,这种“朴素”的思维很符合直觉,而且用这种思想来计算也没什么错,但是它的基础是非常不牢固的。正是这种幽灵般的无穷小量dx时而可以看作是0,时而可以当除数约分)导致了第二次数学危机,数学家们经过一个多世纪的抢救才给微积分找到了一个坚实的地基:极限理论


这段内容不是太理解没关系,只要知道我们可以用dy/dx表示函数在M点的导数(在这里就是切线的斜率),可以用它来表示图像在这里变化的快慢就行了。
再回到人的身高随年龄变化的这个例子里来。人在各个年龄t都会对应一个身高y,这每个(t,y)就对应了图上的一个点,把这些点全都连起来大致就能得到这样一个图:在导数dy/dt大的地方,图形里的斜率很大,通俗的说就是曲线很陡峭;而导数很小的地方,对应的曲线就很平缓。 在这个例子里,身高y是随着年龄t变化而变化,也就是说给定任何一个t的值,都有一个y的值跟它对应,我们就可以说身高y是一个关于年龄t的函数function),记做y=f(t)。这个f自然就是函数的英文单词function的缩写,函数就是这样一种对应(映射)关系。在这里,身高y的值只跟年龄t一个变量相关,我们就说这是一个一元函数。但是,如果我们的问题稍微复杂一些,我的某个量不止跟一个量有关,而是跟多个量有关呢?
04多个变量的偏导数比如山的高度,一座山在不同点的高度是不一样的,而在地面上确定一个点的位置需要经度和纬度两个信息。或者,你可以自己在地面上建立一个坐标系,然后地面上每一个点都可以用(x,y)来表示。因为每一个位置(x,y)都对应了那个地方山的高度z,那么z就成了一个关于x和y的函数,记做z=f(x,y)。因为山的高度z需要两个变量x和y才能确定,所以我们说z=f(x,y)是一个二元函数。 再例如,我房间的每一个点都有一个温度,所以房间的温度T是一个关于房间内空间点的函数,而房间里每一个点的位置需要长宽高三个变量(x,y,z)才能确定。所以,我房间里的温度T是一个关于x,y,z的三元函数,记做T=f(x,y,z)。 我们再来回过头来看看导数,在一元函数y=f(t)里,我们用dy/dt来表示这个函数的导数,导数越大的地方曲线变化得越快。因为一元函数的图像是一条曲线,曲线上的一个点只有一个方向(要么往前,要么往后,反正都是沿着x轴方向),所以我们可以直接用dy/dt表示函数变化得有多快。但是,如果这个函数不是一元函数,而是二元、三元等多元函数呢?比如山的高度z是关于位置x,y二元函数z=f(x,y),这时候地面上的每一个点(x,y)都对应一个值,它的函数图像就是一个曲面(如山的表面),而不再是一条曲线。而曲面上的每一个点有无数个方向(前后左右360°都可以),x和y只是这无数方向中的两个,那我们要如何把握这无数个方向上的高度变化快慢呢? 当然,我们不可能把这无数个方向都一一找出来,也没这个必要。一个平面上有无数个点,但是我只用x和y这两个方向组成的(x,y)就可以表示所有的点。同样的,虽然在函数曲面上的一点有无数个方向,不同方向函数变化的快慢都不一样的,但是我们只要把握了其中的两个,就能把握很多信息。 那么我们要如何表示函数z沿着x轴方向变化的快慢呢?直接用dz/dx么?好像不太对,因为我们的z是一个关于x和y的二元函数,它的变量有两个,你这样直接dz/dx合适么?合法么?但是,如果我在考虑x轴方向的时候,把y看作一个常数,也就是把y轴固定住,这样函数z就只跟x相关了,于是我们就把一个二元函数(曲面)变成了一个一元函数(曲线)。如上图所示,当我们固定y=1的时候,这个曲面就被这个y=1的平面切成了两半,而平面与曲面相交的地方就出现了一条曲线。这条曲线其实就是当我固定y=1的时候,函数z的图像,只不过这时候z只跟x一个变量有关,所以它变成了一个一元函数。于是,我们就可以仿照一元函数的方法定义导数了,也就是说:我们在z=f(x,y)上无法直接定义导数,但是如果我们把y固定起来了,这时候二元函数的曲面就变成了一元函数的曲线,那么我们就在曲线上定义导数了。这种把y的值固定在某个地方,然后计算函数在x轴方向上的导数,叫作关于x的偏导数,记做 z/x。同样,如果我们把x的值固定,计算函数在y轴方向上的导数,那自然就是关于y的偏导数,记做 z/y。
05全微分有了偏导数的概念,我们就有办法写出dzdxdy之间的关系了。在一元函数里,导数是dy、dt,我们自然就可以写出dy和dt之间的关系:那么,到了二元函数z=f(x,y)的时候呢?我们想象有个人在山的一点要往另一点爬,我们让他先沿着x轴的方向爬(也就是固定住y的值),假设他沿x轴移动了dx。根据上面偏导数的定义,如果我们把y 的值固定了,那么他在x轴方向上的导数是可以用偏导数z/x来表示,那么在他沿着x轴移动的时候,他上升的高度就可以写成(z/x)·dx。同样,接下来他沿着y轴方向走的时候,他上升的高度就可以写成( z/y)·dy。我们把这两个部分上升的高度加起来,不就得到了最终爬山的高度变化dz的了么?也就是说:这个公式我们可以把它做作全微分定理,它其实是对上面一元函数导数关系的一个自然推广。它告诉我们,虽然在曲面的一个点上有无数个方向,但是只要我们掌握了其中x和y两个方向上的偏导数,我们就能把握它的函数变化dz。还原到爬山的这个例子上来,这个公式是在告诉我们:如果我知道你沿着x轴和y轴分别走了多少,然后我知道你这座山在x轴和y轴方向的倾斜度(即偏导数)是多少,那我就知道你爬山的纯高度变化有多少(又是几近大废话~)。 我们费了这么多劲就为了推出这个公式,那么这个公式里肯定隐藏了什么重要的东西。不过,现在这种形式还不容易看清楚,我们还得稍微了解一点矢量分析的内容,把公式拆成矢量点乘的形式,那就明显了。
06再谈矢量点乘关于矢量点乘的事情,我在 积分篇的第六节就已经说过一次了,因为电场的通量Φ就是电场E面积a的点乘:Φ=E·a。因为矢量既有大小又有方向的量,而我们小时候学习的乘法它只管大小不管方向,所以两个矢量之间就得重新定义一套乘法规则,而最常见的就是点乘(符号为‘·’)。 两个矢量OAOB点乘被定义为:OA·OB=|OA||OB|Cosθ(矢量的表示原本是在它头顶上加一个箭头,但是这里不方便这样表示,那就用黑体表示了)。它表示一个矢量OA在另一个矢量OB上的投影OC(OC=|OA| Cosθ)和另一个矢量的大小的乘积,可见两个矢量点乘之后的结果是一个标量(只有大小没有方向)。这些内容我在上一篇都已经说了,这篇文章我们再来看看矢量点乘的几个性质。性质1点乘满足交换律,也就是说OA·OB=OB·OA。这个很明显,因为根据定义,前者的结果是|OA||OB| Cosθ,它们明显是相等的。性质2:点乘满足分配律,也就是说OA·(OB+OC)=OA·OB+OA·OC。这个稍微复杂一点,我这里就不作证明了,当做习题留给大家~性质3如果两个矢量相互垂直,那么它们点乘的结果为0。这个也好理解,如果两个矢量垂直,那么一个矢量在另一个矢量上的投影不就是一个点了么?一个点的大小肯定就是0啊,0乘以任何数都是0。如果大家学习了三角函数,从Cos90°=0一样一眼看出来。性质4如果两个矢量方向一样,那么它们点乘的结果就是他们大小相乘。理解了性质3,理解4就非常容易了,从cos0°=1也能一眼便知。 此外要注意的是,点乘是不满足结合律的,也就是说没有OA·OB)·OC=OA·(OB·OC),为什么?因为两个矢量点乘之后的结果是一个标量,你再让一个标量去点乘另一个矢量压根就没有意义,点乘是两个矢量之间的运算。 我们小学就开始学的加法乘法满足交换律、结合律、分配律,而矢量的点乘除了不能用结合律以外,其它的都满足。我这样写是为了告诉大家:点乘虽然是一种新定义的运算,但是它和我们平常接触的加法、乘法还是很类似的,大家不用对这种陌生的运算产生未知的恐惧
07坐标系下的点乘一个矢量有大小又有方向,我们通常是用一个箭头来表示的,箭头的方向就代表了矢量的方向,而箭头的长短就代表了矢量的大小。如果我们这时候建立一个坐标系,把这个箭头的一端移动到坐标原点,那么箭头的另一端就会固定在坐标系的某个点上,这样的话,我们就可以用一个坐标点来表示一个矢量了。如上图,A点的坐标是(4,3),那么这个矢量OA就可以记为(4,3)。然后,我们把矢量OA沿着x轴y轴做一个分解:于是,我们的矢量OA就可以表示成:OA=OB+OC(矢量的加法就是把两个矢量首尾相连,所以OB+BA=OA,而BA=OC,所以有上面的结论)。这时候,如果我们在x轴上定义一个单位向量x(1,0),那么OB的长度是x长度的四倍,而他们的方向又一样,所以矢量OB=4x。同样,在y轴上定义一个单位向量y(0,1),那么OC=3y。那么,我们的OA就可以重新写成:OA=OB+OC=4x+3y。 这样的话,我任意一个矢量(x1,y1)都可以写成x1x+y1y。于是我就成功的把那个括号给丢了,把坐标表示的矢量变成了我们熟悉的加法运算。这里我们要特别区分:x1,y1是坐标,是数,是标量,而黑体的x,y代表的是单位矢量。那么矢量的点乘就可以写成这样:(x1,y1)·(x2,y2)=(x1x+y1y)·(x2x+y2y)。因为点乘是满足分配律(见性质2)的,所以我们可以把上面的结果直接完全展开成:x1x2xx+x1y2xy+y1x2yx+y1y2yy。 然后下面是重点:因为矢量xy是分别沿着x轴和y轴的,所以它们是相互垂直的,而根据性质3两个矢量如果相互垂直,它们的点乘结果就是0。也就是说,xy=yx=0,那么我们展开式的中间两项x1y2xy+y1x2yx就直接等于0。而根据性质4,xx=yy=1(因为x和y都是长度为1的单位矢量,自己跟自己点乘方向肯定一样)。 于是,我们就可以发现两个矢量点乘之后的结果只剩下第一项和第四项的系数部分了,也就是说:(x1,y1)·(x2,y2)=(x1x+y1y)·(x2x+y2y)= x1x2 +y1y2。
08梯度的诞生对于很多高中生来说,这只是一个熟悉得不能再熟悉的结论,但是我还是从头到尾给大家扎扎实实的推导了一遍。长尾科技不喜欢那种凭空突然冒出一个结论的感觉,所以我也希望读者看我的文章,每个结论得出来都是踏踏实实的,都是严密的逻辑推导出来的。这个式子有什么用呢?我们看看它的后面一半(带箭头的x,y表示矢量,对应上面公式里的黑体x,y):再对比一下我们上面推导出来的全微分定理:这个全微分定理右边矢量点乘右边是不是很像?都是两个量相乘然后把结果加起来。如果我们把dx看作x2,dy看作y2,两个偏导数看作x1和y1,那么我们就可以按照这个点乘的公式把这个全微分定理拆成两个矢量点乘的样子,即dz可以写成这样:于是,dz就被我们拆成了两个矢量点乘的样子,我们再来仔细看看这两个矢量:右边的这个矢量的两个分量分别是dx和dy,这分别是我沿着x轴和y轴分别移动无穷小的距离,它们相加的结果用dl来表示:而左边呢,左边这个矢量的两个分量分别是函数z=f(x,y)对x和y的两个偏导数,这个我们也用一个新的符号来表示它:绕了这么久,我们现在终于看到这个▽符号了,这个▽z的名字就叫:z的梯度。 把左右两边的矢量都单独拎出来之后,我们就可以把原来的式子写成更简单的样子:这一段信息量有点大,对于没接触过矢量分析的人来说可能会稍有不适。我们前面绕那么大弯子讲全微分dz,讲矢量的点乘,都是为了引出这个式子,然后从中提炼出梯度▽z的概念。不是很理解的朋友可以好好再看一看上面的文章,再想一下,长尾君基本上是从零开始一步一步写到这里来的,只要耐心看肯定能看懂~ 搞懂了这些事情的来龙去脉之后,我们就来重点看看我们引出来的▽z,也就是z的梯度
09梯度的性质这个梯度我们要怎么去看呢?首先▽z是一个矢量,是矢量就既有大小又有方向,我们先来看看梯度的方向。 上面我们已经得到了dz=▽z·dl,把dz表示成了两个矢量的点乘,那我们再根据矢量点乘的定义把它们展开,就可以写成这样:这个dz则表示山的高度的一个微小变化,那么,沿着哪个方向走这个变化是最快的呢?也就是说我选择哪个方向会使得dz的变化最大Cosθ表示的是直角三角形里邻边和斜边的比值,而斜边总是比两个直角边大的,所以它的最大值只能取1(极限情况,θ=0°的时候),最小为0(θ=90°)。而根据上面的dz=|▽z||dl|cosθ,显然你要让dz取得最大值,就必须让cosθ取最大值1,也就是必须让▽z和dl这两个矢量的夹角θ=0°。 两个矢量的夹角等于0是什么意思?那就是这两个矢量的方向一样啊。也就是说:如果我们移动的方向(dl的方向)跟梯度▽z的方向一致的时候,dz的变化最大,我们高度变化最大。这就告诉我们:梯度▽z的方向就是高度变化最快的方向,就是山坡最陡的方向


假设你站在一个山坡上四处遥望,那个最陡的地方就是梯度的方向,如果你去测量这个方向的斜率,那这就是梯度的大小。所以,梯度这个名字还是非常形象的。
10▽算子我们再仔细看一下梯度▽z的表示:这是一个矢量,但是它看起来好像是▽和一个标量z“相乘”,我们把这个z提到括号的外面来,这时候这个梯度▽z就可以写成这样:所以,如果把▽单独拎出来,就得到了这样一个东西:这个东西就值得我们玩味了,这是啥?▽z表示的是二元函数z=f(x,y)梯度,也就是说我们先有一个函数z,然后我们把这个▽往函数z前面一放,我们就得到z的梯度。从函数z得到z的梯度的具体过程就是对这个函数z分别求x的偏导和y的偏导。 也就是说,单独的▽是这么个东西:我▽自己本身并不是什么具体的东西,我需要你给我一个函数,然后我对你这个函数进行一顿操作(求x和y的偏导),最后返回一个这个函数的梯度给你。这就像是有一个特定功能的模具:你给我一堆面粉,我一顿处理之后返回你一个。但是显然的,它并不是面粉,也不是饼,它单独的存在没有什么意义,它一定要跟面粉结合才能产生有具体意义的东西。


这种东西叫算子,▽就叫▽算子。基于算子的巨大影响力,它又有一大堆其他的名字:从它的具体功能上来看,它被称为矢量微分算子;因为它是哈密顿引入进来的,所以它又被称为哈密顿算子;从读音上来说,它又被称为nabla算子或者del算子。这些大家了解一下,知道其他人在谈论这个的时候都是在指▽算子就行了。
11梯度、散度和旋度▽算子不是一个矢量,除非你把它作用在一个函数上,否则它没啥意义。但是,它在各个方面的表现确实又像一个矢量,只要你把▽算子的“作用”看成矢量的“相乘”。 一个矢量一般来说有3种“乘法”: 1、矢量A和一个标量a相乘:aA比如我把一个矢量A大小变为原来的2倍,方向不变,那么这时候就可以写成2A。 2、矢量A和一个矢量B进行点乘A·B。这个点乘我们上面介绍很多了,A·B=|A||B|Cosθ,这里就不说了。 3、矢量A和一个矢量B进行叉乘A×B。这个叉乘跟点乘类似,也是我们单独针对矢量定义的另外一种乘法,|A×B|=|A||B|Sinθ。大家可以看到,这个叉乘跟点乘唯一的区别就是:点乘是两个矢量的大小乘以它们的余弦值Cosθ,叉乘是两个矢量的大小乘以它们的正弦值Sinθ(在直角三角形里,角的对边和斜边的比为正弦Sinθ,邻边和斜边的比值为余弦Cosθ)。 那么,同样的,我们的▽算子也有3种作用方式: 1、▽算子作用在一个标量函数z上: ▽z。这个▽z我们上面说过了,它表示函数z的梯度,它表示这个函数z变化最快的方向。 2、▽算子跟一个矢量函数E点乘▽·E。这就表示E的散度,我们开篇讲的高斯电场定律的左边就是电场E的散度,它就是表示成▽·E这样。 3、▽算子跟一个矢量函数E叉乘▽×E。它叫E的旋度,这个我们后面会再详细说。这样,我们就以一种很自然的方式引出了这三个非常重要的概念:梯度(▽z散度(▽·E)旋度(▽×E)。大家可以看到,▽算子的这三种作用跟矢量的三种乘法是非常相似的,只不过▽是一个算子,它必须作用在一个函数上才行,所以我们把上面的标量和矢量换成了标量函数矢量函数。 我们在描述山的高度的函数z=f(x,y)的时候,不同的点(x,y)对应不同的山的高度,而山的高度只有大小没有方向,所以这是个标量函数,我们可以求它的梯度▽z。但是,电场E既有大小又有方向,这是一个矢量,所以我们可以用一个矢量函数E=f(x,y)表示空间中不同点(x,y)的电场E的分布情况。那么对这种矢量函数,我们就不能去求它的梯度了,我们只能去求它的散度▽·E旋度▽×E
为了让大家对这些能够有更直观的概念,我们接下来就来仔细看看电场的散度▽·E。
12电场的散度当我们把电场的散度写成▽·E这样的时候,我们会觉得:啊,好简洁!但是我们也知道▽算子的定义是这样的:那么▽·E就应该写成这样:而我们知道电场E其实是一个矢量函数(不同点对应的电场的情况),那我们还是可以把E分解成x,y两个分量的和,这两个分量后面跟一个x和y方向的单位向量就行了。那么,上面的式子就可以写成这样:然后,因为矢量点乘是满足分配律的,所以我们可以把他们按照普通乘法一样展开成四项。而x和y是垂直的单位向量,所以x·y=y·x=0x·x=y·y=1,然后我们最后剩下的就只有这两项了(这一块的推导逻辑跟“坐标系下的矢量点乘”那一节一样,觉得有点陌生的可以再返回去看看那一部分):这就是电场E的散度的最终表达式,它的意思很明显:我们求电场E的散度就是把矢量函数E分解成x和y方向上的两个函数,然后分别对它们求偏导,最后再把结果加起来就行了。 为了让大家对这个有个更直观的概念,我们来看两个小例子:例1:求函数y=2x+1的导数。 这个函数的图像是一条直线(不信的可以自己去找一些x的值,代入进去算算y的值,然后把这些点画在图上),它的斜率是2,也就是说导数是2。也就是说,对于一次函数(最多只有x,没有x的平方、立方……),它的导数就是x前面的系数(2x前面的2),而后面的常数(1)对导数没有任何影响例2:求电场E=2x+yy散度。 我们先来看看这个电场E,它在x方向上(2x)的系数是2,也就是说它的电场强度是不变的,一直都是2。但是,在y方向上(yy)的系数是y,也就是说当我沿着y轴越走越远的时候,这个系数y也会越来越多,这就表示y方向上的电场强度会越来越大。 所以E=2x+yy描述的是这样一个在x轴方向上不变,在y轴方向上不断变大的电场。要求这个电场的散度,根据上面的式子,我们得先求出电场的偏导数,那偏导数要怎么求呢?还记得我们是怎么得到偏导数这个概念的么?我们是固定y的值,也就是假设y的值不变,把y看作一个常数,这时候求得了对x的偏导数;同样,把x当做一个常数,求函数对y的偏导数。 那么,当我们求函数对x的偏导数 E/x时,我们可以把y当作常数(就像例1中后面的1一样)。如果y是常数,x方向前面的系数又是2,也是常数,所以这整个就变成了一个常数(常数的导数为0),所以 E/x=0。同样,当我们求y的偏导的时候,就把x都看成常数(导数为0),而y方向前面的系数为y(导数为1),所以 E/y=0+1=1。 那么电场E的散度▽·E就可以表示成这两个偏导数的和:▽·E= E/x+E/y=0+1=1,也就是说,电场E的散度为1。 这虽然是一个非常简单的求电场散度的例子,但是却包含了我们求偏导,求散度的基本思想。通过这种方式,我们可以很轻松的就把电场E的散度▽·E求出来了。 补了这么多的数学和推导,我们现在有了一个定义良好,计算方便的散度▽·表达式了,但是,你还记得我们在开始讲到的散度的定义么?我们最开始是怎样引入散度的呢? 我们是从麦克斯韦方程组积分形式引入散度的。高斯电场定律说通过一个闭合曲面的电通量跟这个闭合曲面包含的电荷量成正比,而且这个曲面可以是任意形状。然后我们为了从宏观进入微观,就让这个曲面不停地缩小缩小,当它缩小到无穷小,缩小到只包含了一个点的时候,这时候我们就说通过这个无穷小曲面的通量和体积的比就叫散度(用div表示)。


也就是说,我们最开始从无穷小曲面的通量定义来的散度和我们上面通过偏导数定义来的散度▽·指的是同一个东西。即:

13为何这两种散度是等价的?

很多人可能觉得难以理解,这两个东西的表达形式和来源都完全不一样,它们怎么会是同一个东西呢?但是它们确实是同一个东西,那我们为什么要弄两套东西出来呢?在最开始我也说了,通过无穷小曲面的通量定义的散度很容易理解,跟麦克斯韦方程组的积分形式的通量也有非常大的联系,但是这种定义不好计算(上面的例2,你用这种方式去求它的散度试试?),所以我们需要找一种能方便计算、实际可用的方式,这样才出现了▽·形式的散度。 至于为什么这两种形式是等价的,我给大家提供一个简单的思路。因为这毕竟是面向大众的科普性质的文章,具体的证明过程我就不细说了。真正感兴趣的朋友可以顺着这个思路去完成自己的证明,或者来我的社群(回复“社群”即可)里讨论。证明思路:我们假设有一个边长分别为Δx、Δy、Δz的小长方体,空间中的电场为E(x,y,z),然后假设在这个长方体的正中心有一个点(x,y,z),那么这个电场通过这个长方体前面(沿着x轴正方向)电场就可以表示为:Ex(x+Δx/2,y,z)。Ex表示电场在x方向上的分量(因为我们是考虑长方体上表面的通量,所以只用考虑电场的x分量),因为中心坐标为(x,y,z),那么沿着x轴移动到表面的坐标自然就是(x+Δx/2,y,z)。而这个面的面积ΔyΔz,那么通过前面的电通量就可以写成:Ex(x+Δx/2,y,z)·ΔyΔz。同样的,通过长方体后面(沿着x轴的负方向)的电通量,就可以写成Ex(x-Δx/2,y,z)·ΔyΔz。因为这两个面的方向是相反的(前面后面,一个沿着x轴正方向,一个沿着负方向),所以,这两个沿着x轴方向的面的电通量之和Φx就应该是两者相减:Φx=Ex(x+Δx/2,y,z)·ΔyΔz-Ex(x-Δx/2,y,z)·ΔyΔz)。 如果我们两边都除以Δv(其中,Δv=ΔxΔyΔz),那么就得到:Φx/Δv=(Ex(x+Δx/2,y,z)-Ex(x-Δx/2,y,z))/Δx,然后你会发现等式的右边刚好就是偏导数定义(标准的极限定义。也就是说,电场通过沿着x轴的两个面(前后两面)的通量之和就等于电场的x分量对x的偏导数Φx/Δv=Ex/x。 同样的,我们发现电场沿着y轴的两面(左右两面)和z轴的两面(上下两面)的电通量之和分别就等于电场的y分量和z分量对y和z的偏导Φy/Δv=Ey/y,Φz/Δv=Ez/z。然后我们把这三个式子加起来左边就是电场通过六个面的通量除以体积,也就是通过这个长方体的通量除以体积,右边就是我们▽·E的形式,这分别就是我们上面两种散度的表示方式,证明完成。 这个证明一时半会没看懂也没关系,感兴趣的可以后面慢慢去琢磨。我只是想通过这种方式让大家明白通过某一方向的两个面的通量这方向的偏导数之间是存在这种对应关系的,这样我们就容易接受无穷小曲面的通量▽·这两种散度的定义方式了。 这两种散度的定义方式各有所长,比如我们在判断某一点的散度是否为零的时候,我用第一个定义,去看看包含这个点的无穷小曲面的通量是不是为零就行了。如果这一点有电荷,那么这个无穷小曲面的电通量肯定就不为零,它的散度也就不为零;如果这个无穷小曲面没有包含电荷,那这一点的散度一定为0,这就是高斯电场定律微分方程想要告诉我们的东西。但是,如果你要计算这一点的散度是多少,那还是乖乖的拿起▽·去计算吧。
14散度的几何意义此外,跟梯度一样,散度这个名字也是非常形象的。很多人会跟你说散度表示的是“散开的程度”,这种说法很容易让初学者误解或者迷惑,比如一个正电荷产生的产生的如下的电场线,它看起来是散开的,所以很多就会认为这里所有的点的散度都是不为零的,都是正的。但是,根据我们上面分析,散度反映的是无穷小曲面的通量,这直接跟这一点是否有电荷对应。那么,这个图的中心有一个正电荷,那么这点的散度不为零没毛病,但是其他地方呢?其他地方看起来也是散开的,但是其他地方并没有电荷,没有电荷的话,其他点电场的散度就应该为0(因为这个地方无穷小曲面的通量有进有出,它们刚好抵消了),而不是你看起来的好像是散开的,所以为正。 也就是说,对于一个点电荷产生的电场,只有电荷所在的点的散度不为0,其他地方的散度都为0。我们不能根据一个电场看起来是散开的就觉得这里的散度都不为0,那么,这个散开到底要怎么理解呢? 你可以这么操作:你把电场线都想象成水流,然后拿一个非常轻的圆形橡皮筋放到这里,如果这个橡皮筋的面积变大,我们就说这个点的散度为正,反正为负。如果你把橡皮筋丢在电荷所在处,那么这点所有方向都往外流,那么橡皮筋肯定会被冲大(散度为正);但是在其他地方,橡皮筋会被冲走,但是不会被冲大(散度为0),因为里外的冲力抵消了。这样的话,这种散开的模型跟我们无穷小曲面的通量模型就不再冲突了。
15方程一:高斯电场定律

说了这么多,又是证明不同散度形式(无穷小曲面的通量和▽·)的等价性,又是说明不同散度理解方式的同一性无穷小曲面的通量散开的程度),都是为了让大家从更多的维度全方位的理解散度的概念,尽量避开初学者学习散度会遇到的各种坑。理解了这个散度的概念之后,我们再来看麦克斯韦方程组第一个方程——高斯电场定律微分形式就非常容易理解了:方程的左边▽·E表示电场在某一点散度,方程右边表示电荷密度ρ真空介电常数的比值。为什么右边要用电荷密度ρ而不是电荷量Q呢?因为散度是无穷小曲面的通量体积的比值,所以我们的电量也要除以体积,电量Q体积V的比值就是电荷密度ρ。对比一下它的积分形式:两边都除以一个体积V,然后曲面缩小到无穷小:左边的通量就变成了电场的散度▽·E,右边的电荷量Q就变成了电荷密度ρ,完美!麦克斯韦方程组积分形式和微分形式是一一对应的,理解这种对应的关键就是理解散度(和后面的旋度)这两种不同定义方式背后的一致性,它是沟通积分和微分形式的桥梁。理解了它们,我们就能在这两种形式的切换之间如鱼得水,我们就能一看到积分形式就能写出对应的微分形式,反之亦然。
16方程二:高斯磁场定律理解了高斯电场定律的微分形式,那么高斯磁场定律的微分形式就能轻松写出来了。因为现在还没有找到磁单极子,磁感线都是闭合的曲线,所以闭合曲面的磁通量一定恒为0,这就是高斯磁场定律积分形式的思想:那么,我们一样把这个曲面缩小到无穷小,通过这个无穷小曲面磁通量就叫磁场的散度,那么方程的左边就变成了磁场的散度,而右边还是0。也就是说:磁场的散度处处为0。所以,麦克斯韦方程组第二个方程——高斯磁场定律微分形式就是:


17旋度静电和静磁的微分形式我们已经说完了,那么接下来就是磁如何生电的法拉第定律了。关于法拉第是如何通过实验一步一步发现法拉第定律的内容,我在积分篇里已经详细说了,这里就不再多说。对法拉第定律基本思想积分形式的内容还不太熟悉的请先去看上一篇 积分篇的内容。法拉第定律是法拉第对电磁感应现象的一个总结,他发现只要一个曲面的磁通量(B·a)发生了改变,那么就会在曲面的边缘感生出一个旋涡状电场E出来。这个旋涡状的感生电场我们是用电场的环流来描述的,也就是电场沿着曲面边界进行的线积分。用具体的公式表示就是这样:公式左边是电场E的环流,用来描述这个被感生出来的电场,而公式的右边是磁通量的变化率,用来表示磁通量变化的快慢。 这个法拉第定律是用积分形式写的,我们现在要得到它的微分形式,怎么办?那当然还是跟我们上面的操作一样:从积分到微分,我把它无限缩小就行了。那么,这里我们把这个非闭合曲面缩小缩小,一直缩小到无穷小,那么我们这里就出现了一个无穷小曲面的环流。 还记得我们怎么定义散度的么?散度就是通过无穷小闭合曲面通量和闭合曲面体积的比值,而我们这里出现了一个无穷小非闭合曲面的环流,因为非闭合曲面就没有体积的说法,只有面积。那么,通过无穷小非闭合曲面环流和曲面面积的比值,会不会也有是一个另外什么量的定义呢? 没错,这确实是一个全新的量,而且这个量我们在前面稍微提到了一点,它就是旋度。我们把▽算子矢量做类比的时候,说一个矢量有三种乘法:跟标量相乘、点乘和叉乘。那么同样的,▽算子也有三种作用:作用在标量函数上叫梯度z),以点乘的方式作用在矢量函数上被称为散度▽·z),以叉乘的方式作用在矢量函数上被称为旋度(▽×z)。 也就是说,我们让▽算子以叉乘的方式作用在电场E上,我们就得到了电场E旋度▽×E,而这个旋度的另一种定义就是我们上面说的无穷小非闭合曲面的环流和这个曲面的面积之比。因为旋度的英文单词是curl,所以我们用curl(E)表示电场的旋度。所以,我们就可以写下下面这样的式子:跟散度的两种定义方式一样,我们这里的旋度也有▽×无穷小曲面的环流两种表述方式。在散度那里,我给大家证明了那两种散度形式等价性,在旋度这里我就不再证明了,感兴趣的朋友可以按照类似的思路去尝试证明一下。
18矢量的叉乘因为旋度是▽算子以叉乘×的方式作用在矢量场上,所以这里我们来简单的看一下叉乘。两个矢量AB点乘被定义为:A·B=|A||B|Cosθ,它们的叉乘则被定义为|A×B|=|A||B|Sinθ,其中θ为它们的夹角。单从这样看,它们之间的差别好像很小,只不过一个是乘以余弦Cosθ,另一个是乘以正弦Sinθ。 从它们的几何意义来说,点乘表示的是投影,因为|OA|Cosθ刚好就是OA在OB上的投影,也就是OC的长度。如下图:那么叉乘呢?叉乘是|OA|Sinθ,这是AC的长度,那么|A×B|=|A||B|Sinθ=|AC||OB|,这是啥?这是面积啊,如果我以OA和OB为边长作一个平行四边形,那么AC就刚好是这个平行四边形的,也就是说,矢量AB的叉乘(|A×B|=|AC||OB|)就代表了平行四边形OADB的面积。关于矢量的叉乘就说这么多,在前面讲矢量点乘的时候我还详细介绍了点乘的性质坐标运算的方法,那是因为为了自然的引出▽算子,不得不讲那些。叉乘也有类似的性质和坐标运算的法则,这个在网上随便一搜或者找一本任意矢量分析的书都能找到。而且,你现在不会熟练的进行叉乘运算,并不会影响你对麦克斯韦方程组微分形式的理解,这里了解一下它的定义和几何意义就行了。
19方程三:法拉第定律好,知道了矢量的叉乘,知道了▽×E可以表示电场的旋度,而且知道旋度的定义是:无穷小非闭合曲面的环流和这个曲面的面积之比。那我们再来回过头看一看法拉第定律积分形式
公式的左边是电场的环流,右边是磁通量的变化率,它告诉我们变化的磁通量会在曲面边界感生出电场。我在积分篇里说过,磁通量(B·a)的变化可以有两种方式:磁场(B)的变化和通过曲面面积(S)的变化,我们上面这种方式是把这两种情况都算在内。但是,还有的学者认为只有磁场(B)的变化产生的电场才算法拉第定律,所以法拉第定律还有另外一个版本:这个版本的把原来对整个磁通量(B·da)的求导变成了只对磁感应强度B的求偏导,这就把磁感线通过曲面面积变化的这种情况给过滤了。 在积分形式里有这样两种区别,但是在微分形式里就没有这种区分了。为什么?你想想我们是怎么从积分变到微分的?我们是让这个曲面不停的缩小缩小,一直缩小到无穷小,这个无穷小的曲面就只能包含一个没有大小的点了,你还让它的面积怎么变?所以我们的微分形式就只用考虑磁感应强度B的变化就行了(对应后面那个法拉第定律)。 我们现在假设把那个曲面缩小到无穷小,方程的左边除以一个面积ΔS,那就是电场的旋度▽×E的定义:左边除了一个面积ΔS,那右边也得除以一个面积,右边本来是磁感应强度的变化率( B/t)和面积的乘积,现在除以一个面积,那么剩下的就是磁感应强度的变化率 B/t了。那么,麦克斯韦方程组第三个方程——法拉第定律微分形式自然就是这样:简洁吧?清爽吧?这样表示之后,法拉第定律微分形式看起来就比积分形式舒服多了,而且它还只有这一种形式。直接从方程上来看,它告诉我们某一点电场的旋度等于磁感应强度的变化率。简单归简单,要理解这种公式,核心还是要理解左边,也就是电场的旋度▽×E
20旋度的几何意义我们知道旋度的定义是无穷小曲面的环流和面积的比值,但是它既然取了旋度这个名字,那么它跟旋转应该还是有点关系的。我们变化的磁场感生出来的电场也是一个旋涡状的电场。那么,是不是只要看起来像漩涡状的矢量场,它就一定有旋度呢?


这个问题我们在讨论散度的时候也遇到过,很多初学者认为只要看起来发散的东西就是有散度的,然后我们通过分析知道这是不对的。一个点电荷产生静电场,只要在电荷处散度不为零的,在其他地方,虽然看起来是散开的,其实它的散度。如果我们放一个非常轻的橡皮筋在上面,除了电荷所在处,其它地方这个橡皮筋是不会被撑开的(即便会被冲走),所以其他地方的散度都为零。
同样的,在旋度这里,一个变换的磁场会产生一个旋涡状的电场,在旋涡的中心,在磁场变化的这个中心点这里,它的旋度肯定是不为零的。但是,在其它地方呢?从公式上看,其它地方的旋度一定为零,为什么?因为其他地方并没有变化的磁场啊,所以按照法拉第定律微分形式,没有变化的磁场的地方的电场的旋度肯定是0。 跟散度一样,我们不能仅凭一个感生电场是不是旋转状的来判断这点旋度是否为0,我们也需要借助一个小道具:小风车。我们把一个小风车放在某一点上,如果这个风车能转起来,就说明这点的旋度不为0。你只要把风车放在感生电场中心以外的地方,就会发现如果外层的电场线让小风车顺时针转,内层的电场线就会让小风车逆时针转,这两股力刚好抵消了。最终风车不会转,所以旋度为0。


如果大家能理解静电场除了中心点以外的地方散度处处为零,那么理解感生电场除了中心点以外的地方旋度处处为零就不是什么难事。在非中心点的地方,散度的流入流出两股力量抵消了,旋度顺时针逆时针的两股力量抵消了,为什么刚好他们能抵消呢?本质原因还是因为这两种电场都是随着距离的平方反比减弱。如果它们不遵守平方反比定律,那么你去计算里外的散度和旋度,它们就不再为零。 关于旋度的事情就先说这么多,大家如果理解了旋度,对比法拉第定律的积分方程,要理解它的微分方程是很容易的。我前面花了很大的篇幅给大家讲了矢量的点乘散度,作为类比,理解矢量的叉乘旋度也不是什么难事,它们确实太相似了。
21方程四:安培-麦克斯韦定律讲完了磁生电的法拉第定律,我们麦克斯韦方程组就只剩最后一个电生磁的安培-麦克斯韦定律了。它描述的是电流变化的电场如何产生旋涡状的感生磁场的,因为它电的来源有电流和变化的电场两项,所以它的形式也是最复杂的。方程的积分形式如下(具体过程见 积分篇):左边的磁场的环流,右边是曲面包围的电流(带enc下标的I)和电场的变化率。它告诉我们,如果我们画一个曲面通过这个曲面的电流和这个曲面里电通量的变化会在曲面的边界感生出一个旋涡状的磁场出来,这个旋涡状的磁场自然是用磁场的环流来描述。 可以想象,当我们用同样的方法把这个曲面缩小到无穷小的时候,如果我们在方程的左右两边都除以这个曲面的面积,那么方程的左边就成了磁场B的旋度▽×B,右边的两项除以一个面积会变成什么呢?电通量的变化率除以面积之后就剩下电场的变化率 E/t,这个跟法拉第定律的磁通量变化率除以面积类似。那么电流(带enc的I)那一项呢?电流I除以面积得到的东西是什么?这里我们定义了一个新的物理量:电流密度J。很显然,这个电流密度J就是电流除以电流通过的曲面的面积(注意不是体积)。相应的,电流密度的单位是A/m(安培每平方米)而不是A/m。 这样,麦克斯韦方程组第四个方程——安培-麦克斯韦定律微分形式就自然出来了:虽然还是有点长,但是相比积分形式已经是相当良心了,它告诉我们某一点感生磁场的旋度▽×B等于电流密度J电场变化率E/t两项的叠加。其实它跟积分形式讲的都是一回事,都是在说电流和变化的电场能够产生一个磁场,只不过积分形式是针对一个曲面,而微分形式只是针对一个而已。
22麦克斯韦方程组至此,麦克斯韦方程组的四个方程:描述静电高斯电场定律、描述静...

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

}

根据数据类型的不同,对一个问题的建模有不同的方式。在机器学习或者人工智能领域,人们首先会考虑算法的学习方式。在机器学习领域,有几种主要的学习方式。将算法按照学习方式分类是一个不错的想法,这样可以让人们在建模和算法选择的时候考虑能根据输入数据来选择最合适的算法来获得最好的结果。

在监督式学习下,输入数据被称为“训练数据”,每组训练数据有一个明确的标识或结果,如对防垃圾邮件系统中“垃圾邮件”“非垃圾邮件”,对手写数字识别中的“1“,”2“,”3“,”4“等。在建立预测模型的时候,监督式学习建立一个学习过程,将预测结果与“训练数据”的实际结果进行比较,不断的调整预测模型,直到模型的预测结果达到一个预期的准确率。监督式学习的常见应用场景如分类问题和回归问题。常见算法有逻辑回归(Logistic

在非监督式学习中,数据并不被特别标识,学习模型是为了推断出数据的一些内在结构。常见的应用场景包括关联规则的学习以及聚类等。常见算法包括Apriori算法以及k-Means算法。

在此学习方式下,输入数据部分被标识,部分没有被标识,这种学习模型可以用来进行预测,但是模型首先需要学习数据的内在结构以便合理的组织数据来进行预测。应用场景包括分类和回归,算法包括一些对常用监督式学习算法的延伸,这些算法首先试图对未标识数据进行建模,在此基础上再对标识的数据进行预测。如图论推理算法(Graph

在这种学习模式下,输入数据作为对模型的反馈,不像监督模型那样,输入数据仅仅是作为一个检查模型对错的方式,在强化学习下,输入数据直接反馈到模型,模型必须对此立刻作出调整。常见的应用场景包括动态系统以及机器人控制等。常见算法包括Q-Learning以及时间差学习(Temporal

在企业数据应用的场景下, 人们最常用的可能就是监督式学习和非监督式学习的模型。在图像识别等领域,由于存在大量的非标识的数据和少量的可标识数据, 目前半监督式学习是一个很热的话题。而强化学习更多的应用在机器人控制及其他需要进行系统控制的领域。

根据算法的功能和形式的类似性,我们可以把算法分类,比如说基于树的算法,基于神经网络的算法等等。当然,机器学习的范围非常庞大,有些算法很难明确归类到某一类。而对于有些分类来说同一分类的算法可以针对不同类型的问题。这里,我们尽量把常用的算法按照最容易理解的方式进行分类。

回归算法是试图采用对误差的衡量来探索变量之间的关系的一类算法。回归算法是统计机器学习的利器。在机器学习领域,人们说起回归,有时候是指一类问题,有时候是指一类算法,这一点常常会使初学者有所困惑。常见的回归算法包括:最小二乘法(Ordinary Least

基于实例的算法常常用来对决策问题建立模型,这样的模型常常先选取一批样本数据,然后根据某些近似性把新数据与样本数据进行比较。通过这种方式来寻找最佳的匹配。因此,基于实例的算法常常也被称为“赢家通吃”学习或者“基于记忆的学习”。常见的算法包括 k-Nearest Neighbor(KNN), 学习矢量量化(Learning Vector Quantization,

正则化方法是其他算法(通常是回归算法)的延伸,根据算法的复杂度对算法进行调整。正则化方法通常对简单模型予以奖励而对复杂算法予以惩罚。常见的算法包括:Ridge Regression,Least Absolute Shrinkage and

贝叶斯方法算法是基于贝叶斯定理的一类算法,主要用来解决分类和回归问题。常见算法包括:朴素贝叶斯算法,平均单依赖估计(Averaged One-Dependence Estimators, AODE),以及Bayesian Belief Network(BBN)。

基于核的算法中最著名的莫过于支持向量机(SVM)了。基于核的算法把输入数据映射到一个高阶的向量空间, 在这些高阶向量空间里, 有些分类或者回归问题能够更容易的解决。常见的基于核的算法包括:支持向量机(Support Vector Machine, SVM), 径向基函数(Radial Basis Function ,RBF), 以及线性判别分析(Linear

聚类,就像回归一样,有时候人们描述的是一类问题,有时候描述的是一类算法。聚类算法通常按照中心点或者分层的方式对输入数据进行归并。所以的聚类算法都试图找到数据的内在结构,以便按照最大的共同点将数据进行归类。常见的聚类算法包括

关联规则学习通过寻找最能够解释数据变量之间关系的规则,来找出大量多元数据集中有用的关联规则。常见算法包括 Apriori算法和Eclat算法等。

人工神经网络算法模拟生物神经网络,是一类模式匹配算法。通常用于解决分类和回归问题。人工神经网络是机器学习的一个庞大的分支,有几百种不同的算法。(其中深度学习就是其中的一类算法,我们会单独讨论),重要的人工神经网络算法包括:感知器神经网络(Perceptron Neural Network), 反向传递(Back Propagation),

深度学习算法是对人工神经网络的发展。在近期赢得了很多关注, 特别是百度也开始发力深度学习后, 更是在国内引起了很多关注。 在计算能力变得日益廉价的今天,深度学习试图建立大得多也复杂得多的神经网络。很多深度学习的算法是半监督式学习算法,用来处理存在少量未标识数据的大数据集。常见的深度学习算法包括:受限波尔兹曼机(Restricted Boltzmann

像聚类算法一样,降低维度算法试图分析数据的内在结构,不过降低维度算法是以非监督学习的方式试图利用较少的信息来归纳或者解释数据。这类算法可以用于高维数据的可视化或者用来简化数据以便监督式学习使用。

集成算法用一些相对较弱的学习模型独立地就同样的样本进行训练,然后把结果整合起来进行整体预测。集成算法的主要难点在于究竟集成哪些独立的较弱的学习模型以及如何把学习结果整合起来。

常见机器学习算法优缺点:

1. 如果给出的特征向量长度可能不同,这是需要归一化为通长度的向量(这里以文本分类为例),比如说是句子单词的话,则长度为整个词汇量的长度,对应位置是该单词出现的次数。

其中一项条件概率可以通过朴素贝叶斯条件独立展开。要注意一点就是 的计算方法,而由朴素贝叶斯的前提假设可知,=,因此一般有两种,一种是在类别为ci的那些样本集中,找到wj出现次数的总和,然后除以该样本的总和;第二种方法是类别为ci的那些样本集中,找到wj出现次数的总和,然后除以该样本中所有特征出现次数的总和。

3. 如果 中的某一项为0,则其联合概率的乘积也可能为0,即2中公式的分子为0,为了避免这种现象出现,一般情况下会将这一项初始化为1,当然为了保证概率相等,分母应对应初始化为2(这里因为是2类,所以加2,如果是k类就需要加k,术语上叫做laplace光滑, 分母加k的原因是使之满足全概率公式)。

朴素贝叶斯的优点:对小规模的数据表现很好,适合多分类任务,适合增量式训练。

缺点:对输入数据的表达形式很敏感。

决策树:决策树中很重要的一点就是选择一个属性进行分枝,因此要注意一下信息增益的计算公式,并深入理解它。

信息熵的计算公式如下:

其中的n代表有n个分类类别(比如假设是2类问题,那么n=2)。分别计算这2类样本在总样本中出现的概率p1和p2,这样就可以计算出未选中属性分枝前的信息熵。

现在选中一个属性xi用来进行分枝,此时分枝规则是:如果xi=vx的话,将样本分到树的一个分支;如果不相等则进入另一个分支。很显然,分支中的样本很有可能包括2个类别,分别计算这2个分支的熵H1和H2,计算出分枝后的总信息熵H’=p1*H1+p2*H2.,则此时的信息增益ΔH=H-H’。以信息增益为原则,把所有的属性都测试一边,选择一个使增益最大的属性作为本次分枝属性。

决策树的优点:计算量简单,可解释性强,比较适合处理有缺失属性值的样本,能够处理不相关的特征;

缺点:容易过拟合(后续出现了随机森林,减小了过拟合现象)。

Logistic回归:Logistic是用来分类的,是一种线性分类器,需要注意的地方有:

2. logsitc回归方法主要是用最大似然估计来学习的,所以单个样本的后验概率为:

到整个样本的后验概率:

通过对数进一步化简为:

2. 分类时计算量非常小,速度很快,存储资源低;

1. 容易欠拟合,一般准确度不太高

2. 只能处理两分类问题(在此基础上衍生出来的softmax可以用于多分类),且必须线性可分;

线性回归才是真正用于回归的,而不像logistic回归是用于分类,其基本思想是用梯度下降法对最小二乘法形式的误差函数进行优化,当然也可以用normal equation直接求得参数的解,结果为:

而在LWLR(局部加权线性回归)中,参数的计算表达式为:

由此可见LWLR与LR不同,LWLR是一个非参数模型,因为每次进行回归计算都要遍历训练样本至少一次。

线性回归优点:实现简单,计算简单;

缺点:不能拟合非线性数据;

KNN算法:KNN即最近邻算法,其主要过程为:

1. 计算训练样本和测试样本中每个样本点的距离(常见的距离度量有欧式距离,马氏距离等);

2. 对上面所有的距离值进行排序;

3. 选前k个最小距离的样本;

4. 根据这k个样本的标签进行投票,得到最后的分类类别;

如何选择一个最佳的K值,这取决于数据。一般情况下,在分类时较大的K值能够减小噪声的影响。但会使类别之间的界限变得模糊。一个较好的K值可通过各种启发式技术来获取,比如,交叉验证。另外噪声和非相关性特征向量的存在会使K近邻算法的准确性减小。

近邻算法具有较强的一致性结果。随着数据趋于无限,算法保证错误率不会超过贝叶斯算法错误率的两倍。对于一些好的K值,K近邻保证错误率不会超过贝叶斯理论误差率。

注:马氏距离一定要先给出样本集的统计性质,比如均值向量,协方差矩阵等。关于马氏距离的介绍如下:

1. 思想简单,理论成熟,既可以用来做分类也可以用来做回归;

2. 可用于非线性分类;

3. 训练时间复杂度为O(n);

4. 准确度高,对数据没有假设,对outlier不敏感;

2. 样本不平衡问题(即有些类别的样本数量很多,而其它样本的数量很少);

3. 需要大量的内存;

要学会如何使用libsvm以及一些参数的调节经验,另外需要理清楚svm算法的一些思路:

1. svm中的最优分类面是对所有样本的几何裕量最大(为什么要选择最大间隔分类器,请从数学角度上说明?网易深度学习岗位面试过程中有被问到。答案就是几何间隔与样本的误分次数间存在关系:

,其中的分母就是样本到分类间隔距离,分子中的R是所有样本中的最长向量值),即:

经过一系列推导可得为优化下面原始目标:

2. 下面来看看拉格朗日理论:

可以将1中的优化目标转换为拉格朗日的形式(通过各种对偶优化,KKD条件),最后目标函数为:

我们只需要最小化上述目标函数,其中的α为原始优化问题中的不等式约束拉格朗日系数。

3. 对2中最后的式子分别w和b求导可得:

由上面第1式子可以知道,如果我们优化出了α,则直接可以求出w了,即模型的参数搞定。而上面第2个式子可以作为后续优化的一个约束条件。

4. 对2中最后一个目标函数用对偶优化理论可以转换为优化下面的目标函数:

而这个函数可以用常用的优化方法求得α,进而求得w和b。

5. 按照道理,svm简单理论应该到此结束。不过还是要补充一点,即在预测时有:

那个尖括号我们可以用核函数代替,这也是svm经常和核函数扯在一起的原因。

6. 最后是关于松弛变量的引入,因此原始的目标优化公式为:

此时对应的对偶优化公式为:

与前面的相比只是α多了个上界。

1. 可用于线性/非线性分类,也可以用于回归;

4. 计算复杂度较低;

1. 对参数和核函数的选择比较敏感;

2. 原始的SVM只比较擅长处理二分类问题;

主要以Adaboost为例,首先来看看Adaboost的流程图,如下:

从图中可以看到,在训练过程中我们需要训练出多个弱分类器(图中为3个),每个弱分类器是由不同权重的样本(图中为5个训练样本)训练得到(其中第一个弱分类器对应输入样本的权值是一样的),而每个弱分类器对最终分类结果的作用也不同,是通过加权平均输出的,权值见上图中三角形里面的数值。那么这些弱分类器和其对应的权值是怎样训练出来的呢?

下面通过一个例子来简单说明,假设的是5个训练样本,每个训练样本的维度为2,在训练第一个分类器时5个样本的权重各为0.2. 注意这里样本的权值和最终训练的弱分类器组对应的权值α是不同的,样本的权重只在训练过程中用到,而α在训练过程和测试过程都有用到。

现在假设弱分类器是带一个节点的简单决策树,该决策树会选择2个属性(假设只有2个属性)的一个,然后计算出这个属性中的最佳值用来分类。

Adaboost的简单版本训练过程如下:

1. 训练第一个分类器,样本的权值D为相同的均值。通过一个弱分类器,得到这5个样本(请对应书中的例子来看,依旧是machine learning in action)的分类预测标签。与给出的样本真实标签对比,就可能出现误差(即错误)。如果某个样本预测错误,则它对应的错误值为该样本的权重,如果分类正确,则错误值为0. 最后累加5个样本的错误率之和,记为ε。

2. 通过ε来计算该弱分类器的权重α,公式如下:

3. 通过α来计算训练下一个弱分类器样本的权重D,如果对应样本分类正确,则减小该样本的权重,公式为:

如果样本分类错误,则增加该样本的权重,公式为:

4. 循环步骤1,2,3来继续训练多个分类器,只是其D值不同而已。

输入一个样本到训练好的每个弱分类中,则每个弱分类都对应一个输出标签,然后该标签乘以对应的α,最后求和得到值的符号即为预测标签值。

2. 容易实现,分类准确率较高,没有太多参数可以调;

1. 基于划分的聚类:

k-means是使下面的表达式值最小:

(1)k-means算法是解决聚类问题的一种经典算法,算法简单、快速。

(2)对处理大数据集,该算法是相对可伸缩的和高效率的,因为它的复杂度大约是O(nkt),其中n是所有对象的数目,k是簇的数目,t是迭代的次数。通常k<<n。这个算法通常局部收敛。

(3)算法尝试找出使平方误差函数值最小的k个划分。当簇是密集的、球状或团状的,且簇与簇之间区别明显时,聚类效果较好。

(1)k-平均方法只有在簇的平均值被定义的情况下才能使用,且对有些分类属性的数据不适合。

(2)要求用户必须事先给出要生成的簇的数目k。

(3)对初值敏感,对于不同的初始值,可能会导致不同的聚类结果。

(4)不适合于发现非凸面形状的簇,或者大小差别很大的簇。

(5)对于"噪声"和孤立点数据敏感,少量的该类数据能够对平均值产生极大影响。

2. 基于层次的聚类:

自底向上的凝聚方法,比如AGNES。

自上向下的分裂方法,比如DIANA。

推荐系统:推荐系统的实现主要分为两个方面:基于内容的实现和协同滤波的实现。

基于内容的实现:不同人对不同电影的评分这个例子,可以看做是一个普通的回归问题,因此每部电影都需要提前提取出一个特征向量(即x值),然后针对每个用户建模,即每个用户打的分值作为y值,利用这些已有的分值y和电影特征值x就可以训练回归模型了(最常见的就是线性回归)。

这样就可以预测那些用户没有评分的电影的分数。(值得注意的是需对每个用户都建立他自己的回归模型)

从另一个角度来看,也可以是先给定每个用户对某种电影的喜好程度(即权值),然后学出每部电影的特征,最后采用回归来预测那些没有被评分的电影。

当然还可以是同时优化得到每个用户对不同类型电影的热爱程度以及每部电影的特征。

基于协同滤波的实现:协同滤波(CF)可以看做是一个分类问题,也可以看做是矩阵分解问题。协同滤波主要是基于每个人自己的喜好都类似这一特征,它不依赖于个人的基本信息。

比如刚刚那个电影评分的例子中,预测那些没有被评分的电影的分数只依赖于已经打分的那些分数,并不需要去学习那些电影的特征。

SVD将矩阵分解为三个矩阵的乘积,公式如下所示:

中间的矩阵sigma为对角矩阵,对角元素的值为Data矩阵的奇异值(注意奇异值和特征值是不同的),且已经从大到小排列好了。即使去掉特征值小的那些特征,依然可以很好的重构出原始矩阵。如下图所示:

其中更深的颜色代表去掉小特征值重构时的三个矩阵。

果m代表商品的个数,n代表用户的个数,则U矩阵的每一行代表商品的属性,现在通过降维U矩阵(取深色部分)后,每一个商品的属性可以用更低的维度表示(假设为k维)。这样当新来一个用户的商品推荐向量X,则可以根据公式X'*U1*inv(S1)得到一个k维的向量,然后在V’中寻找最相似的那一个用户(相似度测量可用余弦公式等),根据这个用户的评分来推荐(主要是推荐新用户未打分的那些商品)。

pLSA:由LSA发展过来,而早期LSA的实现主要是通过SVD分解。pLSA的模型图如下

LDA主题模型,概率图如下:

和pLSA不同的是LDA中假设了很多先验分布,且一般参数的先验分布都假设为Dirichlet分布,其原因是共轭分布时先验概率和后验概率的形式相同。

Tree),好像在阿里内部用得比较多(所以阿里算法岗位面试时可能会问到),它是一种迭代的决策树算法,该算法由多棵决策树组成,所有树的输出结果累加起来就是最终答案。

它在被提出之初就和SVM一起被认为是泛化能力(generalization)较强的算法。近些年更因为被用于搜索排序的机器学习模型而引起大家关注。

GBDT是回归树,不是分类树。其核心就在于,每一棵树是从之前所有树的残差中来学习的。为了防止过拟合,和Adaboosting一样,也加入了boosting这一项。

1. 数值上更容易求解;

2. 特征数目太大时更稳定;

3. 控制模型的复杂度,光滑性。复杂性越小且越光滑的目标函数泛化能力越强。而加入规则项能使目标函数复杂度减小,且更光滑。

4. 减小参数空间;参数空间越小,复杂度越低。

5. 系数越小,模型越简单,而模型越简单则泛化能力越强(Ng宏观上给出的解释)。

6. 可以看成是权值的高斯先验。

异常检测:可以估计样本的密度函数,对于新样本直接计算其密度,如果密度值小于某一阈值,则表示该样本异常。而密度函数一般采用多维的高斯分布。

如果样本有n维,则每一维的特征都可以看作是符合高斯分布的,即使这些特征可视化出来不太符合高斯分布,也可以对该特征进行数学转换让其看起来像高斯分布,比如说x=log(x+c), x=x^(1/c)等。异常检测的算法流程如下:

其中的ε也是通过交叉验证得到的,也就是说在进行异常检测时,前面的p(x)的学习是用的无监督,后面的参数ε学习是用的有监督。那么为什么不全部使用普通有监督的方法来学习呢(即把它看做是一个普通的二分类问题)?

主要是因为在异常检测中,异常的样本数量非常少而正常样本数量非常多,因此不足以学习到好的异常行为模型的参数,因为后面新来的异常样本可能完全是与训练样本中的模式不同。

EM算法:有时候因为样本的产生和隐含变量有关(隐含变量是不能观察的),而求模型的参数时一般采用最大似然估计,由于含有了隐含变量,所以对似然函数参数求导是求不出来的,这时可以采用EM算法来求模型的参数的(对应模型参数个数可能有多个),

EM算法一般分为2步:

E步:选取一组参数,求出在该参数下隐含变量的条件概率值;

M步:结合E步求出的隐含变量条件概率,求出似然函数下界函数(本质上是某个期望函数)的最大值。

重复上面2步直至收敛,公式如下所示:

M步公式中下界函数的推导过程:

EM算法一个常见的例子就是GMM模型,每个样本都有可能由k个高斯产生,只不过由每个高斯产生的概率不同而已,因此每个样本都有对应的高斯分布(k个中的某一个),此时的隐含变量就是每个样本对应的某个高斯分布。

GMM的E步公式如下(计算每个样本对应每个高斯的概率):

M步公式如下(计算每个高斯的比重,均值,方差这3个参数):

Apriori是关联分析中比较早的一种方法,主要用来挖掘那些频繁项集合。其思想是:

1. 如果一个项目集合不是频繁集合,那么任何包含它的项目集合也一定不是频繁集合;

2. 如果一个项目集合是频繁集合,那么它的任何非空子集也是频繁集合;

Aprioir需要扫描项目表多遍,从一个项目开始扫描,舍去掉那些不是频繁的项目,得到的集合称为L,然后对L中的每个元素进行自组合,生成比上次扫描多一个项目的集合,该集合称为C,接着又扫描去掉那些非频繁的项目,重复…

看下面这个例子,元素项目表格:

如果每个步骤不去掉非频繁项目集,则其扫描过程的树形结构如下:

在其中某个过程中,可能出现非频繁的项目集,将其去掉(用阴影表示)为:

FP Growth是一种比Apriori更高效的频繁项挖掘方法,它只需要扫描项目表2次。其中第1次扫描获得当个项目的频率,去掉不符合支持度要求的项,并对剩下的项排序。第2遍扫描是建立一颗FP-Tree(frequent-patten tree)。

接下来的工作就是在FP-Tree上进行挖掘,比如说有下表:

它所对应的FP_Tree如下:

然后从频率最小的单项P开始,找出P的条件模式基,用构造FP_Tree同样的方法来构造P的条件模式基的FP_Tree,在这棵树上找出包含P的频繁项集。

依次从m,b,a,c,f的条件模式基上挖掘频繁项集,有些项需要递归的去挖掘,比较麻烦,比如m节点。

仅用于学术分享,版权属于原作者。

40页PPT说清步进电机

24页PPT讲伺服电动机

嵌入式物联网系统软硬件基础大全

计算机系统弱电网络知识点全面总结

安川机器人资料(100页PPT)

电气控制与PLC入门(140页PPT)

}

我要回帖

更多关于 多项式相乘求导公式 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信