Adaptive Nonlinear Control A Tutorial Miroslav Krstić University of California, San Diego Backstepping Tuning Functions Design Modular Design Output Feedback Extensions A Stochastic Example Applications and Additional References main source: Nonlinear and Adaptive Control Design (Wiley, 1995) M. Krstić, I. Kanellakopoulos and P. V. Kokotović
Backstepping (nonadaptive) ẋ 1 = x 2 + ϕ(x 1 ) T θ, ϕ(0) = 0 ẋ 2 = u where θ is known parameter vector and ϕ(x 1 ) is smooth nonlinear function. Goal: stabilize the equilibrium x 1 =0,x 2 = ϕ(0) T θ =0. virtual control for the x 1 -equation: α 1 (x 1 ) = c 1 x 1 ϕ(x 1 ) T θ, c 1 > 0 error variables: z 1 = x 1 z 2 = x 2 α 1 (x 1 ), 2
System in error coordinates: ż 1 = ẋ 1 = x 2 + ϕ T θ = z 2 + α 1 + ϕ T θ = c 1 z 1 + z 2 ż 2 = ẋ 2 α 1 = u α 1 ẋ 1 = u α ( 1 x2 + ϕ T θ ). Need to design u = α 2 (x 1,x 2 ) to stabilize z 1 = z 2 =0. Choose Lyapunov function V (x 1,x 2 )= 1 2 z2 1 + 1 2 z2 2 we have V = z 1 ( c 1 z 1 + z 2 ) + z 2 [u α ( 1 x2 + ϕ T θ )] x [ 1 = c 1 z1 2 + z 2 u + z 1 α ( 1 x2 + ϕ T θ )] }{{} = c 2 z 2 V = c 1 z 2 1 c 2z 2 2 3
z = 0 is globally asymptotically stable invertible change of coordinates x = 0 is globally asymptotically stable The closed-loop system in z-coordinates is linear: [ ] [ ][ ] ż1 c1 1 z1 =. ż 2 1 c 2 z 2 4
Tuning Functions Design Introductory examples: A B C ẋ 1 = u + ϕ(x 1 ) T θ ẋ 1 = x 2 + ϕ(x 1 ) T θ ẋ 1 = x 2 + ϕ(x 1 ) T θ ẋ 2 = u ẋ 2 = x 3 ẋ 3 = u where θ is unknown parameter vector and ϕ(0) = 0. Degin A. Let ˆθ be the estimate of θ and θ = θ ˆθ, Using gives u = c 1 x 1 ϕ(x 1 ) Tˆθ ẋ 1 = c 1 x 1 + ϕ(x 1 ) T θ 5
To find update law for ˆθ(t), choose V 1 (x, ˆθ) = 1 2 x2 1 + 1 2 θ T Γ 1 θ then Update law: V 1 = c 1 x 2 1 + x 1ϕ(x 1 ) T θ θ T Γ 1 ˆθ = c 1 x 2 1 + θ T Γ 1 ( Γϕ(x 1 )x 1 ˆθ ) } {{ } =0 ˆθ = Γϕ(x 1 )x 1, ϕ(x 1 ) regressor gives V 1 = c 1 x 2 1 0. By Lasalle s invariance theorem, x 1 =0, ˆθ = θ is stable and lim t x 1(t) =0 6
Design B. replace θ by ˆθ in the nonadaptive design: z 2 = x 2 α 1 (x 1, ˆθ), α 1 (x 1, ˆθ) = c 1 z 1 ϕ Tˆθ and strengthen the control law by ν 2 (x 1,x 2, ˆθ)(to be designed) u = α 2 (x 1,x 2, ˆθ) = c 2 z 2 z 1 + α 1 error system ( x2 + ϕ Tˆθ ) + ν 2 (x 1,x 2, ˆθ) or [ ż1 ż 2 ] = ż 1 = z 2 + α 1 + ϕ T θ = c 1 z 1 + z 2 + ϕ T θ ż 2 = ẋ 2 α 1 = u α ( 1 x2 + ϕ T θ ) α 1 ˆθ ˆθ = z 1 c 2 z 2 α 1 ϕ T θ α 1 ˆθ + ν 2 (x 1,x 2, ˆθ), ˆθ [ c1 1 1 c 2 ][ z1 z 2 ] + remaining: design adaptive law. ϕ T α 1 ϕ T θ + [ 0 ˆθ + ν 2 (x 1,x 2, ˆθ) α 1 } ˆθ {{} =0 ] 7
Choose we have The choice makes V 2 (x 1,x 2, ˆθ) = V 1 + 1 2 z2 2 = 1 2 z2 1 + 1 2 z2 2 + 1 2 θ T Γ 1 θ V 2 = c 1 z 2 1 c 2z 2 2 +[z 1, z 2 ] ϕ T α 1 ϕ T = c 1 z1 2 c 2z2 2 + θ T Γ (Γ 1 [ ϕ, α 1 x ϕ ] 1 ˆθ = Γτ 2 (x, ˆθ) = Γ [ ϕ, α 1 x ϕ ] 1 [ z1 z 2 ] = Γ (τ 1,τ 2 are called tuning functions) V 2 = c 1 z 2 1 c 2z 2 2, thus z =0, θ =0isGSandx(t) 0ast. θ θ T Γ 1 ˆθ [ z1 z 2 ] ˆθ ( τ1 {}}{ ϕz 1 α 1 ). ϕz 2 ) }{{} τ 2 8
θ + ˆθ θ [ ] z1 [ ] z [ ] ϕ T 2 ϕ + T T τ 2 α 1 ϕ T α 1 ϕ T [ ] c1 1 1 c 2 ˆθ Γ The closed-loop adaptive system 9
Design C. We have one more integrator, so we define the third error coordinate and replace ˆθ in design B by potential update law, z 3 = x 3 α 2 (x 1,x 2, ˆθ) ν 2 (x 1,x 2, ˆθ) = α 1 ˆθ Γτ 2(x 1,x 2, ˆθ). Now the z 1,z 2 -system is and [ ż1 ż 2 ] = [ c1 1 1 c 2 ][ z1 z 2 ] + ϕ T α 1 ϕ T θ + [ 0 z 3 + α 1 ˆθ (Γτ 2 ˆθ) ] V 2 = c 1 z 2 1 c 2z 2 2 + z 2z 3 + z 2 α 1 ˆθ (Γτ 2 ˆθ)+ θ T (τ 2 Γ 1 ˆθ). 10
z 3 -equation is given by Choose ż 3 = u α 2 = u α 2 ( x2 + ϕ T θ ) α 2 x 3 α 2 x 2 ˆθ ( x2 + ϕ Tˆθ ) α 2 x 3 α 2 ˆθ α 2 ϕ T θ. x 2 ˆθ ˆθ V 3 (x, ˆθ) = V 2 + 1 2 z2 3 = 1 2 z2 1 + 1 2 z2 2 + 1 2 z2 3 + 1 2 θ T Γ 1 θ we have V 3 = c 1 z1 2 c 2z2 2 + z 1 2 α ˆθ (Γτ 2 ˆθ) [ +z 3 z 2 + u α ( 2 x2 + ϕ Tˆθ ) α 2 x 3 α 2 x 2 ˆθ ( + θ T τ 2 α ) 2 ϕz 3 Γ 1 ˆθ. ˆθ ] 11
Pick update law ˆθ =Γτ 3 (x 1,x 2,x 3, ˆθ) = Γ and control law ( τ 2 α 2 ϕz 3 ) =Γ [ ϕ, α 1 x ϕ, α 2 1 x ϕ ] 1 z 1 z 2 z 3 u = α 3 (x 1,x 2,x 3, ˆθ) = z 2 c 3 z 3 + α 2 results in V 3 = c 1 z1 2 c 2z2 2 c 3z3 2 + z 1 2 α ˆθ (Γτ 2 ˆθ) + z 3 Notice we have V 3 = c 1 z 2 1 c 2z 2 2 c 3z 2 3 + z 3 ˆθ Γτ 2 = ˆθ Γτ 3 Γ α 2 ϕz 3 Stability and regulation of x to zero follows. ( ( x2 + ϕ Tˆθ ) + α 2 x 2 x 3 + ν 3, ( ν 3 α ) 2 ˆθ. ˆθ ν 3 α 2 ˆθ Γτ 3 + α 1 ˆθ Γ α 2 ϕz 2 } {{ } =0 ). 12
Further insight: ż 1 ż 2 ż 3 = c 1 1 0 1 c 2 1 0 1 c 3 z 1 z 2 z 3 + ϕ T α 1 x ϕ T 1 α 2 x ϕ T 1 θ + 0 α 1 ˆθ (Γτ 2 ˆθ) ν 3 α 2 ˆθ Γτ 3. ż1 ż 2 ż 3 = ˆθ Γτ 2 = ˆθ Γτ 3 Γ α 2 ϕz 3 c 1 1 0 1 c 2 1+ α 1 0 1 c 3 ˆθ Γ α 2 ϕ z 1 z 2 z 3 ϕ T + α 1 ϕ T θ + α 2 ϕ T 0 0 ν 3 α 2 ˆθ Γτ 3 seletion of ν 3 ż 1 ż 2 ż 3 = c 1 1 0 1 c 2 1+ α 1 0 1 α 1 ˆθ Γ α 2 ϕ c 3 ˆθ Γ α 2 x ϕ 1 z 1 z 2 z 3 + ϕ T α 1 x ϕ T 1 α 2 x ϕ T 1 θ. 13
General Recursive Design Procedure parametric strict-feedback system: where β and ϕ i are smooth. ẋ 1 = x 2 + ϕ 1 (x 1 ) T θ ẋ 2 =. x 3 + ϕ 2 (x 1,x 2 ) T θ ẋ n 1 = x n + ϕ n 1 (x 1,...,x n 1 ) T θ ẋ n = β(x)u + ϕ n (x) T θ y = x 1 Objective: asymptotically track reference output y r (t), with y r (i) (t),i= 1,,n known, bounded and piecewise continuous. 14
Tuning functions design for tracking (z 0 =0,α0 =0,τ0 =0) z i = x i y (i 1) r α i 1 α i ( x i, ˆθ, ȳ (i 1) r ) = z i 1 c i z i w T i ˆθ + ν i ( x i, ˆθ, ȳ (i 1) r ) = + α i 1 ˆθ Γτ i + τ i ( x i, ˆθ, ȳ (i 1) r ) = τ i 1 + w i z i w i ( x i, ˆθ, ȳ (i 2) r ) = ϕ i i 1 k=1 i 1 k=2 i 1 k=1 ( α k 1 ˆθ Γw iz k α i 1 x k α i 1 x k ϕ k i =1,...,n x k+1 + α i 1 y (k 1) r y (k) r ) + ν i x i =(x 1,...,x i ), ȳ (i) r =(y r, ẏ r,...,y (i) r ) Adaptive control law: Parameter update law: u = 1 β(x) [ αn (x, ˆθ, ȳ (n 1) r )+y (n) r ] ˆθ =Γτ n (x, ˆθ, ȳ (n 1) r )=ΓWz 15
Closed-loop system ż = A z (z, ˆθ, t)z + W (z, ˆθ, t) T θ ˆθ = ΓW (z, ˆθ, t)z, where A z (z, ˆθ, t) = c 1 1 0 0 1 c 2 1+σ 23 σ 2n 0 1 σ 23............... 1+σ n 1,n 0 σ 2n 1 σ n 1,n c n σ jk (x, ˆθ) = α j 1 ˆθ Γw k This structure ensures that the Lyapunov function V n = 1 2 zt z + 2 θ 1 T Γ 1 θ has derivative V n = n k=1 c k z 2 k. 16
Modular Design Motivation: Controller can be combined with different identifiers. (No flexibility for update law in tuning function design) Naive idea: connect a good identifier and a good controller. Example: error system ẋ = x + ϕ(x) θ suppose θ(t) =e t and ϕ(x) =x 3,wehave ẋ = x + x 3 e t But, when x 0 > 32, x(t) as t 1 3 ln x 2 0 x 2 0 3/2 Conclusion: Need stronger controller. 17
Controller Design. nonlinear damping closed-loop system With V = 1 2 x2,wehave u = x ϕ(x)ˆθ ϕ(x) 2 x ẋ = x ϕ(x) 2 x + ϕ(x) θ. V = x 2 ϕ(x) 2 x 2 + xϕ(x) θ [ = x 2 ϕ(x)x 2 θ 1 ] 2 + 1 4 θ 2 x 2 + 1 4 θ 2. bounded θ(t) bounded x(t) 18
For higher order system set ẋ 1 = x 2 + ϕ(x 1 ) T θ ẋ 2 = u and define error system α 1 (x 1, ˆθ) = c 1 x 1 ϕ(x 1 ) Tˆθ κ 1 ϕ(x 1 ) 2 x 1, c 1,κ 1 > 0 z 2 = x 2 α 1 (x 1, ˆθ) ż 1 = c 1 z 1 κ 1 ϕ 2 z 1 + ϕ T θ + z 2 ż 2 = ẋ 2 α 1 = u α 1 ( x2 + ϕ T θ ) α 1 ˆθ ˆθ. 19
Consider V 2 = V 1 + 1 2 z2 2 = 1 2 z 2 we have V 2 c 1 z1 2 + 1 θ 2 + z 1 z 2 + z 2 4κ 1 controller c 1 z 2 1 + 1 4κ 1 θ 2 +z 2 α u = z 1 c 2 z 2 κ 1 2 ϕ achieves [ [ u+z 1 α 1 2 u α ( 1 x2 + ϕ T θ ) α 1 ˆθ ˆθ ( x2 +ϕ Tˆθ ) ( α1 ϕ T θ+ α 1 ˆθ ˆθ α T 2 z 2 g 1 2 z 2 + α 1 ˆθ ( V 2 c 1 z1 2 c 2z2 2 1 + + 1 ) θ 2 + 1 ˆθ 2 4κ 1 4κ 2 4g 2 ] )] ( x2 + ϕ Tˆθ ),. bounded θ, bounded ˆθ(or L 2 ) bounded x(t) 20
Controller design in the modular approach (z 0 =0,α0 =0) z i = x i y (i 1) r α i 1 α i ( x i, ˆθ, ȳ (i 1) r ) = z i 1 c i z i w T i ˆθ + w i ( x i, ˆθ, ȳ (i 2) r ) = ϕ i i 1 k=1 α i 1 ϕ k x k i 1 k=1 ( α i 1 x k s i ( x i, ˆθ, ȳ (i 2) r ) = κ i w i 2 T 2 α i 1 + g i ˆθ i =1,...,n x k+1 + α i 1 y (k 1) r y (k) r ) s i z i x i =(x 1,...,x i ), ȳ (i) r =(y r, ẏ r,...,y (i) r ) Adaptive control law: u = 1 β(x) [ αn (x, ˆθ, ȳ (n 1) r )+y (n) r ] Controller module guarantees: If θ L and ˆθ L 2 or L then x L 21
Requirement for identifier error system ż = A z (z, ˆθ, t)z + W (z, ˆθ, t) T θ + Q(z, ˆθ, t) T ˆθ where A z (z, ˆθ, t) = W (z, ˆθ, t) T = c 1 s 1 1 0 0 1 c 2 s 2 1.... 0 1...... 0.......... 1 0 0 1 c n s n w T 1 w T 2. w T n, Q(z, ˆθ, t) T = 0 α 1 ˆθ. α n 1 ˆθ. 22
Since W (z, ˆθ, t) T = 1 0 0 α 1 x 1.... 1....... 0 α n 1 α n 1 x n 1 1 F (x) T = N(z, ˆθ, t)f (x) T. Identifier properties: (i) θ L and ˆθ L 2 or L, (ii) if x L then F (x(t)) T θ(t) 0 and ˆθ(t) 0. 23
Identifier Design Passive identifier ẋ = f + F T θ x ˆx = ( A 0 λf T FP ) (ˆx x)+f + F Tˆθ ˆx + ɛ ˆθ ˆθ ΓFP 24
θ ɛ FPɛ Γ s ɛ = [ A 0 λf (x, u) T F (x, u)p ] ɛ + F (x, u) T θ update law Use Lyapunov function ˆθ =ΓF (x, u)pɛ, Γ=Γ T > 0. V = θ T Γ 1 θ + ɛ T Pɛ its derivative satisfies V ɛ T ɛ λ λ(γ) 2 ˆθ 2. Thus, whenever x is bounded, F (x(t)) T θ(t) 0and ˆθ(t) 0. ( ɛ(t) 0 because 0 ɛ(τ)dτ = ɛ(0) exists, Barbalat s lemma...) 25
Swapping identifier ẋ = f + F T θ x Ω 0 = ( A 0 λf T FP ) (Ω 0 x)+f Ω 0 + + ɛ Ω = ( A 0 λf T FP ) Ω+F Ω T. ˆθ ˆθ ΓΩ 1+ν Ω 2 26
define ɛ = x +Ω 0 Ω T θ, ɛ = [ A 0 λf (x, u) T F (x, u)p ] ɛ. Choose V = 1 2 θ T Γ 1 θ + ɛp ɛ we have V 3 ɛ T ɛ 41+νtr{Ω T Ω}, proves identifier properties. 27
Output Feedback Adaptive Designs ẋ = Ax + φ(y)+φ(y)a + y = e T 1 x, [ 0 b ] σ(y)u, x IR n φ(y) = ϕ 0,1 (y). ϕ 0,n (y) A = I 0. n 1 0 0, Φ(y) =, ϕ 1,1 (y). ϕ q,1 (y). ϕ 1,n (y) ϕ q,n (y), unknown constant parameters: a =[a 1,...,a q ] T, b =[b m,...,b 0 ] T. 28
State estimation filters Filters: ξ = A 0 ξ + ky + φ(y) Ξ = A 0 Ξ+Φ(y) λ = A 0 λ + e n σ(y)u v j = A j 0λ, j =0,...,m Ω T = [v m,...,v 1,v 0, Ξ] 29
Parameter-dependent state estimate ˆx = ξ +Ω T θ The vector k =[k 1,...,k n ] T chosen so that the matrix A 0 = A ke T 1 is Hurwitz, that is, PA 0 + A T 0 P = I, P = P T > 0 The state estimation error ε = x ˆx satisfies ε = A 0 ε 30
Parametric model for adaptation: where ẏ = ω 0 + ω T θ + ε 2 = b m v m,2 + ω 0 + ω T θ + ε 2, ω 0 = ϕ 0,1 + ξ 2 ω = [v m,2,v m 1,2,...,v 0,2, Φ (1) +Ξ (2) ] T ω = [0,v m 1,2,...,v 0,2, Φ (1) +Ξ (2) ] T. 31
Since the states x 2,...,x n are not measured, the backstepping design is applied to the system ẏ = b m v m,2 + ω 0 + ω T θ + ε 2 v m,i = v m,i+1 k i v m,1, i =2,...,ρ 1 v m,ρ = σ(y)u + v m,ρ+1 k ρ v m,1. The order of this system is equal to the relative degree of the plant. 32
Extensions Pure-feedback systems. ẋ i = x i+1 + ϕ i (x 1,...,x i+1 ) T θ, i =1,...,n 1 ẋ n = ( β 0 (x)+β(x) T θ ) u + ϕ 0 (x)+ϕ n (x) T θ, where ϕ 0 (0) = 0, ϕ 1 (0) = = ϕ n (0) = 0, β 0 (0) 0. Because of the dependence of ϕ i on x i+1, the regulation or tracking for pure-feedback systems is, in general, not global, even when θ is known. 33
Unknown virtual control coefficients. ẋ i = b i x i+1 + ϕ i (x 1,...,x i ) T θ, i =1,...,n 1 ẋ n = b n β(x)u + ϕ n (x 1,...,x n ) T θ, where, in addition to the unknown vector θ, the constant coefficients b i are also unknown. The unknown b i -coefficients are frequent in applications ranging from electric motors to flight dynamics. The signs of b i, i =1,...,n, are assumed to be known. In the tuning functions design, in addition to estimating b i, we also estimate its inverse ϱ i =1/b i. In the modular design we assume that in addition to sgnb i, a positive constant ς i is known such that b i ς i. Then, instead of estimating ϱ i =1/b i,we use the inverse of the estimate ˆb i, i.e., 1/ˆb i, where ˆb i (t) is kept away from zero by using parameter projection. 34
Multi-input systems. Ẋ i = B i ( X i )X i+1 +Φ i ( X i ) T θ, i =1,...,n 1 Ẋ n = B n (X)u +Φ n (X) T θ, where X i is a ν i -vector, ν 1 ν 2 ν n, X i = [ X1 T,...,XT i ] T, X = X n, and the matrices B i ( X i ) have full rank for all X i IR ij=1 ν j. The input u is a ν n -vector. The matrices B i can be allowed to be unknown provided they are constant and positive definite. 35
Block strict-feedback systems. ẋ i = x i+1 + ϕ i (x 1,...,x i,ζ 1,...,ζ i ) T θ, i =1,...,ρ 1 ẋ ρ = β(x, ζ)u + ϕ ρ (x, ζ) T θ ζ i = Φ i,0 ( x i, ζ i )+Φ i ( x i, ζ i ) T θ, i =1,...,ρ with the following notation: x i = [x 1,...,x i ] T, ζ i = [ ζ1 T,...,ζT i x = x ρ,andζ = ζ ρ. ] T, Each ζ i -subsystem is assumed to be bounded-input bounded-state (BIBS) stable with respect to the input ( x i, ζ i 1 ). For this class of systems it is quite simple to modify the procedure in the tables. Because of the dependence of ϕ i on ζ i, the stabilizing function α i is augmented by the term + i 1 α i 1 k=1 ζ Φ k k,0, and the regressor w i is augmented by i 1 k=1 Φ i ( αi 1 ζ k ) T. 36
Partial state-feedback systems. In many physical systems there are unmeasured states as in the output-feedback form, but there are also states other than the output y = x 1 that are measured. An example of such a system is ẋ 1 = x 2 + ϕ 1 (x 1 ) T θ ẋ 2 = x 3 + ϕ 2 (x 1,x 2 ) T θ ẋ 3 = x 4 + ϕ 3 (x 1,x 2 ) T θ ẋ 4 = x 5 + ϕ 4 (x 1,x 2 ) T θ ẋ 5 = u + ϕ 5 (x 1,x 2,x 5 ) T θ. The states x 3 and x 4 are assumed not to be measured. To apply the adaptive backstepping designs presented in this chapter, we combine the state-feedback techniques with the output-feedback techniques. The subsystem (x 2, x 3, x 4 ) is in the output-feedback form with x 2 as a measured output, so we employ a state estimator for (x 2, x 3, x 4 ) using the filters introduced in the section on output feedback. 37
Example of Adaptive Stabilization in the Presence of a Stochastic Disturbance dx = udt + xdw w: Wiener process with E { dw 2} = σ(t) 2 dt, no a priori bound for σ Control laws: Disturbance Attenuation: u = x x 3 Adaptive Stabilization: u = x ˆθx, ˆθ = x 2 38
Disturbance Attenuation Adaptive Stabilization 7 6 5 4.5 x 4 3.5 3 2.5 2 x 4 3 2 1.5 1 1 0.5 t 0 0 0.5 1 1.5 2 2.5 0 0 0.5 1 1.5 2 2.5 t 3 2.5 ˆθ 2 1.5 1 0.5 t 0 0 0.5 1 1.5 2 2.5 39
Major Applications of Adaptive Nonlinear Control Electric Motors Actuating Robotic Loads Nonlinear Control of Electric Machinery, Dawson, Hu, Burg, 1998. Marine Vehicles (ships, UUVs; dynamic positioning, way point tracking, maneuvering) Marine Control Systems, Fossen, 2002 Automotive Vehicles (lateral and longitudinal control, traction, overall dynamics) The groups of Tomizuka and Kanellakopoulos. Dozens of other occasional applications, including: aircraft wing rock, compressor stall and surge, satellite attitude control. 40
Other Books on Adaptive NL Control Theory Inspired by KKK 1. Marino and Tomei (1995), Nonlinear Control Design: Geometric, Adaptive, and Robust 2. Freeman and Kokotovic (1996), Robust Nonlinear Control Design: State Space and Lyapunov Techniques 3. Qu (1998), Robust Control of Nonlinear Uncertain Systems 4. Krstic and Deng (1998), Stabilization of Nonlinear Uncertain Systems 5. Ge, Hang, Lee, Zhang (2001), Stable Adaptive Neural Network Control 6. Spooner, Maggiore, Ordonez, and Passino (2002), Stable Adaptive Control and Estimation for Nonlinear Systems: Fuzzy Approximation Techniques Neural and 7. French, Szepesvari, Rogers (2003), Performance of Nonlinear Approximate Adaptive Controllers 41
Adaptive NL Control/Backstepping Coverage in Major Texts 1. Khalil (1995/2002), Nonlinear Systems 2. Isidori (1995), Nonlinear Control Systems 3. Sastry (1999), Nonlinear Systems: Analysis, Stability, and Control 4. Astrom and Wittenmark (1995), Adaptive Control 42