曲线拟合-最小二乘法

简介: 线性最小二乘法及matlab例程

线性最小二乘法

曲线拟合:已知平面上一组横坐标互不相同的点,寻求一个函数,使其与所有数据点最为接近。

拟合函数:

f(x)=a1r1(x)+a2r2(x)++amrm(x)

ak 为待定系数,

r k ( x ) 为实现选定的一组线性无关函数,比如:当你观察已知数据点的分布大致为一条直线,就可以选r k ( x ) = a 1 ( x ) + a 2

这种形式。


拟合准则:使得e440907e9773ca7b7341a9d4255d08f.png最小


matlab实现

1.解方程组的方法

x=[19     25    31     38    44]';
y=[19.0   32.3   49.0   73.3   97.8]';
r=[ones(5,1),x.^2];
ab=r\y
x0=19:0.1:44;
y0=ab(1)+ab(2)*x0.^2;
plot(x,y,'o',x0,y0,'r')

c182457f7a04649a565cc6312cde3c7c_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzc2NDk3NA==,size_16,color_FFFFFF,t_70#pic_center.jpg

2.多项式拟合法

使用函数p o l y f i t ( x 0 , y 0 , m ) ,前面是已知数据点,m是拟合多项式的次数,返回值是拟合多项式的系数向量。

可以用p o l y v a l ( a , x ) 计算多项式在x处的值。


做已知数据的散点图:

%已知某企业1990-1998年的生产利润如下:要预测1997和1998年的利润
x0=[1990  1991  1992  1993  1994  1995  1996];
y0=[70   122   144   152   174   196   202];
plot(x0,y0,'*')

24cb406e077b20ae494e70ce682bf23e_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzc2NDk3NA==,size_16,color_FFFFFF,t_70#pic_center.jpg

从图片止咳看出,数据呈线性排列,所以选择拟合函数为一次多项式。

x0=[1990  1991  1992  1993  1994  1995  1996];
y0=[70   122   144   152   174   196   202];
a=polyfit(x0,y0,1)
y97=polyval(a,1997)
y98=polyval(a,1998)

得到:

>> ex5_6_2
a =
   1.0e+04 *
    0.0021   -4.0705
y97 =
  233.4286
y98 =
  253.9286

即拟合多项式y = a 1 x + a 2  的系数a 1 = 21 , a 2 = − 4070.5he 1997年预测利润如上。




相关文章
|
机器学习/深度学习 文字识别 数据挖掘
Visionpro从小白到大佬,第一章了解工具名称和用途
Visionpro从小白到大佬,第一章了解工具名称和用途
3728 0
Visionpro从小白到大佬,第一章了解工具名称和用途
|
JSON JavaScript API
Node.js(nodejs)对本地JSON文件进行增、删、改、查操作(轻车熟路)
Node.js(nodejs)对本地JSON文件进行增、删、改、查操作(轻车熟路)
|
JavaScript 前端开发
除了点击事件,`addEventListener` 还能用于处理哪些事件类型?
【10月更文挑战第29天】 `addEventListener` 能够处理的事件类型非常丰富,涵盖了各种用户交互和页面状态变化的场景,通过合理地使用这些事件类型,可以为网页或应用程序添加丰富多样的交互效果和功能。
|
机器学习/深度学习 vr&ar 异构计算
diffusers
【9月更文挑战第22天】
1155 75
|
JavaScript API 容器
Vue3气泡卡片(Popover)
这是一个基于Vue的气泡卡片组件(Popover)介绍,提供了在线预览链接及详细API参数说明,包括maxWidth、title、content等,并支持自定义样式。
805 0
Vue3气泡卡片(Popover)
|
机器学习/深度学习 人工智能 算法
使用LabVIEW AI视觉工具包快速实现SIFT特征检测(含源码)
使用LabVIEW AI视觉工具包快速实现SIFT特征检测(含源码)
799 0
|
Ubuntu Linux Shell
linux用户创建
在Linux中创建新用户涉及`useradd`或`adduser`(Debian系)命令。基本流程:使用`sudo useradd [options] username`创建用户,检查用户`id username`或`grep username /etc/passwd`。赋予sudo权限需编辑`sudo visudo`,添加类似`username ALL=(ALL) NOPASSWDALL`的行。删除用户用`sudo userdel username`,连同家目录`sudo userdel -r username`。
619 1
|
设计模式 数据可视化 Java
如何在 IDEA 中设置类路径
在 IntelliJ IDEA 中设置类路径,可以通过项目结构配置或模块设置来添加所需的库和依赖。具体步骤包括打开项目结构对话框、选择模块、添加类路径等。
2864 18
|
算法
动态规划算法学习三:0-1背包问题
这篇文章是关于0-1背包问题的动态规划算法详解,包括问题描述、解决步骤、最优子结构性质、状态表示和递推方程、算法设计与分析、计算最优值、算法实现以及对算法缺点的思考。
881 2
动态规划算法学习三:0-1背包问题
|
并行计算 Ubuntu PyTorch
Ubuntu 18.04 + CUDA 11.3.0 + CUDNN 8.2.1 + Anaconda + Pytorch 1.10(下)
Ubuntu 18.04 + CUDA 11.3.0 + CUDNN 8.2.1 + Anaconda + Pytorch 1.10(上)
832 0

热门文章

最新文章