因此,我们可以通过(4.6)得到一个名为f(θ)的函数,即:
(4.7)
其中A、B、C、D、E由一些参数(即α、a31、a41)组成。换句话说,我们
需要提取f(θ)=0的根。
二分法[39],[40]通常用于方程的数值求解
2
11
4
41
2
1 5 1 6 1 3 1 V(a Ta)[1a(αa)∧a(α)]/(ra)
2
12
4
42
2
2 5 2 6 2 3 2 V(a T∮a)[1a(α∮)∮a(α∮)]/(r∮a)
2
11
4
41
2
3 1 5 1 6 1 3 1 VV/(a T∮a)[1a(α)a(a)]/(ra)
2
12
4
42
2
4 2 5 2 6 2 3 2 VV/(a T∮a)[1a(α∮)∧a(α∮)/(r∮a)
[1()()]
[1()()]
4
41
2
31
4
41
2
31
4
三
a a a
a a a
五
五
fA∮B∮C∮DE 4 3 2()
36
在一个未知数中,这是一种分半的方法,它是近似的算术方程。所以我们用这个方法来求解f(θ),得到了θ的解。连续二分法使用完全不同的方法来解决指数问题。常数A到E方程的最小值和最大值被分配,使得对于给定的θ值f(θ)min和最大值f(θ)max可以计算出来。所有输入行必须位于这些范围f(θ)中的一个范围内,但每个范围不能超过一个行。然后程序依次将上下范围的常数范围减半,再次计算f(θ)范围。现在,如果一些直线不在更小的f(θ)范围内,那么范围的上限或下限都可能被拒绝。因此,常数A和E按顺序减少,从而提高其精度。该方法可能是详尽的,但消耗的晶体对称时间最少。利用二分法原理,求出θ的值,进而计算出r值,进而得到人体坐标位置(x,y)。此外,传感器的输出随人体运动而不断变化,即可以实时获取人体位置。然而,在等式的某些部分,我们假设误差变大了。该方法很容易从图案中杂质峰,但其优点是可以以牺牲其更多的计算机时间为代价。该方法适用于低参数空间,即在测试立方体、正方形和三角形/六边形时间网格时,计算机时间单斜和三斜系统显著增加。因此,我们需要考虑另一种方法来解决低对称指数粉末衍射图样的问题。
4.3最速下降法
虽然二分法[41]、[42]可以作为一种有效的测量人体位置的方法,但无论我们如何调整参数以取得更好的结果,在实际测量过程中仍然会产生较大的误差。因此,我们考虑了另一种方法,即最速下降法。求函数最近局部最小值的算法是以梯度函数可以计算为前提的。最速下降法,也称为梯度下降法,它是基于这样一个观察:如果定义了一个多变量函数F(y)和一个点的微邻域,那么如果在b中的F方向上有一个负梯度,则F(y)下降得最快。因此,如果
37
a=b−C∇F(b)(4.8)
如果C足够小,则F(b)≥F(a)。记住这一点,我们从
对F的局部最小值猜测y0,并考虑序列y0,y1,y2,…这样
yn+1=yn−Cn∇F yn,n=0,1,2,3……(4.9)
我们知道了
F(y0)≥F(y1)≥F(y2)≥…,
因此列数(yn)收敛到期望的局部最小值。注意
步骤C的值可以在每次迭代中更改。基于某些假设
函数F(例如,F凸∇F Lipschitz)和特定选择C(例如,
通过一行搜索条件选择满足Wolf),收敛到局部
最低可保证。当函数F为凸函数时,所有局部极小值
是一个全局最小值,所以在这种情况下,梯度下降可以收敛到全局
解决方案。
下图如图4.3所示。式中假设F为
在平面上定义,以及哪种图案有碗的形状。蓝色轮廓曲线,
也就是说,F值是常数区域。红色箭头指示
负梯度的起点如图4.3所示。注意
(负)垂直于通过该点的等高线的点的梯度。我们
注意,梯度下降会导致我们的碗底,也就是说,到点
其中函数的值 |