最小二乘法与matlab拟合工具箱cftool

最⼩⼆乘法与matlab拟合⼯具箱cftool
⼀)关于最⼩⼆乘法
百度百科解释:
最⼩⼆乘法(⼜称最⼩平⽅法)是⼀种优化技术。它通过最⼩化的平⽅和寻数据的最佳匹配。利⽤最⼩⼆乘法可以简便地求得未知的数据并使得这些求得的数据与实际数据之间误差的平⽅和为最⼩。最⼩⼆乘法还可⽤于。
⽤于数据拟合,直观的认识如下图所⽰:实际中你的数据可能是绿线所表⽰的那样(当然多数时候是离散的点),很明显,这样的数据没有规律也不光滑,那么你想⽤⼀个光滑的多项式函数来表⽰这些数据怎么办?就得拟合,像红线所⽰的那样,拟合出来⼀条光滑的曲线,⽽且这个曲线的表达式还是可以知道的。知道了表达式的形式的另⼀个好处是求任意给定的x值求y值(⽐如你的数据是x=1,对应的y值,如果你想求x=1.5对应的y值怎么办?),或者是可以⽤于函数的预测(⽐如你的数据是x=1,10这10个数据对应的y值,你想求x=11对应的y值怎么办?)。
关于函数的拟合说明到这,那么具体如何根据得到的数据得到拟合函数的具体形式呢?这⾥就需要⼀种算法来实现了,这就是最⼩⼆乘法。当然在这之前,你也需要明⽩⼀下内容:
(1)你所拟合的函数形式是什么样⼦的?
⽐如上⾯的数据,你能得到⼀系列x值以及对应的y值,想要拟合,你是不是也需要知道y与x对应的函数关系?⽐如是sin(x)的关系,或者cos(x)的关系,亦或者是两者组合关系呢?这⾥我们随便假设⼀个:
y = a1*sin(x)+a2*cos(x)+a3*sin(x)*cos(x)
加拿大铝业
在这⾥可以看到,似乎⼜多出来了⼏个系数(a1,a2,a3)有⽊有?对了,这⾥我们所说的函数关系其实是x与y之间符合sin、cos和sin*cos 的关系,但是他们之间具体是⼏倍关系,谁知道呢。从这⾥你也可以明晓的⼀点就是,最⼩⼆乘算法的函数拟合不是说跟你寻到底是属于哪种关系,⽽是在你规定的关系上拟合出这些关系对应的系数(也就是寻最优的a1,a2,a3),从这⾥你还可以明晓⼀点的就是,⼀旦你规定的关系不好,⽐如上⾯的,可以看出⼤概符合sin或者cos关系,你⾮要规定他们符合y = a1*x+a2*x^2,这样的关系,那么你也可以拟合出这样关系下的a1与a2,但是你会发现你的结果会⾮常差,很容易理解。45钢
(2)判断是否最优的标准是什么?
有了上⾯的函数关系,下⾯就是寻到这种关系下的系数了对不对?那么怎么评判⼀组系数(a1,a2,a3)⽐另⼀组系数(a1,a2,a3)要好呢,这就是最⼩⼆乘。
直流断路器对于⼀组给定的系数后,你就相当于得到了⼀个函数关系,那么对于任意的x值,就会有⼀个实际值y和⼀个拟合值y’吧,那么对于所有的x 值,最⼩⼆乘的就是求解下⾯公式的最⼩值:
公式很简单,简单描述就是求实际值与拟合值的误差(残差)平⽅和,也很容易知道,对于每⼀组系
数(a1,a2,a3),势必会出现⼀个Y,算法的演变形式就是求取最⼩化Y对应的系数(a1,a2,a3)(有点像优化算法,当然完全可以⽤优化算法去求解)。
Ok到这,你应该知道了什么是最⼩⼆乘以及它的实⽤性问题了,下⼀步是如何求解这组系数了。
⼆)最⼩⼆乘求解
(1)⽼问题:关于函数关系:
这⾥再说⼀遍这个问题,有⼈可能会说,在实际问题中,我只能得到⼀系列的离散点,⾄于他们符合哪种函数关系谁知道呢?也是,要想知道完美的符合关系确实不可能,我们只能猜想到他们的近似函数关系,碰到这类问题,⾸先我们需要画出得到的离散点,看看他们⼤致符合哪种关系,然后去试吧(也没有好的⽅法—_—),当然后⾯会说到matlab⾃带的拟合⼯具箱,⾥⾯有很多函数关系,这就⼤⼤减少了你盲⽬去试的时间了。
⼀般来说,可能的函数关系(或者叫基函数)有:多项式、三⾓函数、指数函数、样条函数等。
(1)关于求解原理北京星兆老年病医院
这⾥我们假设已经知道了符合的函数关系了,⽐如像上⾯的那个函数关系:
y = a1*sin(x)+a2*cos(x)+a3*sin(x)*cos(x)
我们把这个函数划分开来,分为基函数和系数,那么基函数为:
对应的系数就为:
现在问题就转化为求待定系数:(a1,a2,a3)。即:
把这个式⼦再变⼀下:
那么由多元函数极值必要条件有:
对任意函数h(x)和g(x),引⼊记法:
由于向量组线性⽆关,也就是上式的系数⾏列式,那么可以得到该函数的最⼩⼆乘解为:
辽宁甲肝解上述的这个正规⽅程组就可以得到最⼩⼆乘对于的系数:(a1,a2,...,an);还是以上述那个式⼦为例可以看到,这⾥:
表⽰视具体形式⽽定了;同时等式右边可以表⽰为:
其中的f就是实际对于变量x的y值。上述矩阵都是已知的,那么参数是可以直接算出来的。在进⼀步简化,把式⼦3.3.2写成为:
就可以求出参数W的值。这⾥X就可以表⽰每个基函数在所有⾃变量x下的值⼀个矩阵,⽅便理解,还是以上例说明:⽐如得到的数据是x= [1:10];得到的y是对应与x的平⽅,也就是y=[1,4,9,...,100]这10个数,现在我们想⽤
y = a1*sin(x)+a2*cos(x)+a3*sin(x)*cos(x)
这组函数来拟合数据(显然关系不对是吧),那么这⾥:
⽽Y直接就是[1,4,9,...,100]’;这样w就出来了。
三)关于matlab拟合⼯具箱cftool
在matlab命令下,直接输⼊cftool即可以打开⼯具箱的界⾯:
《国家新型城镇化规划(2014-2020年)》
现在给定⼀组需要拟合的数据如下(这是⼀幅图像的灰度统计图),具体怎么来的就不说了,想试验
的可以⾃⼰假设数据,也很简单,这组数据中,假定x为1:247,对应当然也有247个y的值。
在matlab⼯作区⼀旦正确输⼊了x和y值以后,打开⼯具箱对应的数据输⼊处就会出现选项了,如下:
输⼊后选择⽅法:
这⾥把参数设置成这样的:

本文发布于:2024-09-21 19:39:31,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/4584.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:函数   关系   数据   拟合   得到   系数
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议