《系统辨识作业随机牛顿法》由会员分享,可在线阅读,更多相关《系统辨识作业随机牛顿法(3页珍藏版)》请在金锄头文库上搜索。
1、随机牛顿法:算法基本原理:1.随机逼近法本质上类似最速下降法,缺点是当搜索逼近极小值点时,易发生振荡,搜索速度慢;2.为加快搜索速度,采用随机牛顿法如下:3. 设R(k)为Hessian矩阵的k时刻的估计值,R(k)的随机逼近算法可根据Robbins-Monro算法求出,随机牛顿算法归结为:(k)为收敛因子,(k)=1/k。程序设计思路:待辨识对象参数a=1 -1.5 0.7; b=1 0.5;输入采用长度L=400的白噪声序列,输出,输入和输出数据均含不相关随机噪声,(k)=1/k。利用上述递推公式,辨识系统参数。辨识结果:估计参数值ans = -1.4782 0.6778 0.9795 0
2、.5026经过400步的计算,系统辨识参数与真值基本相同。程序:%递推随机牛顿参数估计(RSNA)clear; clc;a=1 -1.5 0.7; %对象参数b=1 0.5; d=3; na=length(a)-1; %na、nb为A、B阶次nb=length(b)-1; L=400; %仿真长度uk=zeros(d+nb,1); %输入初值:uk(i)表示u(k-i)yk=zeros(na,1); %输出初值xik=zeros(na,1); %白噪声初值etak=zeros(d+nb,1); %白噪声初值u=randn(L,1); %输入采用白噪声序列xi=sqrt(0.1)*randn(L
3、,1); %白噪声序列eta=sqrt(0.25)*randn(L,1); %白噪声序列theta=a(2:na+1);b; %对象参数真值thetae_1=zeros(na+nb+1,1); %参数估计初值Rk_1=eye(na+nb+1); %-随机牛顿算法-for k=1:L phi=-yk;uk(d:d+nb); e(k)=a*xi(k);xik-b*etak(d:d+nb); y(k)=phi*theta+e(k); %采集输出数据 R=Rk_1+(phi*phi-Rk_1)/k; dR=det(R); if abs(dR)10(-6) %避免矩阵R非奇异 R=eye(na+nb+1
4、); end IR=inv(R); thetae(:,k)=thetae_1+IR*phi*(y(k)-phi*thetae_1)/k; %更新数据 thetae_1=thetae(:,k); Rk_1=R; for i=d+nb:-1:2 uk(i)=uk(i-1); etak(i)=etak(i-1); end uk(1)=u(k); etak(1)=eta(k); for i=na:-1:2 yk(i)=yk(i-1); xik(i)=xik(i-1); end yk(1)=y(k); xik(1)=xi(k);enddisp(估计参数值)thetae(:,400)plot(1:L,thetae);xlabel(k); ylabel(参数估计a、b);legend(a_1,a_2,b_0,b_1); axis(0 L -2 2);