Simultaneous Localization and Mapping
同时定位与地图构建
定位:自身状态
建图:外在环境
传感器信息读取、视觉里程计、后端优化、回环检测、建图
1. 视觉里程计 Visual Odometry(VO) 前端(Front End)
2. 后端优化 Optimization 后端(Back End)
3. 回环检测 Loop Closing
4. 建图 Mapping
度量地图(metric map)
拓扑地图(topological map)
是一个图(graph),由节点和边组成。
{ x k = f ( x k − 1 , u k , w k ) 运 动 方 程 z k , j = h ( y j , x k , v k , j ) 观 测 方 程 \left\{ \begin{aligned} x_k&=f(x_{k-1},u_k,w_k) &运动方程\\ z_{k,j}&=h(y_j,x_k,v_{k,j}) &观测方程 \end{aligned} \right. {xkzk,j=f(xk−1,uk,wk)=h(yj,xk,vk,j)运动方程观测方程
状态估计问题
旋转矩阵 | 变换矩阵 | |
---|---|---|
描述旋转 | a ′ = R a + t \pmb{a^{'}}=\pmb{Ra}+\pmb{t} a′a′a′=RaRaRa+ttt | T = [ R t 0 T 1 ] \pmb{T}=\left[\begin{matrix}\pmb{R} &\pmb{t}\\\pmb{0}^T&1\end{matrix} \right] TTT=[RRR000Tttt1] |
集合 | S O ( n ) SO(n) SO(n) 特殊正交群 | S E ( n ) SE(n) SE(n) 特殊欧氏群 |
a ′ a^{'} a′表示旋转后, a a a表示旋转前
旋转矩阵R是行列式为1的正交矩阵,证明
非齐次坐标、齐次坐标:详细说明
从普通坐标转换成齐次坐标时: 如果(x,y,z)是个点,则变为(x,y,z,1); 如果(x,y,z)是个向量,则变为(x,y,z,0)。
描述旋转:用一个旋转轴 n \pmb{n} nnn和一个旋转角 θ \theta θ表示旋转
1.旋转向量==>旋转矩阵 :罗德里格斯公式 推导
R = c o s θ I + ( 1 − c o s θ ) n n T + s i n θ n \pmb{R}=cos\theta\pmb{I}+(1-cos\theta)\pmb{n}\pmb{n}^T+sin\theta\pmb{n} RRR=cosθIII+(1−cosθ)nnnnnnT+sinθnnn^
2.旋转矩阵==>旋转向量
{ θ = a r c o s s ( t r ( R ) − 1 2 ) R n = n \left\{ \begin{aligned} \theta&=arcoss(\dfrac{tr(\pmb{R})-1}{2}) \\ \pmb{Rn}&=\pmb{n} \end{aligned} \right. ⎩⎨⎧θRnRnRn=arcoss(2tr(RRR)−1)=nnn
欧拉角常使用“偏航-俯仰-滚转”(yaw-pitch-roll),等价于 ZYX轴的旋转,注意是先y再p再r。
q = q 0 + q 1 i + q 2 j + q 3 k \pmb{q}=q_0+q_1i+q_2j+q_3k qqq=q0+q1i+q2j+q3k
q = [ s , v ] \pmb{q}=[s,\pmb{v}] qqq=[s,vvv]
1.旋转向量==>四元数
q = [ c o s θ 2 , n x s i n θ 2 , n y s i n θ 2 , n z s i n θ 2 ] T \pmb{q}=[cos\dfrac{\theta}{2},n_xsin\dfrac{\theta}{2},n_ysin\dfrac{\theta}{2},n_zsin\dfrac{\theta}{2}]^T qqq=[cos2θ,nxsin2θ,nysin2θ,nzsin2θ]T
2.四元数==>旋转向量
{ θ = 2 a r c o s s q 0 [ n x , n y , n z ] T = [ n x , n y , n z ] T / s i n θ 2 \left\{ \begin{aligned} &\theta=2arcossq_0 \\ &[n_x,n_y,n_z]^T =[n_x,n_y,n_z]^T/sin\dfrac{\theta}{2} \end{aligned} \right. ⎩⎨⎧θ=2arcossq0[nx,ny,nz]T=[nx,ny,nz]T/sin2θ
S O ( 3 ) SO(3) SO(3)乘法方便,但加法不方便,所以不好进行微积分运算,位姿优化需要求导,所以通过李群和李代数来计算导数。
向量可变为反对称矩阵 a \pmb{a} aaa^ = A \pmb{A} AAA = [ 0 − a 3 a 2 a 3 0 − a 1 − a 2 a 1 0 ] \left[\begin{matrix} 0 & -a_3 &a_2\\a_3&0&-a_1\\-a_2&a_1&0 \end{matrix} \right] ⎣⎡0a3−a2−a30a1a2−a10⎦⎤
反对称矩阵可变为向量 A \pmb{A} AAA v ^v v = a \pmb{a} aaa
推导可得: R = e x p ( ϕ 0 \pmb{R} = exp(\phi_0 RRR=exp(ϕ0^ t ) t) t)}
其中 R \pmb{R} RRR为旋转矩阵, ϕ 0 \phi_0 ϕ0^表示反对称矩阵, ϕ \phi ϕ为三维向量,对应了 S O ( 3 ) SO(3) SO(3)的李代数 s o \pmb{\mathfrak{so}} sososo(3)
李代数 ==>李群 :
e x p ( θ a exp(\theta\pmb{a} exp(θaaa^ ) = c o s θ I + ( 1 − c o s θ ) a a T + s i n θ a )=cos\theta\pmb{I}+(1-cos\theta)\pmb{a}\pmb{a}^T+sin\theta\pmb{a} )=cosθIII+(1−cosθ)aaaaaaT+sinθaaa
ϕ \phi ϕ的模长为 θ \theta θ,方向为 a \pmb{a} aaa,长度为1, ϕ = θ a \phi=\theta\pmb{a} ϕ=θaaa
s o \pmb{\mathfrak{so}} sososo(3)实际上就是旋转向量组成的空间,指数映射就是罗德里格斯公式。
李群 ==>李代数 :见课本或第3讲中又旋转矩阵求旋转向量
l n ( e x p ( A ) ln(exp(\pmb{A}) ln(exp(AAA)^ e x p ( B ) exp(\pmb{B}) exp(BBB)^ ) = A + B + 1 2 [ A , B ] )=\pmb{A}+\pmb{B}+\dfrac{1}{2} [\pmb{A},\pmb{B}] )=AAA+BBB+21[AAA,BBB]
l n ( e x p ( ϕ 1 ln(exp(\phi_1 ln(exp(ϕ1^ ) e x p ( ϕ 2 )exp(\phi_2 )exp(ϕ2^ ) ) V ))^V ))V ≈ { J l ( ϕ 2 ) − 1 ϕ 1 + ϕ 2 当 ϕ 1 为 小 量 J r ( ϕ 1 ) − 1 ϕ 2 + ϕ 1 当 ϕ 2 为 小 量 \approx \left\{\begin{aligned} \pmb{J}_l(\phi_2)^{-1}\phi_1+\phi_2 &&当\phi_1为小量\\\pmb{J}_r(\phi_1)^{-1}\phi_2+\phi_1 &&当\phi_2为小量 \end{aligned}\right. ≈{JJJl(ϕ2)−1ϕ1+ϕ2JJJr(ϕ1)−1ϕ2+ϕ1当ϕ1为小量当ϕ2为小量
以左乘为例,假定某个旋转 R \pmb{R} RRR,对应的李代数为 ϕ \phi ϕ,左乘一个 Δ R \Delta\pmb{R} ΔRRR,对应的李代数是 Δ ϕ \Delta \phi Δϕ。
李代数加法近似于李群上带左右雅可比的乘法
对空间 p p p点进行旋转,得到 R p 点 , 若 求 点 坐 标 对 旋 转 的 倒 数 , 可 不 严 谨 的 记 为 \pmb{Rp}点,若求点坐标对旋转的倒数,可不严谨的记为 RpRpRp点,若求点坐标对旋转的倒数,可不严谨的记为 ∂ R p ∂ R \dfrac{\partial \pmb{Rp}}{\partial \pmb{R}} ∂RRR∂RpRpRp
因为 S O ( 3 ) SO(3) SO(3)没有加法,设 R \pmb{R} RRR的李代数为 ϕ \phi ϕ,转而计算 ∂ ( e x p ( ϕ ) > p ) ∂ ϕ \dfrac{\partial (exp(\phi)^{>}\pmb{p} )}{\partial \phi} ∂ϕ∂(exp(ϕ)>ppp)
求导模型 ∂ R p ∂ ϕ = ( − R p ) \dfrac{\partial \pmb{Rp}}{\partial \phi}=(-\pmb{Rp}) ∂ϕ∂RpRpRp=(−RpRpRp)^ J l \pmb{J}_l JJJl
扰动模型(左乘) ∂ R p ∂ ψ = ( − R p ) \dfrac{\partial \pmb{Rp}}{\partial \psi}=(-\pmb{Rp}) ∂ψ∂RpRpRp=(−RpRpRp)^
现实世界空间点 P P P坐标: [ X , Y , Z ] T [X,Y,Z]^T [X,Y,Z]T
物理成像平面 P ′ P' P′坐标: [ X ′ , Y ′ , Z ′ ] T [X',Y',Z']^T [X′,Y′,Z′]T ( Z ′ (Z' (Z′就是 f ) f) f)
像素平面上 P ′ P' P′的像素坐标: [ u , v ] T [u,v]^T [u,v]T
将倒像对称为正像,研究正像模型
Z f = X X ′ = Y Y ′ \dfrac{Z}{f} = \dfrac{X}{X'} = \dfrac{Y}{Y'} fZ=X′X=Y′Y
X ′ = f X Z X' = f\dfrac{X}{Z} X′=fZX
Y ′ = f Y Z Y' = f\dfrac{Y}{Z} Y′=fZY
像素坐标系与成像平面之间,相差了一个缩放和一个原点的平移。
设像素坐标在 u u u轴上缩放了 α α α倍,在 v v v上缩放了 β β β倍。同时,原点平移了 [ c x , c y ] T [c_x,c_y]^T [cx,cy]T。那么, P′ 的坐标与像素坐标 [ u , v ] T [u,v]^T [u,v]T的关系为: { u = α X ′ + c x v = β Y ′ + c y . \left\{\begin{aligned} u = α X' +c_x\\ v = β Y' +c_y \end{aligned}\right.. {u=αX′+cxv=βY′+cy. 把 α f \pmb{αf} αfαfαf合并为 f x \pmb{f_x} fxfxfx,把 β f \pmb{βf} βfβfβf合并为 f y \pmb{f_y} fyfyfy,得
{ u = f x X Z + c x v = f y Y Z + c y . \left\{\begin{aligned} u = f_x\dfrac{X}{Z} +c_x\\ v = f_y\dfrac{Y}{Z} +c_y \end{aligned}\right.. ⎩⎪⎪⎨⎪⎪⎧u=fxZX+cxv=fyZY+cy.
写成矩阵形式:
Z ( u v 1 ) = ( f x 0 c x 0 f y c y 0 0 1 ) ( X Y Z ) = K P Z\left(\begin{matrix}u\\v\\1\end{matrix}\right) = \left(\begin{matrix}f_x & 0 & c_x\\ 0 &f_y& c_y\\0 &0&1\end{matrix}\right)\left(\begin{matrix}X\\Y\\Z\end{matrix}\right) = \pmb{KP} Z⎝⎛uv1⎠⎞=⎝⎛fx000fy0cxcy1⎠⎞⎝⎛XYZ⎠⎞=KPKPKP
中间矩阵为相机的内参矩阵 K, f f f单位为米, α , β α,β α,β单位为像素 / 米, f x , f y , c x , c y f_x,f_y,c_x,c_y fx,fy,cx,cy单位为像素。
上面中的 P \pmb{P} PPP是相机坐标系,当给定世界坐标系时 P w \pmb{P_w} PwPwPw,需要根据相机当前位姿 ( R , t ) (\pmb{R,t}) (R,tR,tR,t)变换到相机坐标系
Z P u v = Z [ u v 1 ] = K ( R P w + t ) = K T P w Z\pmb{P_{uv}} = Z\left[\begin{matrix}u\\v\\1\end{matrix}\right] = \pmb{K(RP_w+t)} = \pmb{KTP_w} ZPuvPuvPuv=Z⎣⎡uv1⎦⎤=K(RPw+t)K(RPw+t)K(RPw+t)=KTPwKTPwKTPw
相机的位姿 ( R , t ) (\pmb{R,t}) (R,tR,tR,t)称为相机的外参数,在机器人或自动驾驶车辆中,外参有时也解释成相机坐标系到机器人本体坐标系之间的变换,描述“相机安装在什么地方”
投影过程还可以从另一个角度来看。我们可以把一个世界坐标点先转换到相机坐标系,再除掉它最后一维的数值(即该点距离相机成像平面的深度),这相当于把最后一维进行归一化处理,得到点 P 在相机归一化平面上的投影: ( R P w + t ) = [ X , Y , Z ] T ⏟ 相机坐标 → [ X Z , Y Z , 1 ] T ⏟ 归一化坐标 (\pmb{RP_w+t}) =\underbrace{[X,Y,Z]^T}_{\text{相机坐标}} \rightarrow\underbrace{[\dfrac{X}{Z},\dfrac{Y}{Z},1]^T}_{\text{归一化坐标}} (RPw+tRPw+tRPw+t)=相机坐标 [X,Y,Z]T→归一化坐标 [ZX,ZY,1]T
小结:
基线 baseline:都位于 x 轴上的两个相机的光圈中心间的距离 b
视差 disparity:左右图的横坐标之差 d
z = f b d z = \dfrac{fb}{d} z=dfb
d = u L − u R d = u_L-u_R d=uL−uR
待补充。。。
讨论如何在有噪声的数据中进行准确的状态估计
x k x_k xk | y j y_j yj | z k , j z_{k,j} zk,j | w k w_k wk, v k , j v_{k,j} vk,j | u k u_k uk |
---|---|---|---|---|
位姿 | 路标 | 像素位置 | 高斯噪声 | 输入,在视觉中暂且不谈 |
w k w_k wk~ N ( 0 , R k ) N(0,R_k) N(0,Rk)
v k v_k vk~ N ( 0 , Q k , j ) N(0,Q_{k,j}) N(0,Qk,j), R k , Q k , j R_k,Q_{k,j} Rk,Qk,j为协方差矩阵
3.对机器人状态的估计就是已知输入数据 u u u 和观测数据 z z z 条件下,求状态 x , y x,y x,y 的条件概率分布: P ( x , y ∣ z , u ) P(x,y|z,u) P(x,y∣z,u)
直接求后验分布是困难的,但可以求出使得后验概率的最大化的一个状态(MAP):
( x , y ) M A P ∗ = a r g m a x P ( x , y ∣ z , u ) (x,y)_{MAP}^* = arg max P(x,y|z,u) (x,y)MAP∗=argmaxP(x,y∣z,u)
由贝叶斯法则:
P ( x , y ∣ z , u ) ⏟ 后验 = P ( z , u ∣ x , y ) P ( x , y ) P ( z , u ) ∝ P ( z , u ∣ x , y ) ⏟ 似然 P ( x , y ) ⏟ 先验 \underbrace{P(x,y|z,u)}_{\text{后验}} = \dfrac{P(z,u|x,y)P(x,y)}{P(z,u)} \propto \underbrace{P(z,u|x,y)}_{\text{似然}}\underbrace{P(x,y)}_{\text{先验}} 后验 P(x,y∣z,u)=P(z,u)P(z,u∣x,y)P(x,y)∝似然 P(z,u∣x,y)先验 P(x,y)
所以求 ( x , y ) M A P ∗ = a r g m a x P ( x , y ∣ z , u ) (x,y)_{MAP}^* = arg max P(x,y|z,u) (x,y)MAP∗=argmaxP(x,y∣z,u)解最大后验概率等价于最大化似然和先验的乘积,进一步,若我不知道机器人位姿或路标大概在什么地方,此时就没有了先验。那么,可以求解最大似然估计(MLE)
( x , y ) M L E ∗ = a r g m a x P ( z , u ∣ x , y ) (x,y)_{MLE}^* = arg max P(z,u|x,y) (x,y)MLE∗=argmaxP(z,u∣x,y)
直观讲,似然是指“在现在的位姿下,可能产生怎样的观测数据”。由于我们知道观测数据,所以最大似然估计可以理解成:“在什么样的状态下,最可能产生现在观测到的数据”。
对于某一次观测 z k , j = h ( y j , x k ) + v k , j z_{k,j}=h(y_j,x_k)+v_{k,j} zk,j=h(yj,xk)+vk,j
观测数据的条件概率 P ( z j , k ∣ x k , y j ) = N ( h ( y j , x k ) , Q k , j ) P(z_{j,k}|x_k,y_j)=N(h(y_j,x_k),Q_{k,j}) P(zj,k∣xk,yj)=N(h(yj,xk),Qk,j)
这是一个高斯分布,可用最小化负对数求该分布的最大似然
高斯分布展开后对其取负对数,因为对数函数是单调递增的,所以对原函数求最大化相当于对负对数求最小化。
( x k , y j ) ∗ = a r g m a x N ( h ( y j , x k ) , Q k , j ) (x_k,y_j)^* = arg max N(h(y_j,x_k),Q_{k,j}) (xk,yj)∗=argmaxN(h(yj,xk),Qk,j)
我们发现,该式等价于最小化噪声项(即误差)的一个二次型。这个二次型称为马哈拉诺比斯距离,又叫马氏距离。它也可以看成是由 Q k , j − 1 Q_{k,j}^{-1} Qk,j−1 加权之后的欧氏距离(二范数),这里 Q k , j − 1 Q_{k,j}^{-1} Qk,j−1 也叫做信息矩阵,即高斯分布协方差矩阵之逆。
( x k , y j ) ∗ = a r g m i n ( ( z k , j − h ( x k , y j ) ) T Q k , j − 1 ( z k , j − h ( x k , y j ) ) ) (x_k,y_j)^*=arg min ((z_{k,j}-h(x_k,y_j))^TQ_{k,j}^{-1}(z_{k,j}-h(x_k,y_j))) (xk,yj)∗=argmin((zk,j−h(xk,yj))TQk,j−1(zk,j−h(xk,yj)))
批量时刻的数据通常假设各个时刻的输入和观测是相互独立的,对联合分布进行因式分解: P ( z , u ∣ x , y ) = ∏ k P ( u k ∣ x k − 1 , x k ) ∏ k , j P ( z k , j ∣ x k , y j ) P(z,u|x,y) = \displaystyle{\prod_{k}}P(u_k|x_{k-1},x_k)\prod_{k,j}P(z_{k,j}|x_k,y_j) P(z,u∣x,y)=k∏P(uk∣xk−1,xk)k,j∏P(zk,j∣xk,yj)
定义各次输入和观测数据与模型之间的误差:
e u , k = x k − f ( x k − 1 , u k ) e_{u,k}=x_k-f(x_{k-1},u_k) eu,k=xk−f(xk−1,uk)
e z , j , k = z k , j − h ( x k , y j ) e_{z,j,k}=z_{k,j}-h(x_k,y_j) ez,j,k=zk,j−h(xk,yj)
最小化所有时刻估计值与真实读数之间马氏距离,等价于求最大似然估计。负对数允许我们把乘积变成求和:
m i n J ( x , y ) = ∑ k e u , k T R k − 1 e u , k + ∑ k ∑ j e z , k , j T Q k , j − 1 e z , k , j minJ(x,y) = \sum_k e_{u,k}^TR_k^{-1}e_{u,k}+\sum_k \sum_j e_{z,k,j}^TQ_{k,j}^{-1}e_{z,k,j} minJ(x,y)=k∑eu,kTRk−1eu,k+k∑j∑ez,k,jTQk,j−1ez,k,j
这样就得到了一个最小二乘问题( Least Square Problem)
由于噪声的存在,当我们把估计的轨迹与地图代入 SLAM 的运动、观测方程中时,它们并不会完美地成立。这时怎么办呢?我们对状态的估计值进行微调,使得整体的误差下降一些。当然这个下降也有限度,它一般会到达一个极小值。这就是一个典型非线性优化的过程
考虑一个简单的最小二乘问题: m i n x F ( x ) = 1 2 ∣ ∣ f ( x ) ∣ ∣ 2 2 \underset{x}{min} F(x) = \frac{1}{2}||f(x)||_2^2 xminF(x)=21∣∣f(x)∣∣22
注意这里的系数 1 2 \frac{1}{2} 21 是无关紧要的,有些文献上带有这个系数,有些文献则不带,它也不会影响之后的结论。
- 给定某个初始值 x 0 x_0 x0
- 对于第 k k k次迭代,寻找一个增量 Δ x k \Delta x_k Δxk,使得 ∥ f ( x k + Δ x k ) ∥ 2 2 ∥f (x_k + \Delta x_k)∥_2^2 ∥f(xk+Δxk)∥22达到极小值。
- 若 Δ x k \Delta x_k Δxk 足够小,则停止。
- 否则,令 x k + 1 = x k + ∆ x k x_{k+1} = x_k + ∆x_k xk+1=xk+∆xk,返回第 2 步。
现在考虑第 k k k次迭代,假设我们在 x k x_k xk 处,想要寻到增量 ∆ x k ∆x_k ∆xk,那么最直观的方式是将目标函数在 x k x_k xk 附近进行泰勒展开:
F ( x k + ∆ x k ) ≈ F ( x k ) + J ( x k ) T ∆ x k + 1 2 ∆ x k T H ( x k ) ∆ x k F(x_k + ∆x_k) ≈ F(x_k) + J (x_k)^T ∆x_k + \frac{1}{2}∆x_k^TH(x_k)∆x_k F(xk+∆xk)≈F(xk)+J(xk)T∆xk+21∆xkTH(xk)∆xk
其中 J ( x k ) J(x_k) J(xk) 是 F ( x ) F(x) F(x) 关于 x x x 的一阶导数(也叫梯度、雅可比矩阵) H H H 则是二阶导数(海塞矩阵)
一阶梯度法
保留泰勒展开的一阶项,取增量为反向的梯度,即可保证函数下降
∆ x ∗ = − J ( x k ) ∆x^∗ = −J(x_k) ∆x∗=−J(xk)
这只是个方向,通常我们还要再指定一个步长 λ。这种方法被称为最速下降法。它的直观意义是只要我们沿着反向梯度方向前进,在一阶(线性)的近似下,目标函数必定会下降。
二阶梯度法
∆ x ∗ = a r g m m i n ( F ( x k ) + J ( x k ) T ∆ x + 1 2 ∆ x k T H ∆ x k ) ∆x^∗ = arg mmin(F(x_k)+J(x_k)^T∆x + \frac{1}{2}∆x_k^TH∆x_k) ∆x∗=argmmin(F(xk)+J(xk)T∆x+21∆xkTH∆xk)
求右侧等式关于 ∆x 的导数并令它为零,得
J + H ∆ x = 0 ⇒ H ∆ x = − J J + H∆x = 0 \Rightarrow H∆x = −J J+H∆x=0⇒H∆x=−J
求解这个线性方程,就得到了增量,该方法又称为牛顿法。
最速下降法过于贪心,容易走出锯齿路线,反而增加了迭代次数。
牛顿法则需要计算目标函数的 H H H 矩阵,这在问题规模较大时非
常困难,我们通常倾向于避免 H H H 的计算。
将 f ( x ) f(x) f(x) 进行一阶的泰勒展开
f ( x + ∆ x ) ≈ f ( x ) + J ( x k ) T ∆ x k f(x + ∆x) ≈ f(x) + J (x_k)^T ∆x_k f(x+∆x)≈f(x)+J(xk)T∆xk
代人展开求导后令其为零得
J ( x ) f ( x ) + J ( x ) J T ( x ) ∆ x = 0 J(x)f(x)+J(x)J^T(x)∆x = 0 J(x)f(x)+J(x)JT(x)∆x=0
J ( x ) J T ( x ) ⏟ H ( x ) ∆ x = − J ( x ) f ( x ) ⏟ g ( x ) \underbrace{J(x)J^T(x)}_{H(x)} ∆x = \underbrace{-J(x)f(x)}_{g(x)} H(x) J(x)JT(x)∆x=g(x) −J(x)f(x)
该方程是关于变量 ∆ x ∆x ∆x 的线性方程组,称为增量方程,或高斯牛顿方程,或正规方程。把左边的系数定义为 H H H,右边定义为 g g g,那么上式变为: H ∆ x = g H∆x=g H∆x=g.
对比牛顿法可见,高斯牛顿法用 J J T JJ^T JJT 作为牛顿法中二阶Hessian矩阵的近似,从而省略了计算 H H H 的过程。 求解增量方程是整个优化问题的核心所在。
- 给定某个初始值 x 0 x_0 x0。
- 对于第 k k k次迭代,求出当前的雅可比矩阵 J ( x k ) J(x_k) J(xk) 和误差 f ( x k ) f(x_k) f(xk)。
- 求解增量方程: H ∆ x = g H∆x=g H∆x=g。
- 若 Δ x k \Delta x_k Δxk 足够小,则停止。 否则,令 x k + 1 = x k + ∆ x k x_{k+1} = x_k + ∆x_k xk+1=xk+∆xk,返回第 2 步。