📄 bp网络逼近.m
字号:
%BP网络逼近
clear;
clc;
z=0.50;%学习速率
a=0.05;%动量因子
w2=rands(6,1);
w2_1=w2;
w2_2=w2_1;
w1=rands(2,6);
w1_1=w1;
w1_2=w1;%?
dw1=0*w1;
x=[0,0]';
u1=0;
y1=0;
I=[0,0,0,0,0,0]';
Iout=[0,0,0,0,0,0]';
FI= [0,0,0,0,0,0]';
t=0.001;
for k=1:1:1000
time(k)=k*t;
u(k)=0.50*sin(5*pi*k*t);
y(k)=u1^3+y1/(1+y1^2);
for j=1:1:6;
I(j)=x'*w1(:,j);
Iout(j)=1/(1+exp(-I(j)));
end
yn(k)=w2'*Iout;
e(k)=y(k)-yn(k);
w2=w2_1+(z*e(k))*Iout+a*(w2_1-w2_2);
for j=1:1:6;
FI(j)=exp(-I(j))/(1+exp(-I(j)))^2;
end
for i=1:1:2;
for j=1:1:6;
dw1(i,j)=e(k)*z*FI(j)*w2(j)*x(i);
end
end
w1=w1_1+dw1+a*(w1_1-w1_2);
yu=0;
for j=1:1:6;
yu=yu+w2(j)*w1(1,j)*FI(j);
end
dyu(k)=yu;
x(1)=u(k);
x(2)=y(k);
w1_1=w1;
w1_2=w1_1;
w2_1=w2;
w2_2=w2_1;
u1=u(k);
y1=y(k);
end
figure(1);
plot(time,y,'r',time,yn,'k');
xlabel('times');ylabel('y and yn');
figure(2);
plot(time,y-yn);
xlabel('times');ylabel('error');
figure(3);
plot(time,dyu);
xlabel('times');ylabel('dyu');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -