.计算机实践数学实验报告
计算机实践数学实验报告(一)实验名称:神经网络模型问题描述利用BP算法及sigmoid函数,研究以下各函数的逼近问题fx=1x , 1≤x≤100 fx=sin?x, 0≤x≤π2对每一函数要完成如下工作:获取两组数据,一组作为训练集,一组作为测试集;利用训练集训练一个单隐层的网络;用测试集检验训练结果,改变隐层单元数,研究它对逼近效果的影响. 2. 给定待拟合的曲线形式为fx=0.5+0.4sin?(2πx)在fx上等间隔取11个点的数据,在此数据的输出值上加均值为0,均方差σ=0.05的正态分布噪声作为给定训练数据,用多项式拟合此函数,分别取多项式的阶次为1,3和11阶,图示出拟合结果,并讨论多项式阶次对拟合结果的影响. 实验目的运用神经网络模型的知识解决上述问题;改变网络构造,研究不同逼近效果. 高次多项式拟合出现的现象. 实验原理与数学模型问题一利用多层前馈网络求解. 输入层每个数据包含两个元素,分别为自变量和因变量. 输出层包含一个元素目的是将结果进行区分. 判断输入的数据是否满足相应的函数关系. 所以输出层的结果为1,分别表示满足函数关系.
多层前馈网络单隐层的单元个数对输出结果的逼近有一定的影响. 不一定会出现准确的1,可能接近于1. 改变其个数查看相应的逼近效果. 问题二用不同阶多项式拟合函数,也可以选取多层前馈网络. 单隐层单元数目对应阶数. 输入层包含一个元素即自变量. 输出层包含一个元素即因变量. 选取数据并加入高斯噪声后进行训练,得到不同的网络. 再对数据进行预测,得到多项式拟合结果. 主要内容:针对fx=1x , 1≤x≤100选取训练集:输入为x|x=1+10k,k=0,1,2,…,9,y=f(x). 输出均为1. 测试集:输入为:x*|x*=5+30k,k=0,1,2,3,y*=f(x*). 将训练级和测试集放在一个图中,它们是同一个函数上的点. 网络结构选定相应的参数,对数据进行训练. 将分别将训练集和测试集代入网络结构,得到输出结果. 单隐层设置不同的单元数进行训练. 针对第二个函数进行类似操作. 针对问题二中的函数fx=0.5+0.4sin?(2πx)选取x|x=0.1k,k=0,1,2,…,10为输入值. y=fx,x∈x|x=0.1k,k=0,1,2,…,10, 对y加均值为0,均方差σ=0.05的正态分布噪声后的结果作为训练集. 网络结果中单隐层单元数分别设置2,4,12. 其它参数做相应设定后进行训练. 对x|x=0.1k,k=0,1,2,…,10进行预测,做出图像. 实验过程记录第一题第一个函数的代码如下(第二个函数的类似,不列出):clear all;x1=1:10:91;y1=1./x1;x11=5:30:95;y11=1./x11;p1=[x1;y1];p11=[x11;y11];pr=minmax(p1);goal=ones(1,10);plot(p1(1,:),p1(2,:),'h',p11(1,:),p11(2,:),'o') net=newff(pr,[10,1],{'logsig','logsig'}); net.trainParam.show = 10;net.trainParam.lr = 0.05; net.trainParam.goal = 1e-10; net.trainParam.epochs = 50000; net = train(net,p1,goal); x=[p11];y0=sim(net,p1)y=sim(net,x)第二题的部分代码如下:clear all;x=0:0.1:1y0=0.5+0.4*sin(2*pi*x)noise=normrnd(0,0.05,1,11);y0=y0+noise;……net2=newff(pr,[4,1],{'logsig','logsig'}); net2.trainParam.show = 10;net2.trainParam.lr = 0.05; net2.trainParam.goal = 1e-10; net2.trainParam.epochs = 50000; net2 = train(net2,x,goal); y2=sim(net2,x)……plot(x,y0,'h',x,y1,'o',x,y2,'.',x,y3,'*')实验结果及实验总结第一题:不同单元个数下的预测结果3个1.00001.00001.00001.00001.00001.00001.00001.00001.00001.00001.00001.0000