基于BP神經网络逼近函数.doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于BP神經网络逼近函数

用神经网络拟合一个非线性函数 姓名:李海浪 班级:10级自动化3班 学号:P101813479 基于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 要逼近的正弦函数曲线 建立网络 应用newff()函数建立BP网络结构。隐层神经元数目n可以改变,暂设为n=3,输出层有一个神经元。选择隐层和输出层神经元传递函数分别为tansig函数和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 未训练网络的输出结果 “ ” 代表要逼近的非线性函数曲线; “‥‥” 代表未经训练的函数曲线; 因为使用newff( )函数建立函数网络时,权值和阈值的初始化是随机的,所以网络输出结构很差,根本达不到函数逼近的目的,每次运行的结果也有时不同。 3.网络训练 应用train()函数对网络进行训练之前,需要预先设置网络训练参数。将训练时间设置为50,训练精度设置为0.01,其余参数使用缺省值。训练后得到的误差变化过程如图3所示。 图3 训练过程 net.trainParam.epochs=50; net.trainParam.goal=0.01; net=train(net,p,t); TRAINLM-calcjx, Epoch 0/50, MSE 9.27774/0.01, Gradient 13.3122/1e-010 TRAINLM-calcjx, Epoch 3/50, MSE 00.01, Gradient 0.0337555/1e-010 TRAINLM, Performance goal met. 从以上结果可以看出,网络训练速度很快,经过一次循环跌送过程就达到了要求的精度0.01。 4. 网络测试 对于训练好的网络进行仿真:MATLAB程序如下: y2=sim(net,p); figure; plot(p,t,-,p,y1,:,p,y2, --) title(训练后网络的输出结果); xlabel(时间); ylabel(仿真输出); 绘制网络输出曲线,并与原始非线性函数曲线以及未训练网络的输出结果曲线相比较,比较出来的结果如图4所示。 图4 训练后网络的输出结果 “ ” 代表要逼近的非线性函数曲线; “‥‥‥” 代表未经训练的函数曲线; “―――” 代表经过训练的函数曲线; 从图中可以看出,得到的曲线和原始的非线性函数曲线很接近。这说明经过训练后,BP网络对非线性函数的逼近效果比较好。

文档评论(0)

fglgf11gf21gI + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档