龙空技术网

三种方法解决经典力学问题:牛顿、拉格朗日与哈密顿

蓝天大海沙滩上的猫 273

前言:

此刻看官们对“判断哈密顿图的方法”大体比较注意,各位老铁们都需要分析一些“判断哈密顿图的方法”的相关知识。那么小编在网摘上收集了一些有关“判断哈密顿图的方法””的相关文章,希望我们能喜欢,看官们快快来学习一下吧!

好的,我们来玩点有意思的。玩什么呢?在经典力学里,我们学过牛顿力学、拉格朗日力学以及哈密顿力学。我想用这三种不同的方法解决同一个问题,然后比较一下它们的异同,看看各自的优缺点以及什么情况下应该用哪种方法。好,我们这就开始吧。我先把摄像头关了,不然我写字的时候你们就看不见我了。

好了,让我把这个挪开一点。哎,挡住了。好了。

我想解决的问题是这样的:一个滑块沿着没有摩擦力的斜面下滑。滑块质量为m,斜面倾角为θ,我想用三种不同的方法求出它的运动方程。第一种方法,也是我们最先要讲的方法,是牛顿力学。这是大学物理入门课的内容,它告诉我们,如果我们知道一个物体受到的所有力,那么这些力的合力就等于物体的质量乘以加速度。当然,你也可以写成合外力等于动量对时间的导数,这两个式子本质上是一样的,在大多数情况下都适用,有些情况下用动量的式子会更好,但我们这里就用最常见的那个。

∑F⃗ = ma⃗

或者

∑F⃗ = d⃗/dt

在拉格朗日力学中,我们把拉格朗日量定义为动能T减去势能U。实际的运动会使得拉格朗日量取最小值,这就是所谓的变分原理。也就是说,我们要找到一个函数,使得某个积分的值最小,为了解决这个问题,我们需要用到欧拉-拉格朗日方程。用欧拉-拉格朗日方程,我们可以得到下面这个式子:L关于qi的偏导数。qi是我们用来描述系统的任意变量,可以有多个这样的变量,比如q1,q2等等。

然后是q点。q点指的是qi对时间t的导数。我们用一个点来表示对时间的导数,这样写起来比较简洁,而且看起来也比较专业。就这样。如果我们解出这个方程,就能得到一个描述物体运动的微分方程。

∂L/∂qi - d/dt (∂L/∂q̇i) = 0

最后,我们还有哈密顿力学。哈密顿量看起来有点奇怪。我们等会用到它的时候再解释为什么要用它。因为我们可以根据拉格朗日量来求解哈密顿量。你可能会想,既然这样,为什么还要用哈密顿量呢?

我得先求拉格朗日量。嗯,你不需要用欧拉-拉格朗日方程。你只需要找到拉格朗日量。然后,把所有的动量,广义动量,乘以对应的速度,再减去拉格朗日量,就能得到哈密顿量。接下来我们有两个方程。

速度,q点,等于哈密顿量对动量的偏导数。动量对时间的导数,也就是动量的变化率,等于哈密顿量对q的偏导数的负值。所以我们有两个方程。

q̇i = ∂H/∂pi

ṗi = - ∂H/∂qi

好,让我继续说,哈密顿量,嗯,我们还是等到具体解决问题的时候再讨论它吧。

所以我们先用牛顿力学来解决这个问题,然后再用拉格朗日力学,我会在讲到它们的时候再详细解释。我们先来看牛顿力学。这个问题用牛顿力学来解决其实并不简单,除非你用一个小技巧。如果我们用牛顿力学,首先要知道物体受到哪些力。我这里画了,我应该没有画质量,有向下的重力mg,还有斜面和滑块之间的接触力,也就是支持力,就这两个力。

所以我可以写出合力等于支持力n加上重力mg,等于质量m乘以加速度a。这是一个矢量方程,对吧,因为虽然重力mg是竖直向下的,但这仍然是所有力的矢量和,所以你还是要像这样把它们加起来。现在问题在于支持力。这是一个接触力,它会根据需要给滑块一个大小合适的力,以防止滑块穿透斜面。我们不知道这个力的大小,也没有一个方程可以计算它。

所以你可能已经猜到了,这里的小技巧就是选一个合适的坐标系,使得我们不需要考虑支持力。如果我们把x轴沿着斜面方向,y轴垂直于斜面,那么我们知道滑块的运动被限制在x轴方向上,所以y方向的合力为零,因为y方向的加速度为零,我们甚至不需要考虑y方向的力。我们想要求的是加速度,如果y方向的加速度是零,那我们就不用管它了,对吧?我们把它设为零,不是解出来的,而是根据实际情况判断它必须为零,你明白这其中的区别了吧,所以我们确实是“作弊”了,我们利用系统的约束条件来确定y方向的加速度为零,而不是通过力的分析来求解加速度。现在我们可以在x方向上做同样的事情,x方向的合力等于,我们把它写成mgx,等于max。

如果我们这样画坐标轴,这是重力。如果这个角是θ,那么这个角也是θ。现在我们有了y方向和x方向的分量。如果重力的大小是mg,那么x方向的分量就是mg sinθ。所以我们得到mg sinθ等于max。

mg sinθ = ma<sub>x</sub>

质量m可以消掉,我们得到ax。我把它写成x的两点,这样看起来更专业,对吧?这是经典力学,我们可以这样写。

这表示加速度是位置的二阶导数,它等于g sinθ。

ẍ = g sinθ

到这里我们其实已经解决了这个问题,但我还是把它写完吧。我们怎么求x关于时间t的函数呢?我们可以对两边积分。

我得到了这个。这些东西都是常数。x的两点对时间的积分就是x的一点,然后这边是g sinθ t加上一个常数。这个常数表示t等于0的时候x的一点的值,所以应该是加上x一点的初值。

现在我们再积分一次,左边是x。右边是1/2 g sinθ t的平方。这里会多一个t,加上x0.t,然后我们还要考虑t等于0的情况,所以再加上x0,这就是滑块沿着斜面下滑的运动方程。我们只是稍微“作弊”了一点,对吧,但这就是牛顿力学。通常情况下,如果我们可以计算出所有力的大小,那么用牛顿力学解决问题就会比较简单。

如果我们知道所有力的表达式或者它们的值,那么接下来的步骤就很直接了。我们最后可能会得到一个比较复杂的方程,但是得到这个方程的过程并不复杂。但是如果系统中存在约束力,那么问题就会变得比较困难,我最后会举一个例子,说明在这种情况下你可能就不想用牛顿力学了。好,现在我们来看看。现在我们用拉格朗日力学来解决同一个问题。

首先我们要写出拉格朗日量L等于动能T减去势能U。我们需要找到拉格朗日量。拉格朗日力学的好处在于我们不必使用笛卡尔坐标系。我们可以用任何我们想要的坐标系。当然,如果你不用笛卡尔坐标系,那么计算动能可能会比较麻烦,但你仍然可以这样做。在这个问题中,系统只有一个自由度,所以我们只需要一个变量。如果我们能找到一个变量,可以完全描述系统的状态,那么我们就完成了。我们选这个。

从斜面顶端到滑块的距离,我们把它叫做s。这就是我们的变量。如果我们知道s的值,就知道滑块的位置了。为了方便起见,我们把斜面的高度叫做h。现在我们怎么计算动能呢?我们知道动能T等于1/2 mv²,你可能会说,s点不就是速度吗?动能就是1/2 ms点的平方,这样想也没错。

但是我们还是完整地推导一遍吧。我们假设,这是xy坐标系的原点。滑块的运动轨迹与水平方向的夹角是θ,对吧,这个角就是θ,所以我们可以写出x等于s cosθ,y等于h减去s sinθ。对吧?因为如果我们把s分解成水平方向和竖直方向的两个分量,水平方向的分量就是x,它等于s cosθ。

y方向的分量是从h减去s的竖直方向分量,也就是h减去s sinθ。现在我们可以求x点。x点是什么?它是x对时间t的导数。cosθ是常数,所以x点等于s点cosθ。y点呢?

y点是y对时间t的导数,h是常数,所以y点等于负s点sinθ。现在我们把x点和y点平方,x点的平方加上y点的平方等于s点的平方乘以cos²θ加sin²θ,等于s点的平方。对吧?因为cos²θ加sin²θ等于1。

所以动能,正如我们所想的,T等于1/2 ms点的平方。

T = 1/2 m ṡ²

那么势能呢?我们可以用mgy来表示势能。这很简单。我们已经知道了y的表达式,所以势能U等于mgh减去mgsinθ。

U = mgh - mg s sinθ

所以拉格朗日量L等于1/2 ms点的平方减去势能,也就是负mgh加上mgsinθ。我把负号提出来,然后乘到括号里面。这样可以吧?可以。

L = T - U = 1/2 m ṡ² - mgh + mg s sinθ

我们等会算哈密顿量的时候还会用到这个式子。所以我把它框起来。一旦你把它框起来,就表示它很重要。你完成了这一步。好的。

好的。现在我们需要用欧拉-拉格朗日方程,所以我们需要求L关于s的偏导数。L关于s的偏导数,这里没有s,这里有一个s点,这里也没有s。这里有一个s,对吧?所以我们有mgs sinθ,这是唯一含有s的项。

所以L关于s的偏导数就是mgsinθ。

∂L/∂s = mg sinθ

现在我们来求L关于s点的偏导数。哪些项含有s点呢?只有这一项。我们用幂函数求导法则,把2降下来,得到2/2 ms点,也就是ms点。

∂L/∂ṡ = mṡ

现在我们需要求它对时间t的导数。对时间t的导数等于,m是常数,所以我们只需要求s点对时间t的导数,也就是ms的两点。

d/dt (∂L/∂ṡ) = mṡ̈

现在我们可以把这个式子代入欧拉-拉格朗日方程,得到ms的两点等于mgsinθ。

mṡ̈ = mg sinθ

质量m可以消掉,我们得到s的两点等于gsinθ。

ṡ̈ = g sinθ

这和我们之前用牛顿力学得到的方程是一样的。对吧?我们之前用x表示位移,现在用s表示位移,它们是同一个方向,所以我们得到了相同的方程。我们没有必要再解一遍这个方程,积分两次。这很容易做到,但我们已经做过了,所以我就不再重复了。好的。

我们解决了这个问题。我们得到了微分方程。得到微分方程是物理的部分。解微分方程是数学的部分,你可能可以写出解析解,也可能需要用Python来求数值解,或者用其他的方法,只要能解出来就行。

好的。现在我们来看哈密顿力学。我们还是回到这里。我们还是用s作为变量。在哈密顿力学中,我们也不必使用笛卡尔坐标系。

我们还是用这个。对不起。我刚才用拉格朗日量画了个箭头。我们首先需要找到哈密顿量。

要找到哈密顿量,我们需要先知道拉格朗日量。我们已经有了,1/2 ms点的平方减去mgh加上mgsinθ。我们之前已经算过了。哈密顿量H等于,我把它写出来,所有pi qi点的和减去L。我们需要先找到pi。

对吧?我们需要找到动量。动量p等于ms点。对吧?它是质量乘以速度。

p = mṡ

在这个问题中,我们可以直接这样写。还有另一种方法可以用来验证这个式子是否正确,因为有时候它并不总是正确的。你知道,如果你考虑圆柱坐标系或者球坐标系,动量并不总是等于质量乘以速度,但在这个问题中它是正确的。我们只有一个变量,所以H等于pms乘以s点,也就是ms点的平方。然后我们需要减去拉格朗日量,也就是减去1/2 ms点的平方,加上mgh,减去mgsinθ。

这里我们有ms点的平方减去1/2 ms点的平方,等于1/2 ms点的平方。然后加上mgh,减去mgsinθ。你会发现,这是动能T,这是势能U,所以哈密顿量H等于动能加势能,也就是系统的总能量。在这个问题中,哈密顿量等于总能量,但它并不总是等于总能量。好的,你一定要记住这一点,在量子力学中也是一样。我们在量子力学中也用哈密顿量,但我们把它看作一个算符,所以它和经典力学中的哈密顿量略有不同,但它们本质上是同一个东西,只是想让你知道这一点。我们现在有了哈密顿量,可以用哈密顿方程了。第一个方程是s点等于H关于p的偏导数。好的,这是我们的H。

哦,不,我们还不能这样做。我们需要先把H用p来表示,对吧?这里有一个s点,s点等于p除以m,我们把它代入H的表达式,得到H等于p的平方除以m的平方,也就是p的平方除以2m,其中一个m消掉了。然后加上mgh,减去mgsinθ。

H = p²/2m + mgh - mgs sinθ

现在我们可以求s点了。s点等于H关于p的偏导数。这里只有一项含有p,就是这一项,我们用幂函数求导法则,把2降下来,得到2/2 p除以m,也就是p除以m。这就是s点。我们把它框起来。

ṡ = ∂H/∂p = p/m

现在我们来看第二个方程,p点等于负H关于s的偏导数。

s在哪呢?这里有一个s,mgs s s s,这里要扣2分,因为你写错了。好的。对不起。这是我的错,但我已经发现了。

是的。好的。我的错误在于,我写了mgs s。对吧?我连续写了两个s。

所以H关于s的偏导数就是,唯一含有s的项是这一项,所以H关于s的偏导数是负mgsinθ,但是前面还有一个负号,所以p点等于mgsinθ。

ṗ = - ∂H/∂s = mg sinθ

这里有一个重要的区别,拉格朗日力学和哈密顿力学的区别。我们得到了一个解。我们有两个一阶微分方程,而拉格朗日力学只有一个二阶微分方程,这就是它们的区别。好的。

我们来求s的两点。我们对这个式子的两边求导,得到s的两点等于,空间不够了。永远不会空间不够。s的两点等于p点除以m。

我们已经知道了p点的表达式,就在这里,所以s的两点等于mgsinθ除以m,等于gsinθ。

ṡ̈ = ṗ/m = g sinθ

我们得到了相同的方程。好的。我们用三种不同的方法得到了相同的微分方程。所以在这种情况下,你可以用任何一种你喜欢的方程来解决问题。

好的。我们来思考一些问题,以及你会如何解决它们,你会选择哪种方法。我先告诉你,哈密顿力学,你可能看不出它有什么优势。好的?你可能看不出哈密顿力学和牛顿力学、拉格朗日力学相比有什么优势,但它在量子力学中非常重要。

它在统计力学中也用于描述包含大量粒子的系统。事实证明,它在这些领域非常有效。好的。但在经典力学中,它看起来和拉格朗日力学差不多。好的。

我们来思考这个问题。这是一个物体绕着行星运动。你会用哪种方法来求它的运动方程呢?你可以用牛顿力学。我们可以写出合力等于质量乘以加速度,

F⃗ = ma⃗

然后拉格朗日量L等于动能T减去势能U。

L = T - U

我,我,我把它写出来吧。哈密顿量H等于,它是什么,qi,它是qi,它是pi qi点减去L。

H = ∑<sub>i </sub>p<sub>i</sub> q̇<sub>i</sub> - L

你会选择哪一种方法呢?在这个问题中,我们可以直接写出万有引力的表达式,这是一个我们知道的公式,

F⃗ = -GMm/r² r̂

我们可以计算出物体在任意位置受到的万有引力,所以我们可以用牛顿力学。好的,除非你用一些技巧或者用数值方法求解,否则计算过程会比较复杂。我们也可以用拉格朗日力学,对吧,因为我们可以计算出动能和势能,

T = 1/2 m (ṙ² + r² θ̇²)

U = -GMm/r

然后就能得到拉格朗日量。哈密顿力学也适用,所有这些方法都适用。我们之前解决的滑块下滑的问题,所有这些方法都适用。那这个呢?

一个单摆。这个问题不太容易,对吧,因为力是什么?有向下的重力,还有绳子的张力。张力的方向和大小都会发生变化,对吧,因为张力会根据需要调整大小和方向,以保证物体做圆周运动。当物体运动速度变快时,张力也会变大。所以这个问题并不简单。你可以用能量守恒定律来求解张力的大小,但除此之外没有其他的方法。另一种方法是“作弊”,用极坐标系。在极坐标系中,唯一变化的变量是角度θ,但我们需要用极坐标系来表示加速度,我在下面做了一个视频,你可以去看一下,所以你可以用牛顿力学来解决这个问题,但这并不容易。好的。这就是我不太喜欢在大学物理入门课中讲这个例子的原因之一,除非你只是想讲能量守恒,因为它确实是一个比较难的问题。对于拉格朗日力学和哈密顿力学来说,这是一个很好的例子,对吧,因为我们可以选择θ作为变量。θ不是笛卡尔坐标系中的坐标并不重要。我们可能在计算动能的时候会遇到一点麻烦,但我们还是可以做到的。

T = 1/2 ml² θ̇²

U = mgl(1 - cosθ)

好的。所以而且它并没有那么糟糕。所以你可以用任何一种方法来做,但在这里,这种方法更好。那这个呢?

这是一个双摆,一个双摆超级难,对吧,因为现在我有这两个约束力T1和T2,这个力不仅仅与那个质量的运动有关,还与那个质量的运动有关,对吧,因为这个也拉动这个质量,所以这个必须补偿那个的运动。这几乎是,我不知道你将如何用牛顿力学来做这个。你无法计算这些力。你无法作弊来找到约束力。然而,对于拉格朗日量,我有两个变量,对吧,即使这个变量依赖于那个,那也没关系。我仍然可以做到。我可以写下拉格朗日量,我得到两个变量,我就可以做到。所以这是一个你可以像那样做的情况。所以在你有奇怪约束的地方,拉格朗日量会赢,这是另一个拉格朗日运动,一个珠子沿着一条奇怪的金属丝滑动。对吧?你如何找到约束力?这很难,但如果我只是把它参数化成沿着金属丝的位置,只要我有一个关于金属丝的函数,那就没那么糟糕了。所以约束力,约束问题,拉格朗日量和哈密顿量。如果你知道确切的力,就用这个。现在这个在哪里不太好用呢?

这是另一个例子。最后一个例子。哦,我们已经做过了那个,但是如果有摩擦力呢?摩擦力并不是一个关于约束力的方程,对吧?它降低了系统的能量。

所以拉格朗日量并没有真正,你可以让它工作。有一些技巧可以让它工作,但这并不容易。拉格朗日量希望它是一个恒定能量的情况。所以如果你正在失去能量,那么它就更加困难了。你,在哈密顿量中处理能量损失可能更容易,但是,对于拉格朗日量,这不会,我肯定会做牛顿力学,但你仍然需要耍个花招,对吧,因为你实际上并不知道这个法向力,约束力。你必须耍个花招来解决它。好的。但这是解决力学问题的三种不同方法。我没有别的话要说了,所以我们下次再见。

标签: #判断哈密顿图的方法