当前位置:文档之家› BP神经网络逼近非线性函数

BP神经网络逼近非线性函数

BP神经网络逼近非线性函数3、试用BP神经网络逼近非线性函数
f(u) =
)5.0
u(9.1
e+
-
sin(10u) 其中,u∈[-0.5,0.5]
解题步骤:
①网络建立:使用“net=newff(minmax(x), [20, 1], {'tansig’,’ purelin' });,语句建立个前馈BP神经网络。

该BP神经网络只含个隐含层,且神经元的个数为20。

隐含层和输出层神经元的传递函数分别为tansig和pure-lin。

其他参数默认。

②网络训练:使用“net=train (net, x , y) ;”语句训练建立好的BP神经网络。

当然在网络训练之前必须设置好训练参数。

如设定训练时间为50个单位时间,训练目标的误差小于0.01,用“net.trainParam.epochs=50; net.train-Param.goal=0.01;”,语句实现。

其他参数默认。

③网络仿真:使用“y1=sim(net, x); y2=sim(net, x};”语句仿真训练前后的BP神经网络。

(2)程序如下:
clear all;
x=[-0.5:0.01:0.5];
y=exp(-1.9*(0.5+x)).*sin(10*x);
net=newff(minmax(x),[20,1],{'tansig' 'purelin'});
y1=sim(net,x); %未训练网络的仿真结果net.trainParam.epochs=50;
net.trainParam.goal=0.01;
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');
grid on
(3)仿真结果如图:
图1
图1为原函数y与网络训练前后(y1,y2)的仿真结果比较图。

由图1可知,用工具箱函数Newff建立网络时,对权值和阈值的初始化是随机的,所以未训练网络的仿真输出效果很差,并且每次运行的结果也不相同。

训练网络的仿真输出曲线和原始曲线非常接近,这说明训练后的网络对非线性函数的逼近效果很好。

图2
网络训练过程中误差随训练时间的变化迅速减少,在经过0.7个单位时间以后,网络的
误差就达到了逼近要求。

相关主题