曲线拟合最小二乘法对数c语言实现,基于最小二乘法的曲线拟合

摘要:本文介绍曲线拟合法的基本原理,利用用最小二乘法分别确定线性曲线、多项式、指数曲线的函数模型,并对模型的各个参数进行求解。并用Matlab编制程序,对样本数据进行指数拟合与仿真。

关键词:曲线拟合;最小二乘法;matlab;仿真

根据有限的离散测量点进行曲线拟合是工程实践中经常遇到的问题。曲线拟合是用连续曲线近似地刻画或比拟平面上离散点组函数关系的一种数据处理方法。传统的曲线拟合方法是用解析表达式逼近离散数据。目前,常用的曲线拟合方法有最小二乘法、遗传算法、契比雪夫法及插值法等,这使传统的方法得到了发展和改进:文献[1]对多周期正弦曲线拟合以及正弦曲线的外推存在的问题进行了探讨,指出正弦曲线的最小二乘多项式拟合方法的局限性,提出了一种基于傅利叶变换的频率已知正弦曲线拟合方法。文献[2]根据最小二乘原理,将样条小波函数应用于曲线拟合中,提出了一种新型的信号处理方法―样条小波最小二乘法(SWLS);文献[3]在利用BP神经网络进行曲线拟合时,提出了一种新的快速构建BP神经网络结构的方法,同时针对在曲线拟合过程中经常出现的一些问题提出了解决方案。

本文介绍曲线拟合法的基本原理,针对样本点的各种分布情况,采用最小二乘法的方法,选取不同的函数曲线进行拟合。

1.曲线拟合的最小二乘法

曲线拟合问题是指:通过观察和测量得到一组离散数据序列(xi,yi),i=1,2,3・・・m,当所得到数据是比较准确时,那么,构造拟合函数ψ(x)逼近客观存在的函数y,使得ψ(x)和y的误差或距离最小。

常用曲线拟合标准有以下三种:

①各点误差绝对值(1范数)的和最小,即:

R1=min∑mi=1ψ(xi)-yi

②各点误差模的最大值(∞范数)最小,即:

R∞=min(max1≤i≤mψ(xi)-yi)

③各点误差的平方和最小,即:

R=min∑mi=1[ψ(xi)-yi]2

数据拟合的最小二乘法问题是:根据给定的数据组(xi,yi),i=1,2,3・・・m,选取近似函数形式,即给定函数类H,求函数ψ(x)∈H,使得

∑ni=1[ψ(xi)-yi]2=minφ∈H∑mi=1[φ(xi)-yi]2

这种求近似函数的方法称为数据拟合的最小二乘法,函数ψ(x)称为这组数据的最小二乘函数[4]。

2.曲线拟合

2.1线性拟合

对给定的数据组(xi,yi),i=1,2,3・・・m,求一条直线:p(x)=a+bx,按最小二乘法的求作方法,拟合直线与定标曲线相应点输出量偏差的平方和为最小。有多元函数的极值原理,minQ(a,b)的极小值要满足:

Q(a,b)a=2∑mi=1(a+bxi-yi)・1=0Q(a,b)b=2∑mi=1(a+bxi-yi)・xi=0

整理得到满足最小均方差的正则方程,用消元法或者克莱姆方法解出方程,得方程(1):

a=1D(∑mi=1yi∑mi=1x2i-∑mi=1xi∑mi=1xiyi)b=1D(m∑mi=1xiyi-∑mi=1xi∑mi=1yi)

其中,D=m∑mi=1x2i-(∑mi=1xi)2。

2.2多项式拟合[4]

对给定的数据组(xi,yi),i=1,2,3・・・m,求一个n的多项式(n

ma0 + a1 ∑mi = 1xi + ・・・ + an ∑mi = 1xni = ∑mi = 1yi a0 ∑mi = 1xi + a1 ∑mi = 1x2i ・・・ + an ∑mi = 1xn + 1i = ∑mi = 1yi xi ・・・a0 ∑mi = 1xni + a1 ∑mi = 1xn + 1i ・・・ + an ∑mi = 1x2ni = ∑mi = 1yi xni

由函数组1,x,x2,・・・xm的线性无关性可证明,方程组存在唯一的解,且解所对应的多项式必定是已给数据组的最小二乘法n次拟合多项式。

2.3指数拟合

如果数据组(xi,yi),i=1,2,3・・・m的分布近似指数曲线,则拟合时可用指数函数y=a・ebx。先将曲线方程线性化,两边取对数得:lny=lnb+ax(1),分别命Y=lny,A=lnb,则方程(1)可写成Y=A+ax,再用最小二乘法按直线拟合的原理求出A,进而b=eA可求。

3.matlab仿真

采用Basic,C等编程语言来实现曲线拟合,需要编写非常复杂的算法程序,而Matlab 语言是集数值计算、符号运算和图形处理等强大功能于一体的科学计算语言,适用于工程应用各领域的分析、设计和复杂计算。在此方面,Mat lab 具有一般高级语言无法比拟的优势。

在经济统计中的某商品销售量预测或者人口统计中的短期人口测算等等,都可以用指数函数来拟合,如表1为某疾病发病率与年龄段的关系。

表1某疾病发病率与年龄段的关系

x12345678y0.8982.383.071.842.021.942.222.77x9101112131415y4.024.675.466.5310.916.522.5

根据表1数据,建立以x为横坐标, y为纵坐标的坐标系,用Matlab软件把各x、y的值作为坐标点,画出这些点。在根据指数曲线拟合原理,可以求出A=-0.0910,a=0.1824,则作出函数图象如图1所示。

图1指数拟合仿真结果图

4.结束语

在通常的数据处理中,不论是线性拟合,还是多项式拟合,至相当一部分经变换可转变为线性拟合的非线性拟合,都可采用最小二乘法的原理来进行曲线拟合,并且基于最小二乘曲线拟合及Matlab实现方法简明、适用,可应用于类似的测量数据处理和实验研究。(作者单位:中国农业银行青海分行西宁支行)

参考文献:

[1]齐国清,吕健.正弦曲线拟合若干问题探讨[J].计算机工程与设计,2008,29(14):3677-3680.

[2]郑小萍,莫金垣,谢天尧.一种新型的曲线拟合技术在分析信号处理中的应用[J].计算机与应用化学,1999,16(5):371-372.

[3]包健,赵建勇,周华英. 基于BP网络曲线拟合方法的研究[J].计算机工程与设计,2005,26(7):1840-1848.

你可能感兴趣的:(曲线拟合最小二乘法对数c语言实现,基于最小二乘法的曲线拟合)