您好,欢迎访问三七文档
当前位置:首页 > 金融/证券 > 股票报告 > BP神经网络与多项式拟合曲线
BP神经网络与多项式拟合曲线摘要首先介绍了曲线拟合的原理及其在曲线拟合中的应用。接着讨论了BP神经网络的原理,研究了非线性拟合的在MATLAB中仿真过程通过比较可以看出利用神经网络进行非线性拟合具有拟合速度快、拟合精度高的特点。关键词:曲线拟合;BP神经网络;MATLAB0引言在实际工程应用和科学实践中,为了描述不同变量之间的关系,需要根据一组测定的数据去求得自变量x和因变量y的一个函数关系)(xfy,使其在某种准则下最佳地接近已知数据。曲线拟合是用连续曲线近似地刻画或比拟平面上离散点组所表示坐标之间的函数关系的一种数据处理方法。从一组实验数据(iiyx,)中寻求自变量x和因变量y之间的函数关系)(xfy来反映x和y之间的依赖关系,即在一定意义下最佳地逼近已知数据。应用曲线拟合的方法揭示数据之间内在规律具有重要的理论和现实意义。1多项式曲线拟合1.1曲线拟合原理最小二乘法原理:对给定的数据点(iiyx,)(Ni,...,2,1),在取定的函数类中,求函数)(xf,使误差iiyxf)((Ni,...,1,0)的平方和最小,即Niiiyxf02)(取到最小值。从几何意义上讲,就是寻求与给定点(iiyx,)(Ni,...,2,1)的距离平方和为最小的曲线)(xfy。函数)(xf称为拟合函数或最小二乘解,求拟合函数)(xf的方法称为曲线拟合的最小二乘法。拟合函数和标志数据点之间的垂直距离是该点的误差。对该数据点垂直距离求平方,并把平方距离全加起来,拟合曲线应是使误差平方和尽可能小的曲线,即是最佳拟合。1.2最小二乘法曲线拟合对非线性函数)16exp(22xxy,进行曲线拟合。1.2.1拟合过程选取拟合区间为-5:0.1:5.用10阶、30阶不同阶数对函数进行拟合,绘制出拟合曲线图,比对拟合效果差异。代码见附录1.1.2.2仿真结果及结论结果如图1所示。可见随着拟合阶数增大,拟合曲线与原曲线越接近,但也出现轻微震荡。可见对于非线性函数多项式拟合效果不是很理想。-5-4-3-2-1012345-6-4-20246原曲线10次拟合30次拟合图1多项式拟合效果2BP神经网络拟合人工神经网络是基于模仿大脑神经网络结构和功能而建立的一种信息系统具有很强的自适,应自学习功能,其中BP网络是目前应用最为广泛的一种网络模型。BP神经网络又称为多层前馈神经网络,是目前研究最多的网络形式之一,这种神经网络模型的特点是:BP网络不仅有输入层节点,输出层节点,而且有隐含层节点每层上的神经元称为节点或单元BP网络的神经元采用的传递函数通常是Sigmoid型函数,所以可以实现输入和输出间的任意非线性映射,这使得它在诸如函数逼近模式识别数据压缩等领域有着广泛的应用。2.2仿真实验2.2.1实验思想(1)训练输入样本集4:1.0:4p;训练输出样本集)(xft。测试输入集取为pp1。(2)采用三层BP网络,隐层20个节点。隐含节点作用函数选择对称型S函数(tansig),输出节点为线性(purelin)。(3)权值调整算法采用最陡下降法(trainlm)。(4)训练次数为100次,精度为0.001。2.2.2仿真结果及分析构造一个1-20-1的BP神经网络,第一层为输入层,节点个数为1;第二层为隐层,节点个数为20;变换函数选正切s型函数(tansig);第三层为输出层,节点个数为1,输出层神经元传递函数为purelin函数。并且选Levenberg-Marquardt算法(trainlm)为BP网络的学习算法。对于该初始网络,我们选用sim()函数观察网络输出。代码见附录2。仿真结果如图2所示。-4-3-2-101234-5-4-3-2-1012345原函数与网络训练前后的仿真结果比较xy-原曲线y未训练网络的仿真结果y1--训练后网络的仿真结果y2图2隐层节点数为20时训练前后仿真结果构造一个1-7-1的BP神经网络,第一层为输入层,节点个数为1;第二层为隐层,节点个数为7;变换函数选正切s型函数(tansig);第三层为输出层,节点个数为1,输出层神经元传递函数为purelin函数。并且选Levenberg-Marquardt算法(trainlm)为BP网络的学习算法。对于该初始网络,我们选用sim()函数观察网络输出。仿真结果如图3所示。-4-3-2-101234-4-3-2-101234原函数与网络训练前后的仿真结果比较xy-原曲线y未训练网络的仿真结果y1--训练后网络的仿真结果y2图3隐层节点数为7时训练前后仿真结果由仿真结果可以看出,当隐层节点数为20时,训练网络的仿真输出曲线和原始曲线非常接近,并且精度,逼近时间,迭代次数都达到了令人满意的结果,这说明训练后的网络对非线性函数的逼近效果很好。但隐层节点数为7时逼近效果不是很好,但训练时间短些,所以在训练时,隐层节点对训练结果有一定影响。隐层节点数越多,则BP网络逼近非线性函数的能力越强,同时网络所训练的时间相对来说要长一些。3结论曲线拟合的方法在科学研究和工程分析中有着广泛的应用,本文在MATLAB环境下实现了一个非线性函数的拟合,可得出如下结论:(1)多项式拟合实现简单,但是精度有限不适合非线性逼近。(2)利用BP神经网络进行曲线拟合时,只要选取了合适的网络结构,网络便能经训练得到各节点之间的权值和阈值,得到拟合曲线,满足不同精度要求的用户。一般来说,隐层神经元数目越多,则BP网络逼近非线性函数的能力越强,同时网络所训练的时间相对来说要长一些。参考文献[1]陈光,任志良,孙海柱.最小二乘曲线拟合及Matlab实现[J].软件技术,2005(3):107-108.[2]张朝阳,行小帅,李玥.共轭梯度BP算法在Matlab7.0中的实现[J].现代电子技术,2009(18):125-126.[3]徐远芳,周旸,郑华.基于Matlab的BP神经网络实现研究[J].微型电脑应用,2006(8):125-127.[4]李海涛,邓樱.Matlab程序设计教程[M].1.高等教育出版社,2010:63-64.[5]张志涌.精通MATLAB6.5[M].2.北京:北京航空航天出版社,2005:21-22.[6]思科技产品研发中心.神经网络理论与Matlab7实现[M].2.北京:电子工业出版社出版社,2005:44-51.附录1:多项式拟合源程序:x1=-5:0.1:5;y1=x1+2*exp(-16*x1.^2);x0=-5:0.1:5;y0=x0+2*exp(-16*x0.^2);p10=polyfit(x1,y1,10);p30=polyfit(x1,y1,30);y10=polyval(p10,x0);y30=polyval(p30,x0);plot(x0,y0,'b-',x0,y3,'r*',x0,y10,'k.')legend('原曲线','10次拟合','30次拟合')运行结果:-5-4-3-2-1012345-6-4-20246原曲线10次拟合30次拟合附录2BP神经网络拟合源程序:x=[-4:0.1:4];y=x+2*exp(-16*x.^2);%建立相应的BP网络net=newff(minmax(x),[1,20,1],{'tansig','tansig','purelin'},'trainlm');y1=sim(net,x);%对没有训练的网络进行仿真%训练网络,设定训练时间为100个单位时间,训练目标的误差小于0.001net.trainParam.epochs=100;net.trainParam.goal=0.001;%对训练后的网络进行仿真net=train(net,x,y);y2=sim(net,x);figure;plot(x,y,'-',x,y1,'.',x,y2,'--');title('原函数与网络训练前后的仿真结果比较');xlabel('x');ylabel('y');legend('-原曲线y','未训练网络的仿真结果y1','--训练后网络的仿真结果y2')运行结果:-4-3-2-101234-5-4-3-2-1012345原函数与网络训练前后的仿真结果比较xy-原曲线y未训练网络的仿真结果y1--训练后网络的仿真结果y2
本文标题:BP神经网络与多项式拟合曲线
链接地址:https://www.777doc.com/doc-5445588 .html