【MATLAB】用简单神经网络逼近非线性函数

一、前言

目录

一、前言

二、简单讲解

三、代码

四、总结


        在机器人控制系统设计与matlab仿真课上老师布置了一个作业,分别使用神经网络和模糊方法逼近非线性函数{\color{Blue} g(x_{1},x_{2})=0.52*0.1x_{1}+0.28x_{2}-0.06x_{1}x_{2}}

        模糊方法根据乘积推理机,单值模糊器和中心平均解模糊器得出的公式可以直接写代码得出,但是神经网络就没啥思路,查阅资料后就简单写了个神经网络逼近函数。

二、简单讲解

         但是使用matlab自己训练就不需要这么麻烦,我们主要用到newff()这个函数。

        关于newff函数可以看其他博客,例如:newff

        创建好神经网络使用train函数给入输入输出开始训练模型,再使用sim函数给入输入得到输出。最后将两个模型表示出来,表示误差即可。

三、代码

clc;
close all;

x1=-1:0.05:1;                               %生成训练数据x
x2=-1:0.05:1;

[X1,X2]=meshgrid(x1,x2);
% P = [X1,X2];
yd=0.52+0.1*X1+0.28*X2-0.06*X1.*X2;

net = newff([X1;X2],yd,[8 8],{},"trainbr");
net.trainParam.lr=0.01;         %学习率设置
net.trainParam.show=25;         %显示的间隔次数
net.trainParam.epochs = 500;    %训练最大次数
net.trainParam.goal=10^-10;      %训练目标设置
net.trainParam.max_fail = 30;
net = train(net,[X1;X2],yd);
Y = sim(net,[X1;X2]);

subplot(211);
surf(X1,X2,yd);
title("原来函数0.52+0.1*X1+0.28*X2-0.06*X1.*X2");
subplot(212);
surf(X1,X2,Y);
title("神经网络逼近");

figure;
surf(X1,X2,Y-yd);
title("误差");

四、总结

        因为自己这门课听的也是云里雾里,刚开始学习,如有错误请各位大佬指正!

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
函数逼近(Function Approximation )是函数论中的一个重要组成部分,其在数值计算中的作用是十分重要的。运用神经网络进行函数逼近,为函数逼近的发展提供了一条新的思路。 用神经网络函数逼近有许多优点: 首先,它提供了一个标准的逼近结构及逼近工具,这个工具可以随着隐层个数改变来达到任意精度; 其次,有标准的学习算法用以确定逼近函数的参数,并且这一过程是拟人的,即很好地模拟了人的学习过程;最后,能处理的数据对象十分广泛:适用于大规模的,高度非线性的,不完备的数据处理。 本文以几种典型神经网络为例(BP神经网络Function Approximation 、RBF神经网络www.BoliLib.com Approximation 、正交多项式基函数神经网络、样条基函数神经网络),对基于神经网络函数逼近方法进行了研究。神经网络函数逼近能力受神经元个数、学习率、学习次数和训练目标等因素的影响,因此,在研究过程中,充分运用神经网络非线性逼近能力,首先对几种用于函数逼近神经网络的结构及算法进行研究;再针对几种常用函数曲线,如正弦函数、指数函数、对数函数、三角函数等,分别用典型神经网络进行逼近,并对逼近效果进行比较,得到用于函数逼近神经网络选取规律。所得结论经过实际仿真测试,证明了其有效性。 本文的研究结果对函数逼近的研究具有借鉴意义。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值