BP函数逼近.docVIP

  • 6
  • 0
  • 约1.51千字
  • 约 3页
  • 2017-02-08 发布于重庆
  • 举报
BP函数逼近

题目:利用BP网络逼近对象,T=1ms, %%逼近函数 clc;clear all; close all; yita = 0.5; alfa = 0.05; X= [0 0]; u_1 = 0;y_1 = 0; m=2;q=6;l=1; wij = rands(q,m); wij0=zeros(size(wij)); wki = rands(l,q); wki0=zeros(size(wki)); Oi=0;Ok=0;yn=0;e=0; time = 0; err=0.000001; ts = 0.001; for k=1:1:1000 time(k) = k*ts; u(k) = 0.50*sin(3*2*pi*k*ts); y(k) = u_1^3+y_1./(1+y_1^2); %计算隐含层各神经元输出 neti=wij*X; for j=1:1 for i=1:q Oi(i,j)=1/(1+exp(-neti(i,j))); end end %计算输出层各神经元输出 netk=wki*Oi; for i=1:1 for j =1:l Ok(j,i)=1/(1+exp(-netk(j,i))); end end %实际输出 yn(k)=Ok; %误差输出 e(k) =y(k) - yn(k); E=e(k)*e(k)/2; if(Eerr) break; end %输出层求导 fk(k) = exp(-netk(k))/(1+exp(netk(k)))^2; %调整输出层加权系数 deltak =(y(k)-yn(k))*fk(k); w=wki; wki= wki+yita*deltak*yn(k)+alfa*(wki-wki0); wki0=w; %隐含层求导 for i = 1:l for j =1:q fi(j,i)= exp(-neti(j,i))/(1+exp(neti(j,i)))^2; end end fi= fi(j,i); %调整隐含层加权系数 deltai=fi.*deltak*wki; w=wij; wij=wij+yita*deltai*X+alfa*(wij-wij0); wij0=w; X(1) = u(k); X(2) = y(k); u_1 = u(k); y_1 = y(k); end figure(1); plot(time,y,r,time,yn,b);title(逼近结果) xlabel(times);ylabel(y and yn); figure(2); plot(time,y-yn,r);title(逼近误差) xlabel(times);ylabel(error); 执行后的变量结果: 由y_1=0,这与所附初值相同,不知道为何迭代步数只走了一步,还请王老师指点。

文档评论(0)

1亿VIP精品文档

相关文档