RBF神经网络可以逼近未知函数。
前提条件是
1,知道未知函数的输入变量,用来作为RBF神经网络的输入
2,知道输入变量的变化范围,用来确定高斯基函数的b 和c
Lyapunov第二项含义:
初始时网络权值和真实未知函数的网络权值有误差,V为正值。对V求导令V为单调递减函数,最终网络权值会逼近真实函数的网络权值。
clear all;
close all;
clc;
%仿真时间、仿真步长
t=10;
ts=0.001;
%控制器参数
c=10;
cij=[-2 -1 0 1 2];
bj=3;
w(1:5,1)=0.1;
gama=100;
k1=3;
b=10;
D=1.5;
%控制对象初始状态
x(1)=0;
dx(1)=10*ts;
ef0=0;
for k=1:1:t/ts
times(k)=k*ts;
xd(k)=sin(k*ts);
dxd(k)=cos(k*ts);
e(k)=x(k)-xd(k);
ef(k+1)=ef0+e(k)*ts;
ef0=ef(k+1);
s(k)=e(k)+c*ef(k);
xi=e(k)+xd(k);
W=[w(1,k),w(2,k),w(3,k),w(4,k),w(5,k)];
for j=1:1:5
h(j)=exp(-(xi-cij(j))^2/(2*bj^2));
end
dw=gama*s(k)*h';
w(:,k+1)=w(:,k)+dw*ts;
fn(k)=W*h';
ut(k)=1/b*(-c*e(k)+dxd(k)-fn(k)-k1*s(k)-D*sign(s(k)));
dt(k)=0.5*sin(k*ts);
fx(k)=10*x(k)^2;
%ut(k)=1/b*(-c*e(k)+dxd(k)-fx(k)-k*s(k)-D*sign(s(k)));
dx(k+1)=(b*ut(k)+fx(k)+dt(k));
x(k+1)=x(k)+dx(k)*ts;
end
x(:,end)=[];
figure(1)
plot(times,x,times,xd);
figure(2)
plot(times,ut);
figure(3)
plot(times,fx,times,fn)