BP神经网络拟合给定函数

前端之家收集整理的这篇文章主要介绍了BP神经网络拟合给定函数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

  近期在准备美赛,因为比赛需要故重新安装了matlab,在里面想尝试一下神将网络工具箱。就找了一个看起来还挺赏心悦目的函数例子练练手:

                                                                                             y=1+sin(1+pi*x/4)

  针对这个函数,我们首先画出其在[-1,8]上的函数图像,这里间隔为0.05.代码为:
  

  1. p=[-1:0.05:8]
  2. t=1+sin(1+pi*p/4)
  3. plot(p,t,'-')
  4. title("要逼近的线性函数")
  5. xlabel(x")

  画出的图像如下:

 然后我们通过建立神经网络,并且训练,设置训练时间为50.这里采用了四层神经网络。

  1. net=newff(minmax(p),[4,1],{'tansig''purelin'},'tranlm')
  2. net=newff(minmax(p),{'tansig','purelin'},'trainlm')
  3. y1=sim(net,p);
  4. figure;
  5. plot(p,1)">',p,y1,':')
  6. title('未训练网络的输出结果');
  7. xlabel('时间');
  8. ylabel('仿真输出--原函数-');
  9. net.trainParam.epochs=50
  10. net.trainParam.goal=0.01;
  11. net=train(net,t);
  12. y2=sim(net,p);figure;plot(p,'-',':',y2,'--')
  13. title('训练后网络的输出结果');xlabel('时间');
  14. ylabel('仿真输出');
  15. y2=
  16. title('训练后网络的输出结果');
  17. xlabel('时间');
  18. ylabel('仿真输出');

最后训练的结果如下,还是可以接受的

 

猜你在找的大数据相关文章