基于BP神经网络算法的正余弦函数逼近_第1页
基于BP神经网络算法的正余弦函数逼近_第2页
基于BP神经网络算法的正余弦函数逼近_第3页
基于BP神经网络算法的正余弦函数逼近_第4页
基于BP神经网络算法的正余弦函数逼近_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验二基于BP神经网络算法的正余弦函数逼近实验目的(1)掌握MATLAB子函数编写与调用。(2)理解BP神经元网络算法的原理,并利用程序实现通过BP算法逼近任意非线性函数。实验内容与实验要求掌握BP神经网络算法的原理。掌握MATLAB子函数的编写方法及调用方法。根据BP神经网络算法的原理,编写MATLAB程序,逼近非线性函数。实验原理q一个2×3×1的神经网络即输入层有两个节点,隐层含三个节点,输出层有一个节点,神经网络如图示。q1125436eX1eX1X2X2wwww图1神经网络结构图图中为输入层与隐层的权值,为隐层与输出层的权值,、是神经网络的输入值,是网络的输出值,为教师信号,为神经网络的实际输出与期望输出的误差。在这个神经网络中,节点1,2是输入层,节点3,4,5是隐层,节点6是输出层;输入层和隐层之间的权值依次,隐层和输出层间的权值为,下角标为节点的编号;隐层和输出层节点的阈值依次为,,,。①前馈计算设隐层的第个节点的输入和输出分别为:其中为激励函数由于隐层的输出就是输出层的输入,则输出层第个节点的总输入和输出分别为:若网络输出与实际输出存在误差,则将误差信号反向传播,并不断地修正权值,直至误差达到要求为止。②权值调整设误差函数定义为:为了简便,以下计算都是针对每个节点而言,误差函数记作。输出层权值的调整权值修正公式为:定义反传误差信号为:式中所以又由此可得输出层的任意神经元权值的修正公式:或(隐层权值的调整式中由于误差函数与隐层输入不存在直接的函数关系,因此不能直接求得,所以隐层的反传误差信号为由此可得,隐层权值的修正公式为;或实验设备计算机MATLAB软件实验流程初始化w循环1开始,计算三角函数y=sin(4*3.14*k1*s/360)的值循环2开始,进行前馈的计算,x(k+1)=x(k)+q(k),out1(k+1)=(1-exp(-x(k+1)))/(1+exp(-x(k+1)));out2(k+1)=1/(1-exp(-x(k+1)));n1(k+1)=wy1(k+1)=1/(1+exp(-n2(k+1))),y2(k+1)=(1-exp(-n2(k+1)))/(1+exp(-n2(k+1)))计算偏差e2(k+1)=(y(k+1)-y2(k+1))^2/2;修正项xj1(k+1)=e2(k+1)-e2(k);xj2(k+1)=e2(k+1)-2*e2(k)+e1(k);反传信号的偏差为δ(k+1)=y1(k+1)*(1-y2(k+1))*(y(k+1)-y2(k+1))调整隐层权值ΔwΔq=q1-q0;q2(k+1)=q1(k)+0.8*Δwk+1+0.4*ΔΔwwijk+1q0(k+1)=q1(k);q1(k+1)=q2(k+1).调整输出层权值Δh=wjkww20(k+1)=w21(k);w21(k+1)=wΔp=p(k+1)-p(k);p(k+1)=p(k)+0.9*δk+1+0.6*p1(k+1)=p1(k);p1(k+1)=p(k+1).判断偏差e,若小于0.0000001,则循环2结束;否则,跳转执行步骤(2)直到循环1结束。得出实验结果为三角函数y=sin(4*3.14*k1*s/360)与逼近曲线的图形。实验结果实验结果分析利用BP神经网络算法基本能实现非线性函数的逼近,但只能对正余弦进行逼近。在函数y取得最大值时,误差比其他区域要大,说明在峰值时刻的点越难逼近。而且逼近的程度与权值的加权系数有很大关系。实验代码%BPAlgorithmsProgram%Givinginitialvalue;%初始化w10=[00;00;00];w11=[00;00;00];w20=[0;0;0];w21=[0;0;0];q0=[000];q1=[000];p0=0;p1=0;xj=[0;0];e0=0;e1=0;e2=0;k1=5;k2=100;fors=1:72yp1=sin(4*3.14*k1*s/360);fork=1:k2;%前馈计算%得到m1,o1两个数组(3*1)fori=1:3x=w11(i,1)*xj(1,:)+w11(i,2)*xj(2,:);%xj(1,:)表示取行q1(:,i)表示取列z=x+q1(:,i);%相当于加一个初始化时的值o=(1-exp(-z))./(1+exp(-z));%算的是Oi激励函数1为f1(z)=(1-e^(-z))/(1+e^(-z))m=1./(1+exp(-z));%算的是Oi1激励函数2为f2(z)=1./(1+e^(-z))m1(i,:)=m;%把m的值赋给m1数组相对应的行o1(i,:)=o;%把o的值赋给o1数组相对应的行endyb=0;fori=1:3yb=yb+w21(i,:)*o1(i,:);%yb=Ikendyi=yb+p1;%yi为修正后的值n=1./(1+exp(-yi));%在函数2下的输出函数值n->Oky=(1-exp(-yi))./(1+exp(-yi));%在函数1下的输出函数值y->y%calculationerrorbetweenaimandpracticeoutput;e0=e1;e1=e2;e2=((yp1-y).^2)./2;%y的权值误差函数的计算,放入e2xj1=e2-e1;%对修正项的修正,放入xj1xj2=e2-2*e1+e0;xj=[xj1;xj2];%总的修正数组xj(2*1)d2=n*(1-y)*(yp1-y);%d2:输出的反传误差信号%隐层的权值调整%revisingweightedvalueandthresholdvalueinhiddenlayer;fori=1:3u=w21(i,:)*d2;%u->dartak*wjkd1=(1-o1(i,:)).*u;%d1->(1-oj)*ud0=m1(i,:)*d1;%d0->m1*d1;d0=Λwijqw=q1(:,i)-q0(:,i);q2=q1(:,i)+0.8*d0+0.4*qw;%设定的阈值与计算出的阈值之间的偏差q3(:,i)=q2;forj=1:2dw=w11(i,j)-w10(i,j);w12=w11(i,j)+0.8*d0*xj(j,:)+0.6*dw;%设定的阈值与计算出的阈值之间的偏差w13(i,j)=w12;endendw10=w11;w11=w13;q0=q1;q1=q3;%输出层的权值调整%revisingweightedvalueandthresholdvalueinoutputlayer;fori=1:3h=w21(i,:)-w20(i,:);w22=w21(i,:)+0.4*d2*o1(i,:)+0.75*h;w23(i,:)=w22;endw20=w21;w21=w23;ph=p1-p0;p2=p1+0.9*d2+0.6*ph;p0=p1;p1=p2;%writingerrorvalueandoutputvalue;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论