使用BP神经网络实现函数逼近

1 一元函数逼近

1.1 待逼近函数
在这里插入图片描述
1.2 代码

clear,clc
p=[-4:0.1:4]; %神经网络输入值
t=sin(0.5*pi*p)+sin(pi*p); %神经网络目标值
n=15; %隐藏层神经元个数
net=newff(minmax(p),[1,n,1],{'tansig','tansig','purelin'},'trainlm'); %建立网络结构
net.trainParam.epochs=200; %最大训练步数
net.trainParam.goal=0.1; %最大训练误差
net=train(net,p,t); %训练网络
y=net(p); %神经网络输出值
plot(p,t,'*',p,y,'-')
title('使用BP神经网络函数逼近');
xlabel('输入值');
ylabel('目标值/输出值');
mse=mse(y,t) %实际误差

1.3 运行结果
使用BP神经网络实现函数逼近_第1张图片
使用BP神经网络实现函数逼近_第2张图片
MSE=0.0828

2 二元函数逼近

2.1 待逼近函数
使用BP神经网络实现函数逼近_第3张图片
2.2 代码

clear,clc
t=[0:0.1:10*pi]; %辅助参数
x=(t+0.5*pi).*sin(t+0.5*pi); %神经网络输入值(指标1)
y=(t+0.5*pi).*cos(t+0.5*pi); %神经网络输入值(指标2)
z=1.5*t; %神经网络目标值
n=25; %隐藏层神经元个数
net=newff(minmax([x;y]),[2,n,1],{'tansig','tansig','purelin'},'trainlm'); %建立网络结构
net.trainParam.epochs=500; %最大训练步数
net.trainParam.goal=0.5; %最大训练误差
net=train(net,[x;y],z); %训练网络
zf=net([x;y]); %神经网络输出值
plot3(x,y,z,'*',x,y,zf,'r-')
title('使用BP神经网络函数逼近');
xlabel('输入值(指标1)');
ylabel('输入值(指标2)');
zlabel('目标值/输出值')
mse=mse(zf,z) %实际误差

2.3 运行结果
使用BP神经网络实现函数逼近_第4张图片
使用BP神经网络实现函数逼近_第5张图片
MSE=0.4959

你可能感兴趣的:(智能算法)