前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >最小二乘法原理及matlab实现

最小二乘法原理及matlab实现

作者头像
巴山学长
发布2019-10-14 16:18:50
2.6K0
发布2019-10-14 16:18:50
举报
文章被收录于专栏:巴山学长巴山学长

最小二乘法(least squares method),也称最小平方法,是一种古老而常用的数学工具,在自然科学、工程技术和人工智能等领域有着广泛地应用,其核心原理就是通过将误差平方和最小化来寻找数据的最佳匹配函数。

最小二乘法原理浅析:

在实际应用中,往往通过测量或模拟得到函数y=f(x)在某些点x1,x2,..., xn处对应的函数值y1,y2,...,yn, 且点xi互不相同,由于f(x)的解析形式并不清楚,因此需要寻求函数y=f(x)的近似表达式y=p(x)。一般情况下,p(x)由k个线性无关函数p1(x),p2(x),...,pk(x)线性组合而成,即有:

p(x)=a1*p1(x)+ a2*p2(x)+…+ak*pk(x) (k<n-1)

上式中,a1, a2, ..., ak为待定常数。线性无关函数组p1(x), p2(x), ..., pk(x)称为基函数。常用的基函数有:

1, x, x^2, ..., x^k;

sin(x), sin(2x), ..., sin(kx)等

最小二乘法就是通过计算寻找一组系数使得所有数据点p(xi)与yi之差的平方和最小,即:

下面以多项式基函数为例,来演示整个计算过程:

p(x)=a0+ a1*x+…+ak*x^k (k<n-1);

令误差平方和函数:

D(a1, a2, ..., ak) = sum((p(xi)-yi)^2),

上式中sum为求和记号,为了求出符合条件的系数a,将上式右边依次对ai(i=0,1,2,…,k) 求偏导,将得到k+1个关于a1, a2, ..., ak线性方程组,经整理写成矩阵形式如下:

上式通过左右两边同时左乘基组系数矩阵的逆即可得到:A=X|-1|Y,此处X|-1|表示基组系数矩阵的逆。

matlab实现

代码语言:javascript
复制
clc;clear;close all;
x = linspace(-5,5,30);
a0 = -4;  a1 = -1.8; 
a2 = 1.13; a3 = -1.5;
y = a0 + a1*x + a2*x.^2 + a3*x.^3;
% 对y加入噪声以便模拟验证
yy = a0 + a1*x + a2*x.^2 + a3*x.^3 + 20*randn(1,30);
N = 3;
% 计算基组系数矩阵
X = getBGCM(x,N);
% 由模拟值yy计算Y值
Y = getY(x,yy,N);
% X*A = Y,左右两边同时左除X,即得:A = X\Y; 
A = X\Y;
% 验证计算结果
yt = getMY(A,x,3);
% 绘制图像
plot(x,y,'r.-',x,yy,'bo-',x,yt,'ks-');
title('最小二乘法拟合验证测试');
xlabel('X 轴');
ylabel('Y 轴');
legend('真实值','真实值加噪声','拟合值');

~~~~~~~~~~效果图~~~~~~~~~~

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 巴山学长 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档