1.5给定输入信号网格输出信号10.50-0.5-1-1.50123456图3-3 使用newlin函数进行逼近效果曲线
误差曲线1
0.80.60.40.20-0.2-0.40123456
图3-4 newlin函数逼近的误差图
下面使用实例演示newlind函数的使用.
(1) 首先,产生输入训练样本和训练目标样本. %matlab程序
time1=0:.01:2; time2=2:.01:4; time3=4:.01:6;
time=[time1 time2 time3];
t=[cos(time1*pi) cos(time2*3*pi) cos(time3*5*pi)]; q=length(t); p=zeros(6,q);
p(1,2:q)=t(1,1:(q-1)); p(2,3:q)=t(1,1:(q-2));
25
p(3,4:q)=t(1,1:(q-3)); p(4,5:q)=t(1,1:(q-4)); p(5,6:q)=t(1,1:(q-5));
p(6,7:q)=t(1,1:(q-6));
(2) 使用newlind函数设计线性层. net=newlind(p,t); a=sim(net,p);
plot(time,t,time,a,'k-o')
legend('给定输入信号','网络输出信号') figure
plot(time,a-t) title('误差曲线')
线性层网络函数逼近效果如图3-5和图3-6所示.
1.5给定输入信号网络输出信号10.50-0.5-1-1.50123456
图3-5 线性层设计函数newlind函数逼近效果
误差曲线0.40.20-0.2-0.4-0.6-0.8-10123456
图3-6 线性层设计函数newlind函数逼近误差图
3.1.3 基于神经网络定积分计算模型
人工神经网络的主要特点是其非线性映射能力,这种能力使得神经网络能够逼近任何给定的连续函数.从应用的角度来看,一个人工神经网络是根据某种“目标”而构造的,
26
这样的目标一般情形下是一个多元或一元函数,称之为“目标函数”,可通过对权值的学习,使得目标函数尽可能逼近于人们理想中目标函数.基于这些思想,提出了一种基于积分定义的神经网络模型.现我们来确定学习训练样本数据,首先对训练样本数据作预处理:假设被积f(x)在区间[a,b]上有n种分法T1,T2,?,Tn,其中划分Tj为:
Xj?{x0j,x1j,?,xmj},j?1,2,?,n
令?X?(?X1,?X2,??Xn),其中:?Xj?(?x1j,?x2j,??xmj),j?1,2,?,n
?xij?xij?x(i?1)j,则学习训练样本数据集为{((?x1j,?x2j,?,?xmj),d)|j?1,2,?,n},其中
d为积分?f(x)dx的准确值.那么,基于积分定义的神经网络求解数值积分模型如图3-7
ab所示.
?x1 ?x2??f(?1f(?2) ?y
?xmf(?m) 图3-7 求解数值积分模型
其中f(?i)为神经网络权值,设神经网络的权值矩阵为:W?[w1,w1,?,wm],其中
wi?f(?i),??[?1,?2,??m]T;激励函数为恒等函数,阀值取0,则该网络输出
y(k)??wi?xi(k)??f(?i)?xi(k)?W'?X(k)
i?1i?1mm定义误差代价函数:
e(k)?d?y(k),k?0,1,?,n?1
其中n为训练样本点数,f(x)为被积函数.
设误差矩阵为E?[e(0),e(1),?,e(n?1)]T,则有性能指标:
1n?1212J(k)??e(k)?E2
2k?02?2为Euclidean范式的平方.根据梯度下降法学习规则,故权值调整公式如下:
2??i??u?J(k)?e(k)?y(k)?f ????e(k)?y(k)?f??i ?ue(k)??xi?f'(?i)
?i(k?1)??i(k)???i(k)
??i(k?1)?ue(k)??xi?f'(?i)
其中u为学习效率,且0?u?1.
基于神经网络的定积分学习算法
神经网络学习的目标就是对权值的学习,参照一般神经网络的学习过程,那么,神经网络求积分的学习步骤如下:
27
step1 获取神经网络训练样本集:{((?x1j,?x2j,?,?xmj),d)|j?1,2,?,n};随机产生网络权值W?[w1,w1,?,wm],wi?f(?i),??[?1,?2,??m]T;给定误差精度?;令J?0.
step2 计算网络输出:y(k)??wi?xi(k)??f(?i)?xi(k)?W'?X(k)
i?1i?1mmstep3 计算误差函数:e(k)?d?y(k)
1n?1212step4 计算性能指标:J(k)??e(k)?E2
2k?021step5 计算学习率:u(k)?m
2??xif'(?i)i?1step6 权值调整:?i(k?1)??i(k?1)?ue(k)??xi?f'(?i)
step7 如果样本集未训练完,返回step2重复上述步骤;否则,判断性能指标是否J???,如果是,令J?0,返回step2重复上述步骤,否则,结束网格训练,输出网格权值:W.
如求解定积分?excos(100x)dx,精确到8位有效数字.
0?MATLAB编程实现: %定积分函数 function y=f(x)
y=exp(x).*cos(100.*x); clc;
format long a=0;
b=pi; %a,b为积分区间
tol=0.00000001; %tol为精确度 J=2*tol;
m=20; %将区间[a,b]分为m+1个不等距的区间
p=6.389; %p为定积分的精确值 n=50; %n为训练样本个数 X=zeros(m+1,n); x=zeros(m,n); c=zeros(m,n); w=zeros(m,n);
X(1,:)=a; X(m+1,:)=b;
for i=1:n
X(2,i)=a+0.1*rand; X(m,i)=b-0.1*rand;
28