数值计算_第6章 曲线拟合的最小二乘法
- 格式:doc
- 大小:620.50 KB
- 文档页数:30
最小二乘拟合的概念-概述说明以及解释1.引言1.1 概述最小二乘拟合是一种常用的数据分析方法,通过最小化观测值与拟合值之间的残差平方和来求取最优拟合曲线或平面,从而描述数据的模式和趋势。
该方法被广泛应用于统计建模、机器学习、信号处理、金融分析等领域。
最小二乘法的核心思想是寻找一条曲线或平面,使得该曲线或平面与数据点的残差之和最小。
通过最小二乘法,我们可以得到最佳拟合曲线或平面,从而对数据进行更准确的描述和预测。
因此,最小二乘拟合在数据分析中具有重要的意义。
本文将详细介绍最小二乘拟合的定义、原理和应用,从而帮助读者更好地理解和运用这一重要的数据分析方法。
1.2 文章结构文章结构部分的内容如下:文章结构部分将介绍整篇文章的组织结构和主要内容安排,以便读者对文章的整体框架有一个清晰的认识。
在本文中,主要分为引言、正文和结论三个部分。
- 引言部分包括对最小二乘拟合的概念进行简要介绍,阐述本文撰写的目的和重要性。
- 正文部分将详细讨论最小二乘拟合的定义、原理和应用,以便读者全面了解这一重要的数据分析方法。
- 结论部分将对最小二乘拟合的重要性进行总结,探讨最小二乘法在数据分析中的价值,并展望最小二乘拟合在未来的发展趋势。
通过这样的结构安排,读者可以清晰地了解本文的主要内容和章节布局,有助于他们更好地理解和掌握最小二乘拟合的相关知识。
1.3 目的本文的主要目的是介绍最小二乘拟合这一重要的数学方法。
通过对最小二乘拟合的定义、原理和应用进行详细讨论,希望读者能够深入了解这一方法在数据分析和模型拟合中的重要性。
此外,本文还将探讨最小二乘法在实际问题中的应用,以及展望未来最小二乘拟合在数据分析领域的发展趋势。
通过阐述这些内容,旨在让读者更加深入地理解和应用最小二乘拟合方法,为其在数据分析和模型拟合中提供有效的工具和思路。
2.正文2.1 最小二乘拟合的定义最小二乘拟合是一种常用的数学方法,用于通过调整参数来拟合一个数学模型以最小化观测数据和模型之间的残差平方和。
曲线拟合最小二乘法
最小二乘法是统计学中最常用的数据拟合方法,也被称为**最小平方法**。
该方法在数学和统计学中已经有很长的历史,广泛应用于各种学科的科学研究和实际应用。
最小二乘法的主要思想是最小化所给数据点与目标曲线之间的误差平方和,以此来确定目标曲线的参数。
具体而言,最小二乘法是根据**基函数**与参数之间的函数关系,采用多元函数去拟合所给数据点,旨在最小化拟合数据点和多元函数之间误差平方和的拟合方法。
最小二乘法可以用来拟合任何形式的曲线,在各种应用中都大量应用。
比如在政治学、经济学和心理学中,研究者通过最小二乘法来拟合某种结果与输入变量之间的联系,以更好地理解呈现结果的背景机制;在数值计算中,最小二乘法可用来拟合数值计算数据,从而精确地求解各种方程;而在工程学中,最小二乘法常用来拟合统计数据,估计影响工作效率的各种自变量。
总之,最小二乘法是一种统计学中经久不衰的拟合方法,可以用来拟合任何形式的曲线,在广泛的应用领域有着重要地位。
曲线拟合最小二乘法
曲线拟合是指通过已知数据点来推导出一条函数曲线,使得该曲线尽
可能地贴近这些数据点。
而最小二乘法(Least Squares Method)是求解
这种拟合问题的一种常用方法。
最小二乘法的核心思想是尽量减小误差平方和。
假设已知的数据点为$(x_i, y_i)$,曲线函数为 $y=f(x)$,我们希望找到一组参数 $\theta$,使得 $f(x_i;\theta)$ 与 $y_i$ 的差距最小,即:
$$\min_{\theta}\sum_{i=1}^n [y_i - f(x_i;\theta)]^2$$。
这个式子被称为目标函数,也叫做残差平方和(RSS)。
通过对目标
函数进行求导,可以得到最优参数 $\theta^*$ 的解析解:
$$\theta^* = (\mathbf{X}^T \mathbf{X})^{-1} \mathbf{X}^T
\mathbf{y}$$。
其中,$\mathbf{X}$ 是一个 $n \times p$ 的矩阵,每一行代表一
个数据点的特征向量,$p$ 是曲线函数的参数个数。
$\mathbf{y}$ 是一
个 $n \times 1$ 的列向量,代表数据点的真实输出值。
最小二乘法在实际应用中有很广泛的应用。
例如,可以用它来构建多
项式回归模型、高斯过程回归模型等。
此外,在机器学习领域,最小二乘
法也被用于求解线性回归模型、岭回归模型等。
第6章曲线拟合的最小二乘法6.1 拟合曲线通过观察或测量得到一组离散数据序列,当所得数据比较准确时,可构造插值函数逼近客观存在的函数,构造的原则是要求插值函数通过这些数据点,即。
此时,序列与是相等的。
如果数据序列,含有不可避免的误差(或称“噪音”),如图6.1所示;如果数据序列无法同时满足某特定函数,如图6.2所示,那么,只能要求所做逼近函数最优地靠近样点,即向量与的误差或距离最小。
按与之间误差最小原则作为“最优”标准构造的逼近函数,称为拟合函数。
图6.1 含有“噪声”的数据图6.2 一条直线公路与多个景点插值和拟合是构造逼近函数的两种方法。
插值的目标是要插值函数尽量靠近离散点;拟合的目标是要离散点尽量靠近拟合函数。
向量与之间的误差或距离有各种不同的定义方法。
例如:用各点误差绝对值的和表示:用各点误差按模的最大值表示:用各点误差的平方和表示:或(6.1)其中称为均方误差,由于计算均方误差的最小值的方法容易实现而被广泛采用。
按均方误差达到极小构造拟合曲线的方法称为最小二乘法。
本章主要讲述用最小二乘法构造拟合曲线的方法。
在运筹学、统计学、逼近论和控制论中,最小二乘法都是很重要的求解方法。
例如,它是统计学中估计回归参数的最基本方法。
关于最小二乘法的发明权,在数学史的研究中尚未定论。
有材料表明高斯和勒让德分别独立地提出这种方法。
勒让德是在1805年第一次公开发表关于最小二乘法的论文,这时高斯指出,他早在1795年之前就使用了这种方法。
但数学史研究者只找到了高斯约在1803年之前使用了这种方法的证据。
在实际问题中,怎样由测量的数据设计和确定“最贴近”的拟合曲线?关键在选择适当的拟合曲线类型,有时根据专业知识和工作经验即可确定拟合曲线类型;在对拟合曲线一无所知的情况下,不妨先绘制数据的粗略图形,或许从中观测出拟合曲线的类型;更一般地,对数据进行多种曲线类型的拟合,并计算均方误差,用数学实验的方法找出在最小二乘法意义下的误差最小的拟合函数。
数值分析中的最小二乘法与曲线拟合数值分析是现代理论与实践密切结合的一门交叉学科,其中最小二乘法和曲线拟合是其中两个非常重要的概念。
最小二乘法是一种数学运算方法,用于求解一组方程组的未知参数,使得每个方程的误差平方和最小。
在实际应用中,最小二乘法广泛应用于数据拟合、信号处理、回归分析等领域。
在数据拟合中,最小二乘法是一种常见的方法,它可以用于拟合曲线和函数。
它通过延伸曲线以获得局部数据之间的交点,并通过在它们上进行平均化的方法来尝试匹配数据。
最小二乘法的概念为我们提供了一个理论基础,以便在一定程度上预测新的数据中对象的行为或趋势。
但是,即使在相对简单的问题中,最小二乘法可能并不是最佳选择。
曲线拟合是对一系列数据进行插值的过程,以便获得与原始数据点更准确相匹配的曲线或函数。
曲线拟合可以通过在相邻数据点之间进行插值来完成。
在曲线拟合中,只有在数据有很好的统计关系或在相邻数据点
有很好的相关性时,才会产生准确的结果。
否则,结果可能并不
准确,因为这些结果取决于数据点的数量和分布。
需要注意的是,曲线拟合和最小二乘法并不是一个可以代替另
一个的工具。
它们的适用范围不同。
曲线拟合适用于对离散数据
点进行联合分析,而最小二乘法适用于求解连续数据的线性模型。
总之,数值分析中的最小二乘法和曲线拟合是非常实用的概念,可以应用于各种领域。
它们作为现代数据分析的主要工具之一,
不断吸引着越来越多的学者和工程师投入到其中,将继续发挥重
要作用。
§7 曲线拟合的最小二乘法7-1 一般的最小二乘逼近(曲线拟合的最小二乘法)最小二乘法的一般提法是:对给定的一组数据(,)(0,1,,)i i x y i m =L ,要求在函数类01{,,,}n ϕϕϕϕ=L 中找一个函数*()y S x =,使误差平方和22*222()001[()]min [()]m m m i i i i iS x i i i S x y S x y ϕδδ∈=====−=−∑∑∑其中 0011()()()()()n n S x a x a x a x n m ϕϕϕ=+++<L 带权的最小二乘法: 2220()[()()]mi i i i x S x f x δω==−∑其中()0x ω≥是[a,b ]上的权函数。
用最小二乘法求曲线拟合的问题,就是在()S x 中求一函数*()y S x =,使22δ取的最小。
它转化为求多元函数20100(,,,)()[()()]m n n i j j i i i j I a a a x a x f x ωϕ===−∑∑L 的极小点***01(,,,)n a a a L 问题。
由求多元函数极值的必要条件,有002()[()()]()0m n i j j i i k i i j k I x a x f x x a ωϕϕ==∂=−=∂∑∑ ),,1,0(n k L =若记 0(,)()()()m j k ij i k i i x x x ϕϕωϕϕ==∑ 0(,)()()()mk i i k i k i f x f x x d ϕωϕ==≡∑ ),,1,0(n k L = 则上式可改写为0(,)n kj j k j a d ϕϕ==∑ ),,1,0(n k L =这个方程称为法方程,矩阵形式.Ga d =其中 0101(,,,),(,,,)T T n n a a a a d d d d ==L L ,0001010111011(,)(,)(,)(,)(,)(,)(,)(,)(,)n n n n n n G ϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕ− = LL L L L L L 由于01,,,n ϕϕϕL 线性无关,故0G ≠,方程组存在唯一解*(0,1,,),k k a a k n ==L从而得到函数()f x 的最小二乘解为****0011()()()()n n S x a x a x a x ϕϕϕ=+++L 可证 *2200()[()()]()[()()]m mii i i i i i i x S x f x x S x f x ωω==−≤−∑∑ 故*()S x 使所求最小二乘解。
实验三函数逼近与曲线拟合、问题的提出:函数逼近是指“对函数类A中给定的函数f(x),记作f(x)・A,要求在另一类简的便于计算的函数类B中求函数p(x)・A,使p(x)与f (x)的误差在某中度量意义下最小”函数类A通常是区间[a,b]上的连续函数,记作C[a,b],称为连续函数空间,而函数类B通常为n次多项式,有理函数或分段低次多项式等,函数逼近是数值分析的基础。
主要内容有:(1)最佳一致逼近多项式(2)最佳平方逼近多项式(3 )曲线拟合的最小二乘法实验要求:1、构造正交多项式;2、构造最佳一致逼近;3、构造最佳平方逼近多项式;4、构造最小二乘法进行曲线拟合;5、求出近似解析表达式,打印出逼近曲线与拟合曲线,且打印出其在数据点上的偏差;6、探讨新的方法比较结果。
三、实验目的和意义:1、学习并掌握正交多项式的MATLAB编程;2、学习并掌握最佳一致逼近的MATLAB实验及精度比较;3、学习并掌握最佳平方逼近多项式的MATLAB实验及精度比较;4、掌握曲线拟合的最小二乘法;5、最小二乘法也可用于求解超定线形代数方程组;6、探索拟合函数的选择与拟合精度之间的关系;四、算法步骤:1、正交多项式序列的生成{ \ ( X)}o •:设\ ( X)是[a,b]上首项系数数,如果多项式序列{ \ ( X)}o:满足关系式则称多项式序列{ \(X)}o:为在[a,b]上带权的n次正交多项式。
1 )输入函数「(x)和数据a,b;2) 分别求(x n, j(x)),C j (x), j(x))的内积;. . n 2 (X n,®j(X)), ,3) 按公式①;:o(X)=1, -(X) =X n j j(X)计算;:n(X),生成正交多项式;j鼻Wj(x),W j(x))流程图:开始a n=0的n次多项式,r(x)为[a,b]上权函;Q j秋A 0, jb(j, k)」(x) j(x) k(x)d(X> =a「(x)正交,称;:n (x)为[a,b]上带权「(x)cz>结束2、最佳一致逼近多项式f(x) C[a,b],若存在 R*(x) H n 使得.:(f,P ;^E n ,则称 P ; (x)是 f (x)在[a,b]上的最佳一致逼近多项式或最小偏差逼近多项式,简称最佳逼近多项式。
第6章曲线拟合的最小二乘法6.1 拟合曲线通过观察或测量得到一组离散数据序列,当所得数据比较准确时,可构造插值函数逼近客观存在的函数,构造的原则是要求插值函数通过这些数据点,即。
此时,序列与是相等的。
如果数据序列,含有不可避免的误差(或称“噪音”),如图6.1所示;如果数据序列无法同时满足某特定函数,如图6.2所示,那么,只能要求所做逼近函数最优地靠近样点,即向量与的误差或距离最小。
按与之间误差最小原则作为“最优”标准构造的逼近函数,称为拟合函数。
图6.1 含有“噪声”的数据图6.2 一条直线公路与多个景点插值和拟合是构造逼近函数的两种方法。
插值的目标是要插值函数尽量靠近离散点;拟合的目标是要离散点尽量靠近拟合函数。
向量与之间的误差或距离有各种不同的定义方法。
例如:用各点误差绝对值的和表示:用各点误差按模的最大值表示:用各点误差的平方和表示:或(6.1)其中称为均方误差,由于计算均方误差的最小值的方法容易实现而被广泛采用。
按均方误差达到极小构造拟合曲线的方法称为最小二乘法。
本章主要讲述用最小二乘法构造拟合曲线的方法。
在运筹学、统计学、逼近论和控制论中,最小二乘法都是很重要的求解方法。
例如,它是统计学中估计回归参数的最基本方法。
关于最小二乘法的发明权,在数学史的研究中尚未定论。
有材料表明高斯和勒让德分别独立地提出这种方法。
勒让德是在1805年第一次公开发表关于最小二乘法的论文,这时高斯指出,他早在1795年之前就使用了这种方法。
但数学史研究者只找到了高斯约在1803年之前使用了这种方法的证据。
在实际问题中,怎样由测量的数据设计和确定“最贴近”的拟合曲线?关键在选择适当的拟合曲线类型,有时根据专业知识和工作经验即可确定拟合曲线类型;在对拟合曲线一无所知的情况下,不妨先绘制数据的粗略图形,或许从中观测出拟合曲线的类型;更一般地,对数据进行多种曲线类型的拟合,并计算均方误差,用数学实验的方法找出在最小二乘法意义下的误差最小的拟合函数。
例如,某风景区要在已有的景点之间修一条规格较高的主干路,景点与主干路之间由各具特色的支路联接。
设景点的坐标为点列;设主干路为一条直线,即拟合函数是一条直线。
通过计算均方误差最小值而确定直线方程(见图6.2)。
6.2线性拟合和二次拟合函数线性拟合给定一组数据,做拟合直线,均方误差为(6.2)是二元函数,的极小值要满足整理得到拟合曲线满足的方程:(6.3)或称式(6.3)为拟合曲线的法方程。
用消元法或克莱姆法则解出方程:a==例6.1下表为P. Sale及R. Dybdall在某处作的鱼类抽样调查,表中为鱼的数量,为鱼的种类。
请用线性函数拟合鱼的数量和种类的函数关系。
解:设拟合直线,并计算得下表:将数据代入法方程组(6.3)中,得到:解方程得:= 8.2084,= 0.1795拟合直线为:= 8.2084 + 0.1795二次拟合函数给定数据序列,用二次多项式函数拟合这组数据。
设,作出拟合函数与数据序列的均方误差:(6.4)由多元函数的极值原理,的极小值满足整理得二次多项式函数拟合的法方程:(6.5)解此方程得到在均方误差最小意义下的拟合函数。
方程组(6.5)称为多项式拟合的法方程,法方程的系数矩阵是对称的。
当拟保多项式阶时,法方程的系数矩阵是病态的,在计算中要用双精度或一些特殊算法以保护解的准确性。
例6.2给定一组数据,如下表。
用二次多项式函数拟合的这组数据。
解:设,由计算得下表:将数据代入式(6.5),相应的法方程为:解方程得:=0.66667,=-1.39286,=-0.13095 ∴= 0.66667-1.39286-0.13095拟合曲线的均方误差:=3.09524 结果见图6.3。
图6.3 拟合曲线与数据序6.3解矛盾方程组在6.2节中用最小二乘法构造拟合函数,本节中用最小二乘法求解线性矛盾方程组的方法构造拟合函数。
给定数据序列,作拟合多项式,如果要求过这些点,那么有矛盾方程组:即:(6.6)我们作一辅助函数这是自变量为的多元函数,要使达到最小值,采用多元函数求权值的方法,对每一个自变量的偏导数为0。
整理成以为未知数的线性方程组整理成矩阵形式,其中:这是一个的对称方程组,称为法方程。
只要非奇异,就可以得出唯一解。
这就是矛盾方程组的最小二乘解。
有什么快捷的方法来求法方程的解?把矛盾方程组(6.6)写成矩阵形式,其中容易验证,法方程就是。
例如,拟合直线的矛盾方程组的形式如下:化简得到与(6.3)相同的法方程:在线性代数中,我们知道,关于方程组,若秩秩,则方程组无解,这时方程组称为矛盾方程组。
在数值代数中对矛盾方程计算的是在均方误差极小意义下的解,也就是在最小二乘法意义下的矛盾方程的解。
定理6.1将证明,方程组的解就是矛盾方程组在最小二乘法意义下的解。
定理6.11.为行列的矩陈,为列向量,秩,称为矛盾方程的的法方程,法方程恒有解。
2.是的解,当且仅当满足,即是法方程的解。
证明:1)对作行初等变换,使,∴秩而秩秩秩∴方程组有解而且解惟一存在。
2)设满足,任取,则由于是任取的,故法方程组的解为极小问题的解。
事实上,对离散数据作次多项式曲线拟合,要计算的极小问题。
这与解矛盾方程组或求的极小问题是一回事。
在这里故对离散数据所作的次拟合曲线,可通过解下列方程组求得:例6.3给定一组数据,见下表,用二次多项式函数拟合这组数据。
解:记二次拟合曲线为,形成法方程:而=====得到:解方程得:= 0.66667,= -1.39286,= -0.13095∴ = 0.66667-1.39286 -0.13095例6.4给出一组数据,见下表。
用最小二乘法求形如的经验公式。
解:列出法方程:===法方程为:解方程得到:=10.675,= 0.137拟合曲线为:10.678+0.137有些非线性函数经过转换以后可化为线性函数计算。
例如,令,则化拟合曲线为:。
例6.5求一个形如的经验函数公式,使它能够和下列数据相拟合。
解:化经验公式为线性形式,对经验公式的两边取自然对数有由矛盾方程组得到法方程组即解方程组得:∴拟合曲线的均方误差为:计算结果见图6.4。
图6.4 拟合曲线图示例6.6解矛盾方程组解:写出法方程组,即得解法方程得: 1.5917,0.5899,0.7572。
6.4权有的实际问题中,已知数据不一定都是一次观测的结果,对于不同的可能观测次数不同,在矛盾方程组中,一组确定一个方程,而最小二乘解对每个方程来说都还存在误差,这样,把每对都同等看待就不太合理,希望观测次数多的(即可靠性大些的)数据在矛盾方程组中占的比重大些。
为了使问题的提法更有一般性,通常把最小二乘法中偏差平方和改为加权平方和,使最小,其中称作权。
同样,可由误差函数求极值,得到法方程,其中,事实上,只需对矛盾方程组作一些修改,每个方程乘上,得到,其中这样,就使,仍然可用前面的方法,对,左乘用求得最小二乘解。
6.5用正交多项式作最小二乘拟合我们不仅可用多项式来拟合函数,还可用一般的函数来拟合。
定义6.1若,如果当且仅当时成立,则称在上线性无关,称为上线性无关族。
最小二乘法的一般提法为:对给定的一组数据,要求在函数类中找一个函数,使加权平地均和,其中这里是线性无关的函数族,是上的权函数,点处的表示该点数据的重要程度。
求误差函数的极小值点,由多元函数极值的必要条件得:这是个未知数个方程的方程组,称为法方程式。
定义6.2:称为与关于点集的内积。
这样,法方程式可简写为,记为,其中称为克莱姆行列式,记作。
定理6.2的充要条件是线性无关。
证明:若存在使对此式两边分别取与的内积得:这是一个以为未知数的齐次方程组,有非零解的充要条件是系数矩阵行列式等于零,于是的充要条件是方程有全零解,即全为0,所以线性无关。
证毕。
由于法方程有惟一解的充要条件是,因而线性无关也是法方程有惟一解的充要条件。
特别当取为时,由于是在中的线性无关函数族,因而必有最小二乘解。
用上的多项式拟合,需要解一个的线性方程组,且当取得大一此时,法方程的系数矩阵会出现病态。
从系数矩阵B的形式看,里面的元素都是些内积,是否能取某些函数族,使对非对角元素全变为0?如果有这样的函数族,那么方程容易解,病态也得到改善。
定义6.3函数族如果在点集上满足称为点集带权的正交函数族。
例6.7 三角函数族上是正交函数族(权).实际上,而如果拟合函数在上取,且是正交函数族,则法方程式成为:直接可得到,不用解线性方程组了。
且容易估算,是否病态也容易判断。
完成以上工作的关键在于如何构造正交函数族。
正交多项式是最简单的正交函数族。
常用的正交多项式如:Chebyshev(切比雪夫)多项式、Legendre(勒让德)多项式等。
现在我们根据给定结点及权函数,造出带权正交的多项式族,用递推公式表示如下:其中这样给出的是正交的,这一点可以用归纳法证明。
例6.8 已知函数表,利用正交多项式求拟合多项。
解:设所以:所以:所以:得:6.6程序示例程序6.1用线性函数拟合给定数据。
算法描述输入值,及。
解方程组:输出。
程序源码////////////////////////////////////////////// purpose:(x_i,y_i)线性拟合函数//////////////////////////////////////////////# include <stdio.h># define MAX_N 25 //(x_i,y_i)的最大维数typedef struct tagPOINT // 点的结构{ double x;double y;} POINT;int main ( ){int m;int i;POINT points [MAX_N ];static double u11,u12,u21,u22,c1,c2;double a,b,tmp;print f (“\ nInput n value:”); // 输入点数mscanf (“% d”,&m);if (m>MAX_N ){printf (“The input n is larger then MAX_N,please redefine the MAX_N.\ n”);return 1;}if (m<= 0){ printf (“Please input a number between 1 and % d. \ n”,MAX_N );return 1;}printf (“Now input the(x_i,y_i),i=0,…,% d: \ n”,m-1); // 输入点for (i=0;i<= m;i++){scanf (“% lf”,&tmp);printf [i].x=tmp;scanf (“%lf ”,& tmp);printf [i].y=tmp;// scanf (“%lf %lf ”,& printf [i].x,& printf [i].y);}for (i=0;i<= n;i++) // 列出方程U(a,b)T = c{u21+ = points [i].x;u22+ = points [i].x points [i].x;c1+ = points [i].y;c2+ = points [i].y points [i].y;}u12 = u21;u11 = m;// 求解a = ( cl u22-c2u12) / (u11 u22-u12u21);b = ( cl *u21-c2u11) / (u21 u12-u22u11);printf(“Solve:p(x) = %f +%f x \ n”,a,b);// 输出return 0;} // ----------End of File---------计算实例用线性函数拟合下列数据(例6.1)。