欢迎来到天天文库
浏览记录
ID:28799809
大小:125.54 KB
页数:4页
时间:2018-12-14
《基于bp神经网络逼近函数》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、用神经网络拟合一个非线性函数姓名:李海浪班级:10级自动化3班学号:P1018134791.基于BP神经网络逼近函数假设频率参数k=1,绘制要逼近的非线性函数的曲线。函数的曲线如图1所示.MATLAB程序如下:k=1;p=[0:0.05:10];t=sin(k*pi/4*p);plot(p,t);title('要逼近的正弦函数');xlabel('时间');ylabel(正弦波函数');图1要逼近的正弦函数曲线1.建立网络应用newff()函数建立BP网络结构。隐层神经元数目n可以改变,暂设为n=3,输出层有一个神经元。选择隐层和输出层神经元传递函数分别为tansig函数
2、和purelin函数,网络训练的算法采用Levenberg–Marquardt算法trainlm。NATLAB程序如下:n=3;net=newff(minmax(p),[n,1],{'tansig''purelin'},'trainlm');y1=sim(net,p);figure;plot(p,t,'-',p,y1,':')title('未训练网络的输出结果');xlabel('时间');ylabel('仿真输出--原函数');同时绘制网络输出曲线,并与原函数相比较,结果如图2所示。图2未训练网络的输出结果“”代表要逼近的非线性函数曲线;“‥‥”代表未经训练的函数曲线;
3、因为使用newff()函数建立函数网络时,权值和阈值的初始化是随机的,所以网络输出结构很差,根本达不到函数逼近的目的,每次运行的结果也有时不同。3.网络训练应用train()函数对网络进行训练之前,需要预先设置网络训练参数。将训练时间设置为50,训练精度设置为0.01,其余参数使用缺省值。训练后得到的误差变化过程如图3所示。图3训练过程net.trainParam.epochs=50;net.trainParam.goal=0.01;net=train(net,p,t);TRAINLM-calcjx,Epoch0/50,MSE9.27774/0.01,Gradient13
4、.3122/1e-010TRAINLM-calcjx,Epoch3/50,MSE0.00127047/0.01,Gradient0.0337555/1e-010TRAINLM,Performancegoalmet.从以上结果可以看出,网络训练速度很快,经过一次循环跌送过程就达到了要求的精度0.01。4.网络测试对于训练好的网络进行仿真:MATLAB程序如下:y2=sim(net,p);figure;plot(p,t,'-',p,y1,':',p,y2,'--')title('训练后网络的输出结果');xlabel('时间');ylabel('仿真输出');绘制网络输出曲线
5、,并与原始非线性函数曲线以及未训练网络的输出结果曲线相比较,比较出来的结果如图4所示。图4训练后网络的输出结果“”代表要逼近的非线性函数曲线;“‥‥‥”代表未经训练的函数曲线;“―――”代表经过训练的函数曲线;从图中可以看出,得到的曲线和原始的非线性函数曲线很接近。这说明经过训练后,BP网络对非线性函数的逼近效果比较好。
此文档下载收益归作者所有