搜档网
当前位置:搜档网 › 非线性曲线拟合的实证分析

非线性曲线拟合的实证分析

非线性曲线拟合的实证分析
非线性曲线拟合的实证分析

非线性曲线拟合的实证分析

作者:吴燕

作者单位:安徽财经大学,安徽,蚌埠,233041

刊名:

大众科技

英文刊名:DAZHONG KEJI

年,卷(期):2008(9)

被引用次数:1次

参考文献(1条)

1.易丹辉数据分析与Eviews应用

引证文献(1条)

1.矫震.王道杰.谢洪.张金山.郭灵辉云南东川蒋家沟银合欢林区原状土抗剪强度试验分析[期刊论文]-中国水土保持 2009(11)

本文链接:https://www.sodocs.net/doc/ff7755732.html,/Periodical_dgkj200809005.aspx

粒子群算法在神经网络非线性函数拟合中的应用【精品文档】(完整版)

粒子群算法在神经网络非线性函数 拟合中的应用 一、本文研究和解决的问题 在自动控制问题中,系统辨识的目的是为了建立被控对象的数学模型。多年来,控制领域对于复杂的非线性对象的辨识一直未能很好的解决,神经网络所具有的非线性特性和学习能力使其在系统辨识方面有很大的潜力。为解决具有复杂的非线性、不确定性和不确知对象的辨识问题开辟了一条有效的途径。基于神经网络的系统辨识是以神经网络作为被辨识对象的模型,利用其非线性特性,可建立非线性系统的静态或动态模型。理论上,多层前馈神经网络能够以任意精度逼近任意非线性映射。 但传统神经网络学习算法中存在的收敛速度慢、容易陷入局部最优等缺点,于是设计了基于标准粒子群算法的神经网络非线性函数拟合系统。 二、传统的BP神经网络 BP 神经网络即采用误差反向传播算法的网络,是一种至今仍然最为流行的前馈型神经网络模型。BP 神经网络有很强的非线性映射能力,它能学习和存贮大量输入-输出模式映射关系,而无需事先了解描述这种映射关系的数学方程。只要能提供足够多的样本模式对供给网络进行学习训练,它便能完成由n 维输入空间到m 维输出空间的非线性映射。BP 学习算法属于误差修正型学习,其关键在于根据误差修正输出层和隐含层的连接权值。其学习的基本实现方法是基于最小平方误差准则和梯度下降优化方法来确定权值调整法则。 BP网络建模特点: 非线性映照能力:神经网络能以任意精度逼近任何非线性连续函数。在建模过程中的许多问题正是具有高度的非线性。 并行分布处理方式:在神经网络中信息是分布储存和并行处理的,这使它具有很强的容错性和很快的处理速度。 自学习和自适应能力:神经网络在训练时,能从输入、输出的数据中提取出规律性的知识,记忆于网络的权值中,并具有泛化能力,即将这组权值应用于一般情形的能力。神经网络的学习也可以在线进行。 数据融合的能力:神经网络可以同时处理定量信息和定性信息,因此它可以利用传统的工程技术(数值运算)和人工智能技术(符号处理)。 多变量系统:神经网络的输入和输出变量的数目是任意的,对单变量系统与多变量系统提供了一种通用的描述方式,不必考虑各子系统间的解耦问题。

非线性曲线拟合的实证分析

- 17 - 非线性曲线拟合的实证分析 吴 燕 (安徽财经大学,安徽 蚌埠 233041) 【摘 要】文章主要是运用matlab 软件,通过定量分析对非线性曲线模型进行曲线拟合,得到非线性曲线的模型,并找出最佳模型。 【关键词】matlab;双曲线;对数曲线;幂函数曲线;预测 【中图分类号】TP319 【文献标识码】A 【文章编号】1008-1151(2008)09-0017-02 (一)理论概述 在生产和科学实验中,线性模型是回归模型中最常见的一种,但实际中,许多现象之间的关系往往并不是线性的,而是呈现某种曲线关系。这就产生了非线性模型理论方法。 非线性模型指的是关于参数或自变量是非线性函数的模型。非线性模型的形式复杂多样,有双曲线形式、对能够数 形式、幂函数形式等,更复杂的有修正指数曲线、Compterz 曲线以及Logistic 曲线等。如何根据实际的数据选择合适的模型,是建模的关键。总的说来可以参考两种方法:一是根 据散点图来确定类型,即由散点图的形状来大体确定模型类 型;二是根据一定的经济知识背景。 在matlab 软件中,非线性拟合主要是通过函数inline 和命令[beta,r,J] = nlinfit(x,y,fun,beta0)来进行的。其 中,函数inline 是用来定义所要求的函数的;用命令[beta,r,J]= nlinfit(x,y,fun,beta0)来进行拟合,其中x,y 为原始数据,fun 是在M 文件中定义的函数,beta0是函数中 参数的初始值;beta 为参数的最优值,r 是各点处的拟合残差,J 为雅克比矩阵的数值。 (二)实证分析 本文采用某企业在16个月度的某产品产量和单位成本资料的数据,研究二者关系,运用matlab 软件分别对数据进行双曲线拟合、对数曲线拟合,幂函数曲线拟合,并从中找出最佳的拟合形式。 某企业某产品产量和单位成本资料 月度序号 产量(台)x 单机成本(元/台)y 1 4300 346.23 2 4004 343.34 3 4300 327.46 4 5016 313.27 5 5511 310.75 6 5648 307.61 7 5876 314.56 8 6651 305.72 9 6024 310.82 10 6194 306.83 11 7558 305.11 12 7381 300.71 13 6950 306.84 14 6471 303.44 15 6354 298.03 16 8000 296.21 首先,为了明确产量和单机成本是何种关系,先绘制散点图。在matlab 软件中用plot(x,y)命令来做散点图,得到如下图形: 2333333 散点图 从图中可以看出y 和x 不宜采用线性模型来描述,此时考虑非线性模型。根据散点图,y 随着x 的增加而减少,结合 经济学中成本理论的相关知识,可以考虑以下三个模型: 双曲线:y=a+b/x 对数曲线:y=a+b*lnx 幂函数曲线:y=b ax 下面分别给出三种曲线函数的拟合程序: 1.双曲线模型:y=a+b/x x1=[4300,4004,4300,5016,5511,5648,5876,6651,6024,6194,7558,7381,6950,6471,6354,8000]; y1=[346.23,343.34,327.46,313.27,310.75,307.61,314.56,305.72,310.82,306.83,305.11,300.71,306.84,303.44,298.03,296.21]; 先要进行初始参数的计算,选择已知数据的两点(4300,346.23)和(8000,296.21),在matlab 软件中用如下命令来解方程组: [a,b]=solve('346.23=a+b/4300','296.21=a+b/8000'); 得到初始值a= 238.08,b= 465050.81 b01=[238.08,465050.81]; %初始参数值 fun1=inline('b(1)+b(2)./x','b','x'); % 定义函数 [b1,r1,j1]=nlinfit(x1,y1,fun1,b01); y=250+355460/x1; %根据b1写出具体函数 【收稿日期】2008-06-09 【作者简介】吴燕(1983-),安徽巢湖人,安徽财经大学数量经济专业在读生,研究方向为经济优化与应用。

一种非线性函数的曲线拟合方法

一种非线性函数的曲线拟合方法(函数公式:k = A*(T^a)*exp(E/T) ) 上一篇文章说了,函数的曲线拟合我以前没做过,所以是摸着石头过河,不知道所采用的方法是否合理,虽然是完成了拟合,不过我觉得自己采用的拟合方法还是比较原始的,希望做曲线拟合的朋友多多指教。 原始数据如下: T(K) K 200.00 2.5069E-13 220.00 3.5043E-13 223.00 3.6741E-13 225.00 3.7904E-13 250.00 5.4617E-13 275.00 7.5744E-13 295.00 9.6192E-13 298.00 9.9551E-13 300.00 1.0183E-12 325.00 1.3346E-12 350.00 1.7119E-12 375.00 2.1564E-12 400.00 2.6739E-12 425.00 3.2706E-12 450.00 3.9527E-12 475.00 4.7261E-12 480.00 4.8922E-12 500.00 5.5968E-12 525.00 6.5710E-12 550.00 7.6544E-12 575.00 8.8529E-12 600.00 1.0172E-11

800.00 2.5705E-11 1000.00 5.1733E-11 1250.00 1.0165E-10 目标:拟合成k = A*(T^a)*exp(E/T) 模式的公式, 其中A、a和E为未知常数,是我们需要通过曲线拟合要求出的数据。 拟合目标中的公式是幂逼近和指数逼近的混合,用Matlab的cftool 工具箱的自定义函数来逼近,效果并不理想,所以我就参考了网上的一些博客和百度知道等资源,采取如下策略: 首先将非线性的拟合公式转化为线性公式,再用求解线性方程组的矩阵方法求出未知常数的值。 具体地说,拟合公式的线性化表达式为:log(k) = log(A) + a*log(T) + E/T 。这里有三个未知常数log(A)、a 和E,则依次取T,K各三个数据,组成N 个线性方程组:Cx=b,其中:x=[log(A), a, E], C=[1, log(T), 1/T], b=log(k) 。 解这些线性方程组,得到所有方程组的解组成的解矩阵xMat,其大小为N*3,对解矩阵的每一列求平均,即可得到所求的未知常数值。 根据以上策略,可求得未知常数A、a和E的值如下: A = 3.8858e-020,a = 3.0595,E = -117.2915 程序源码: function [A,a,E]= fun_NLFit(T,K) % 函数FUN_NLFIT() 根据输入T,K的数据集,求出拟合公式k = A*(T^a)*exp(E/T) % 的未知常数A,a,E 。 logT=log(T); logK=log(K);

基于BP神经网络的非线性函数拟合

基于BP神经网络的非线性函数拟合 摘要:本文建立BP神经网络对一个多输入多输出系统的二元非线性函数进行拟合,仿真实验表明:在样本数据充足且不含噪声的情况下,训练的精度越高,逼近的效果越好;数据不充足且不含噪声时,训练精度的高低在一定范围内对于网络性能没有决定性的影响,网络性能主要取决于初始化;不管训练数据是否充足,若含有噪声,训练精度过高会使网络泛化能力降低。 0引言 作为当前应用最为广泛的一种人工神经网络,BP网络在函数逼近、模式识别、数据压缩、智能控制等领域有着非常广泛的应用。BP网络由大量简单处理单元广泛互联而成,是一种对非线性函数进行权值训练的多层映射网络,结构简单,工作状态稳定,具有优良的非线性映射能力,理论上它能够以任意精度逼近任意非线性函数。BP神经网络通过学习能够存储大量输入输出样本中蕴含的映射关系,只需提供足够的样本模式对BP网络进行训练,而无需事先了解数学方程。本文采用BP神经网络解决下列函数拟合问题。 函数逼近:设计一个神经网络拟合下列多输入多输出函数: y1=2+x1RP1.5-1.5sin(3x2); y2=x2sin(x1)+x1cos(x2); 1< x1, x2<5 产生200个数据,其中100个用来训练网络,另外100个用于网络模型的测试。1BP神经网络结构和算法 一个典型的3层BP神经网络结构如图1所示,包括输入层、隐含层和输出层。各层

神经元之间无反馈连接,各层内神经元之间无任何连接。其中隐含层的状态影响输入输出之间的关系,及通过改变隐含层的权系数,就可以改变整个多层神经网络的性能。BP 神经网络的学习过程由正向传播和反向传播组成。在正向传播中,输入的样本从输入层经过隐含层之后,传向输出层,在逐层处理的过程中,每一层神经元的状态只对下一层神经元的状态产生影响。在输出层把现行输出和期望输出进行比较,如果现行输出不等于期望输出,则进入反向传播过程。反向传播过程中,误差信号从输出层向输入层传播,并对每个隐含层的各个神经元的权系数进行修改,使误差不断减少,直至达到精度要求。BP 算法的实质是求取误差函数最小值问题,通过多个样本的反复训练,一般采用非线性规划中的最速下降方法,按误差函数的负梯度方向修改权系数。 隐含节点 图1 典型3层BP神经网络结构图 2用于函数拟合的BP神经网络模型的建立 为建立函数拟合的BP神经网络模型,一般要考虑以下几步: (1) 样本数据的产生 为简单起见,在x1,x2均属于[1,5]区间内选择均匀分布的200个数据点分别作为训练和测试样本。如图2所示。

matlab非线性参数拟合估计_很好的参考材料

使用nlinfit、fminsearch在matlab中实现基于最小二乘法的 非线性参数拟合 (整理自网上资源) 最小二乘法在曲线拟合中比较普遍。拟合的模型主要有 1.直线型 2.多项式型 3.分数函数型 4.指数函数型 5.对数线性型 6.高斯函数型 ...... 一般对于LS问题,通常利用反斜杠运算“\”、fminsearch或优化工具箱提供的极小化函数求解。在Matlab中,曲线拟合工具箱也提供了曲线拟合的图形界面操作。在命令提示符后键入:cftool,即可根据数据,选择适当的拟合模型。 “\”命令 1.假设要拟合的多项式是:y=a+b*x+c*x^ 2.首先建立设计矩阵X: X=[ones(size(x)) x x^2]; 执行: para=X\y para中包含了三个参数:para(1)=a;para(2)=b;para(3)=c; 这种方法对于系数是线性的模型也适应。 2.假设要拟合:y=a+b*exp(x)+cx*exp(x^2) 设计矩阵X为 X=[ones(size(x)) exp(x) x.*exp(x.^2)]; para=X\y 3.多重回归(乘积回归) 设要拟合:y=a+b*x+c*t,其中x和t是预测变量,y是响应变量。设计矩阵为X=[ones(size(x)) x t] %注意x,t大小相等! para=X\y polyfit函数 polyfit函数不需要输入设计矩阵,在参数估计中,polyfit会根据输入的数据生成设计矩阵。 1.假设要拟合的多项式是:y=a+b*x+c*x^2 p=polyfit(x,y,2) 然后可以使用polyval在t处预测: y_hat=polyval(p,t) polyfit函数可以给出置信区间。 [p S]=polyfit(x,y,2) %S中包含了标准差 [y_fit,delta] = polyval(p,t,S) %按照拟合模型在t处预测 在每个t处的95%CI为:(y_fit-1.96*delta, y_fit+1.96*delta)

matlab非线性拟合

如何拟合曲线 表达式必须自己估计。有很多表达式都能拟合出类似曲线。matlab里做曲线拟合的主要有(我经常用的)有这两个:polyfit和lsqcurvefit。前者专门对高次多项式拟合,后者则适用于绝大多数非线性拟合。根据描点判断可以用多项式拟合,我下面以二次多项式举例: clear x=[ 0 28 64 103 123 144 217 291 429 504 553 657 711 783 838]'; y=[ 31.5300 30.4300 29.3800 28.8000 28.1300 27.5900 25.5300 24.3000 22.8300 21.5700 21.8600 29.4900 34.5200 41.7600 44.6000]; %用polyfit拟合 p=polyfit(x,y,2); %用2次多项式 figure(1); title('拟合1') hold on plot(x,y,'+',x,polyval(p,x)); legend('原始值','拟合值'); %用lsqcurvefit拟合 f=@(b,x) b(1)+b(2).*x+b(3).*x.^2; %构造要拟合的函数 b=lsqcurvefit(f,[1,1,1],x,y); %进行拟合 figure(2) title('拟合2'); hold on plot(x,y,'+',x,f(b,x)); legend('原始数据','拟合数据') 如何计算残差! 首先确定你把拟合曲线图画出来了,然后在figure 1上边的选项中按Tools----Basic Fitting-----cubic----Show equations----plot residuals-----"然后点向右的箭头"-----”再从右边选项框里选Save to workspace“ 这就行了

MATLAB在非线性曲线拟合中的应用研究

MATLAB 在非线性曲线拟合中的应用小结 摘要:归纳总结了非线性曲线拟合的方法、求解步骤和上机操作过程 关键词:曲线拟合非线性MA TLAB 正文: 1.曲线拟合的基本原理 已知一组测定的数据(例如N 个点(xi,yi )去求得自变量x 和因变量y 的一个近似解析表达式y=φ(x )。若记误差δi=φ(xi )-yi ,i=1,2,…N ,则要使误差的平方和最小,即要求: ∑== N i i Q 1 2δ 为最小,这就是常用的最小二乘法原理。 2 .MATLAB 曲线拟合的相关方法 2.1.函数形式: (1)多项式拟合函数polyfit ,调用格式为: p=polyfit (x,y ,n ) 其中x ,y 为参与曲线拟合的实验数据,n 为拟合多项式的次数,函数返回值为拟合多项式的系数(按降幂排列)。n=1时,就为线性拟合。 例1:给出表1数据,试用最小二乘法求一次和二次拟合多项式。 表1 数据 在MATLAB 命令窗口中输入: clear; close; x=-1:0.25:1; y=[-0.2209,0.3295,0.8826,1.4392,2.0003,2.5645,3.1334,3.7061,4.2836] p1=polyfit(x,y ,1) p2=polyfit(x,y ,2) y1=polyval(p1,x); y2=polyval(p2,x); plot(x,y ,'+',x,y1,'r:',x,y2,'k-.') 运行结果:

拟合多项式为:y*=2.0516+2.0131和y*=0.0313x2+2.2516x+2.20001 (2)非线性数据拟合函数lsqcurvefit 调用格式为: c=lsqcurvefi (t'fun',x0,xdata,ydata ) 其中'fun'为拟合函数的M -函数文件名,x0为初始向量,xdata,ydata 为参与曲线拟合的实验数据。函数返回值c 为非线性函数fun 的拟合系数。 例2:2004年全国大学生数学建模竞赛C 题(酒后驾车)中给出某人在短时间内喝下两瓶啤酒后,间隔一定的时间测量他的血液中酒精含量y (毫克/百毫升),得到数据如表2。 表2 酒精含量与饮酒时间的实验数据 通过建立微分方程模型得到短时间内喝酒后血液中 酒精浓度与时间的关系为: )(321t c t c e e c y ---= (2) 根据实验数据,利用非线性拟合函数lsqcurvefit ,确定模型(2)式中的参数c1,c2,c3。求解过程为: 先编写一个M -函数文件Example2_1: function f=Example2_1(c,tdata) f=c(1)*(exp(-c(2)*tdata)-exp(-c(3)*tdata)); 保存后,在命令窗口中输入: clear tdata=[0.25 0.5 0.75 1 1.5 2 2.5 3 3.5 4 4.5 5 6 7 8 9 10 11 12 13 14 15 16]; ydata=[30 68 75 82 82 77 68 68 58 51 50 41 38 35 28 25 8 15 12 10 7 7 4]; c0=[1 1 1];

非线性回归分析(常见曲线及方程)

非线性回归分析 回归分析中,当研究的因果关系只涉及因变量和一个自变量时,叫做一元回归分析;当研究的因果关系涉及因变量和两个或两个以上自变量时,叫做多元回归分析。此外,回归分析中,又依据描述自变量与因变量之间因果关系的函数表达式是线性的还是非线性的,分为线性回归分析和非线性回归分析。通常线性回归分析法是最基本的分析方法,遇到非线性回归问题可以借助数学手段化为线性回归问题处理 两个现象变量之间的相关关系并非线性关系,而呈现某种非线性的曲线关系,如:双曲线、二次曲线、三次曲线、幂函数曲线、指数函数曲线(Gompertz)、S型曲线(Logistic) 对数曲线、指数曲线等,以这些变量之间的曲线相关关系,拟合相应的回归曲线,建立非线性回归方程,进行回归分析称为非线性回归分析 常见非线性规划曲线 1.双曲线1b a y x =+ 2.二次曲线 3.三次曲线 4.幂函数曲线 5.指数函数曲线(Gompertz) 6.倒指数曲线y=a / e b x其中a>0, 7.S型曲线(Logistic) 1 e x y a b-= + 8.对数曲线y=a+b log x,x>0 9.指数曲线y=a e bx其中参数a>0 1.回归: (1)确定回归系数的命令 [beta,r,J]=nlinfit(x,y,’model’,beta0) (2)非线性回归命令:nlintool(x,y,’model’, beta0,alpha) 2.预测和预测误差估计: [Y,DELTA]=nlpredci(’model’, x,beta,r,J) 求nlinfit 或lintool所得的回归函数在x处的预测值Y及预测值的显著性水平为1-alpha的置信区间Y,DELTA. 例2 观测物体降落的距离s与时间t的关系,得到数据如下表,求s 2 解: 1. 对将要拟合的非线性模型y=a/ e b x,建立M文件volum.m如下:

matlab非线性曲线拟合

m atlab非线性曲线拟合 最近在用matlab做非线性曲线拟合,发现matlab功能确实很强大,总结其方法有如下几种: 一、Matlab非线性拟合工具箱 单一变量的曲线逼近 Matlab有一个功能强大的曲线拟合工具箱cftool ,使用方便,能实现多种类型的线性、非线性曲线拟合。假设我们要拟合的函数形式是y=a+(b-a)*c^2*(c^2-x^2)/((c^2-x^2)^2+(2*d*x)^2);其中 a,b,c,d是待定系数。 在命令行输入数据: x=8:0.01:12.4; y=real(epsilon); 2、启动曲线拟合工具箱 》cftool 3、进入曲线拟合工具箱界面“Curve Fitting tool” (1)点击“Data”按钮,弹出“Data”窗口; (2)利用X data和Y data的下拉菜单读入数据x,y,可修改数据集名“Data set name”,然后点击“Create data set”按钮,退出“Data”窗口,返回工具箱界面,这时会自动画出数据集的曲线图; (3)点击“Fitting”按钮,弹出“Fitting”窗口; (4)点击“New fit”按钮,可修改拟合项目名称“Fit nam e”,通过“Data set”下拉菜单选择数据集,然后通过下拉菜单“Type of fit”选择拟合曲线的类型,工具箱提供的拟合类型有: Custom Equations:用户自定义的函数类型 Exponential:指数逼近,有2种类型, a*exp(b*x) 、a*exp(b*x) + c*exp(d*x) Fourier:傅立叶逼近,有7种类型,基础型是 a0 + a1*cos(x*w) + b1*sin(x*w) Gaussian:高斯逼近,有8种类型,基础型是a1*exp(-((x-b1)/c1)^2) Interpolant:插值逼近,有4种类型,linear、nearest neighbor、cubic spline、shape-preserving Polynomial:多形式逼近,有9种类型,linear ~、quadratic ~、cubic ~、4-9th degree ~ Power:幂逼近,有2种类型,a*x^b 、a*x^b + c Rational:有理数逼近,分子、分母共有的类型是linear ~、quadratic ~、cubic ~、4-5th degree ~;此外,分子还包括constant型 Smoothing Spline:平滑逼近 Sum of Sin Functions:正弦曲线逼近,有8种类型,基础型是 a1*sin(b1*x + c1) Weibull:只有一种,a*b*x^(b-1)*exp(-a*x^b) 选择好所需的拟合曲线类型及其子类型,并进行相关设置: ——如果是非自定义的类型,根据实际需要点击“Fit options”按钮,设置拟合算法、修改待估计参数的上下限等参数; ——如果选Custom Equations,点击“New”按钮,弹出自定义函数等式窗口,有“Linear Equations线性等式”和“General Equations构造等式”两种标签。 在本例中选Custom Equations,点击“New”按钮,选择“General Equations”标签,输入函数类型 y=a+(b-a)*c^2*(c^2-x^2)/((c^2-x^2)^2+(2*d*x)^2),设置参数a、b、c、d的上下限,然后点击OK。 5)类型设置完成后,点击“Apply”按钮,就可以在Results框中得到拟合结果,如下例: General model: f(x) = a+(b-a)*c^2*(c^2-x^2)/((c^2-x^2)^2+(2*d*x)^2) Coefficients (with 95% confidence bounds): a = 3.155 (3.129, 3.181)

非线性函数拟合

用非线性回归nlinfit,如果数据点多些,效果会更好。 function nonlinefit clc;clear; t=[0 4 8 40]; y=[20.09 64.52 85.83 126.75]; beta=nlinfit(t,y,@myfunc,[1 1 1 1]) a=beta(1) k1=beta(2) k2=beta(3) m=beta(4) tt=0:1:40 yy=a+k1*exp(m*tt)+k2*exp(-m*tt) plot(t,y,'o',tt,yy) function y1=myfunc(const,t) a=const(1); k1=const(2); k2=const(3); m=const(4); y1=a+k1*exp(m*t)+k2*exp(-m*t); %或者用以下代码,更为简捷。 clc;clear; t=[0 4 8 40]; y=[20.09 64.52 85.83 126.75]; myfunc=inline('beta(1)+beta(2)*exp(beta(4)*t)+beta(3)*exp(-beta(4) *t)','beta','t'); beta=nlinfit(t,y,myfunc,[1 1 1 1]); a=beta(1),k1=beta(2),k2=beta(3),m=beta(4) %test the model tt=0:1:40 ; yy=a+k1*exp(m*tt)+k2*exp(-m*tt); plot(t,y,'o',tt,yy,'r') 结果:

非线性拟合的初值问题

第24卷第1期吉首大学学报(自然科学版)Vol.24No.1 2003年3月J ournal of J ishou University(Natural Science Edi ti on)Mar.2003 文章编号:1007-2985(2003)01-0037-03 非线性拟合的初值问题* 胡亮 (昆明理工大学数理系,云南昆明650224) 摘要:综述了非线性拟合初值的求解方法,并在前人研究的基础上提出了常见非线性模型初值的简便求法.该方法既可在计算机上编程实现,亦可利用计算机数学分析工具M atlab,Maple,Mathematica,M atcad,微软EXCEL及微软ORIGIN等直接求解. 关键词:数据处理;非线性拟合;插值法;数值微分 中图分类号:O241;O245文献标识码:A 曲线拟合是数据分析和数据处理的重要工作之一.曲线拟合可分为线性拟合和非线性拟合.许多数据关系可化为线性模型,但数据关系极其复杂;非线性模型也是工程技术和预测分析中常遇到的数据关系[1~3].非线性模型参数需用(加权)最小二乘法或最优化方法求解.通常的求解方法具有局部收敛性,需要给出适合的初值,初值准确与否是整个求解工作成败的关键.目前各种数学分析工具用于非线性拟合时,都要给出参数初值.Matlab,Maple,Mathematica可用求极小值或最小二乘函数公式求非线性模型参数; Matcad则有多种非线性拟合公式,其中包括广义非线性拟合公式genfit;微软EXC EL应用/规划求解0工具也能进行非线性拟合[4];微软ORIGI N则提供了许多拟合函数.但是上述方法都需要设定初值,Matcad的genfit还要求参数偏导的初值.通常初值设定是凭经验进行猜测和试探,盲目性很大,难于求得合适的初值,因此笔者拟对该初值问题进行了探讨. 1初值估算方法概述 由于非线性拟合比较复杂,因此应尽可能将模型线性化,如进行取变量的倒数、对数等数学变换,关系式的微分-积分线性化变换[3,4],分段线性化,根据专业理论简化模型(如忽略小量)等,将非线性拟合问题转化为线性拟合问题.对于不能线性化的模型,其最优化拟合就存在参数初值问题.首先,可进行专业理论分析确定参数数值范围,在这个范围内设定初值.其次,最简单的方法是选定几组实验值代入模型,联立其中简单的方程求解参数[1~3];或者用消元法得到单参数的非线性方程,用较宽的求解方法求解,如劈因子法;或研究其大范围的收敛性,得到近似初值[6],该方法需要通过数学分析确定单变量方程的收敛区间.对于多参数、高度复杂的非线性拟合,可采用各种确定性和随机性的全局最优算法.但是,全局最优理论和方法比较复杂,需要繁琐的编程和大量的计算.同时,线性化变换不如非线性拟合直接,可能仅得到近似值.因此,有必要对应用广泛而又常见的非线性拟合寻找简便的参数初值确定方法. 2几种初值估算方法 2.1参数消元法 最常见的非线性拟合是包含3个参数的拟合问题.其中带常数项的幂函数和指数函数在应用中常常用到,其典型方程式为y=ax b+c和y=ab x+c(或y=a e b x+c),指数函数的2种形式很容易互相转 *收稿日期:2002-06-02 作者简介:胡亮(1964-),男,四川省泸州市人,昆明理工大学数理系博士研究生,主要从事计算机与应用化学研究.

用微软excel进行非线性曲线拟合

警示:这些材料所描述的实验具有潜在的危险性,因此需要高标准的安全训练特殊的设备和装置,并在合适的人员指导下才能进行. 对于履行这样的安全程序和措施,你负有全部的责任和义务,并独自承担其风险. 对于所提供的任何材料的内容或其执行情况,MIT将不负任何责任和义务,不承担任何风险. 法律提示 用微软Excel求解程序进行非线性曲线拟合1 计算k obs k real及迪拜休克尔曲线 由医学博士Gheorghiu编写 I. 动力学: k obs(k观察)和k real(k真实)的计算 1. 在文件菜单中点击新建,然后点击普通工作簿: 1如果你有什么意见请与Mircea Gheorghiu博士联系.

2. 在文件菜单中,保存此工作簿. 我喜欢将工作簿命名为动力学_MG(MG 是我名字的缩写)并将它保存在个人文件夹内.

3. 你的工作簿中需要五个工作表. 四个用于动力学数据. 第五个用来进行 迪拜休克尔计算. 这五个表要附在书面报告或口头报告中. 如果工作表不够,点击插入然后在菜单中点击工作表. 为四个动力学工作表命名. 例如我选择动力学A(0.02M NaNO3),动力学 B(0.05M NaNO3),动力学C(0.1M NaNO3)和动力学D(0.2M NaNO3). 4. 现在开始将实验数据添加到四个工作表中. 以动力学B工作表为例: 在 A栏中输入时间(以秒为单位),B栏中输入相应时间下的实验得到的吸光 率(@420nm). 表格中再增加两栏一栏为计算得到的吸光率(由方程式3 计算得到) 另外一栏为实验吸光率(B栏)与计算吸光率(C栏)差的平方.

matlab 非线性拟合函数lsqcurvefit

matlab 非线性拟合函数lsqcurvefit---logistic人口模型参数估计 x= lsqcurvefit(fun,x0,xdata,ydata) x = lsqcurvefit(fun,x0,xdata,ydata,lb,ub) x = lsqcurvefit(fun,x0,xdata,ydata,lb,ub,options) x = lsqcurvefit(problem) [x,resnorm] = lsqcurvefit(...) [x,resnorm,residual] = lsqcurvefit(...) [x,resnorm,residual,exitflag] = lsqcurvefit(...) [x,resnorm,residual,exitflag,output] = lsqcurvefit(...) [x,resnorm,residual,exitflag,output,lambda] = lsqcurvefit(...) [x,resnorm,residual,exitflag,output,lambda,jacobian] = lsqcurvefit(.. .) x0为初始解向量;xdata,ydata为满足关系ydata=F(x, xdata)的数据; lb、ub为解向量的下界和上界,若没有指定界,则lb=[ ],ub=[ ]; options为指定的优化参数; fun为拟合函数,其定义方式为:x = lsqcurvefit(@myfun,x0,xdata,ydata),其中myfun已定义为 function F = myfun(x,xdata) F = … % 计算x处拟合函数值fun的用法与前面相同; resnorm=sum ((fun(x,xdata)-ydata).^2),即在x处残差的平方和; residual=fun(x,xdata)-ydata,即在x处的残差; exitflag为终止迭代的条件; output为输出的优化信息; lambda为解x处的Lagrange乘子; jacobian为解x处拟合函数fun的jacobian矩阵。 例子:%美国人口logistic方程回归 y=[3929 5308 7240 9638 12866 17069 23192 31443 38558 50156 62948 7599 5 91972 105711 ... 122775 131669 150697 179323 203185 226500]; x=1790:10:1980; func = @(beta,x) beta(1)./(1+(beta(1)/y(1)-1)*exp(-beta(2)*(x-1790)) ); beta0 = [286660 0.0285 ]; [b r]= lsqcurvefit(func,beta0,x,y); plot(x,y,'r*') hold on x2=1790:1980;

matlab曲线拟合 - 非常好非常全面的介绍M拟合的参考资料

Mathworks Tech-Note 1508 曲线拟合向导 1.介绍 2. Mathworks 产品的曲线拟合特色 a.曲线拟合工具箱(Curve Fitting Toolbox) b.Matlab 内建函数与其他的带有曲线拟合能力的附加产品(工具箱) c.线性曲线拟合 d.非线性曲线拟合 3.加权曲线拟合方法 a.曲线拟合工具箱 b.统计工具箱 c.优化工具箱 4.利用曲线拟合工具箱提高曲线拟合结果 5.其他的相关资料 第1节:简介 MA TLAB即有内建的解决很多通常遇到的曲线拟合问题的能力,又具有附加这方面的产品。本技术手册描述了几种拟合给定数据集的曲线的方法,另外,本手册还解释了加权曲线拟合、针对复数集的曲线拟合以及其他一些相关问题的拟合技巧。在介绍各种曲线拟合方法中,采用了典型例子的结合介绍。 第2节:MathWorks产品的曲线拟合特色 MATLAB有可以用于曲线拟合的内建函数。MathWorks公式也提供了很多工具箱可以用于曲线拟合。这些方法可以用来做线性或者非线性曲线拟合。MATLAB也有一个开放的工具箱――曲线拟合工具箱(Curve Fitting Toolbox),她可以用于参数拟合,也可以用于非参数拟合。本节将介绍曲线拟合工具箱与其他工具箱、以及各种MA TLAB可以用于曲线拟合的内建函数的详细特征。 a.曲线拟合工具箱 曲线拟合工具箱是专门为数据集合进行曲线拟合而设计的。这个工具箱集成了用MA TLAB建立的图形用户界面(GUIs)和M文件函数。

?利用工具箱的库方程(例如线性,二次,高阶多项式等)或者是用户自定义方程(局限于用户的想象力)可以进行参数拟合。当你想找出回归系数以及他们背后的物理意义的时候就可以采用参数拟合。 ?通过采用平滑样条或者其他各种插值方法,你就可以进行非参数拟合。当回归系数不具有物理意义并且不在意他们的时候,就采用非参数拟合方法。 曲线拟合工具箱提供了如下功能: ?数据回归,譬如截面(?sectioning)与平滑; ?标准线性最小二乘拟合,非线性最小二乘拟合,加权最小二乘拟合,约束二乘(constrained least squares)拟合以及稳健(robust)拟合; ?根据诸如R2以及误差平方和(SSE)确定的拟合性能的统计特征。 请查阅曲线拟合工具箱提供的demos。 b. MATLAB内建函数与具有曲线拟合能力的其他工具箱 除了曲线拟合工具箱,MATALB与其他工具箱也提供了些可以用于解决线性和非线性曲线拟合的功能。本节列举并解释了其中几个。 c.利用MATLAB内建函数进行线性曲线拟合 函数描述 polyfit 用多项式进行数据拟合。polyfit(X,Y,N)对数据X,Y拟合N阶多项式系数,P(X(I))~=Y(I),在最小二乘意义上。 \ 反斜线或者矩阵阵左除。如果A是一个方阵,A\B 基本上与 inv(A)*B一致的,是采用的不同计算方式而已。 polyval 在给定点计算多项式的值 corrcoef 计算两个向量的相关系数。它可以与polyfit和polyval函数一起用来在实际数据和拟合输出之间计算R2相关系数 下面给出一个利用corref计算R2值的例子: load census [p,s]=polyfit(cdate,pop,2); Output=polyval(p,cdate); Corrolation=corroef(cate,Output); cdate 与它自身很好的相关,同样的Output也与它自身很好相关。反对角线上元素是

曲线拟合_图文

MATLAB

中曲线拟合方法总结 鉴于最近遇到非线性函数拟合问题,本人对网上有关 matlab 多种类型的线性、非线性曲线拟合的方法进行了总结,希望对各位朋友有所帮助。 1. Matlab有一个功能强大的曲线拟合工具箱 cftool , 使用方便, 能实现多种类型的线性、非线性曲线拟合。下面简单介绍如何使用这个工具箱。 1.1 从 matlab 命令窗口到 cftool 可以直接在 matlab 命令行输入 cftool 命令即可进入 cftool 窗口。 》 cftool 输入命令回车后就得到一下界面 进行曲线拟合的时候,最基本的操作包括点击“data...”按钮和“fitting...”按钮。

1.2 data… . 按钮 首先,到命令窗口中为点击 "data..." 做好准备: 》 x=[8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 20]; 》 y=[0.6,0.62,0.64, 0.65, 0.66, 0.67, 0.68, 0.68, 0.69, 0.66, 0.65, 0.65,0.64]; 》 然后,点击“data...”按钮,选 x 横坐标和选 y 纵坐标变量: 1在弹出的 Data 窗口中,在 X Data 选项中选择 x, 在 Y Data中选择 y 。其中 X, Y 都是刚刚在命令行所准备的数据变量名。 2经过此步骤后点击“Create data set”按钮。这个时候 Data 对话框背后的对话框中已经有散点图了。然后点击 Data 中的 close 按钮 . 1.3 fiting … . 按钮 在正确设置 Data 对话框之后,在关闭 Data 对话框之后,就可以点击 fitting... 按钮了。会弹出这么一个对话框 : 1 在 Fitting 对话框中点击 Newfit 后在 Fitname 为此次曲线取名字:“cftool 曲线拟合”, 当有多条曲线需要同时绘制时,每次都需要点击 Newfit, 然后选择对应的Data set值即对应相应的数据变量就可以绘制多条曲线了。即同时拟合多条曲线。选择 data set。 2选择相应类型的曲线拟合(到其它地方粘贴过来的,点击 Type of fit 下拉菜单: Custom Equations:用户自定义的函数类型 · Exponential:指数逼近,有 2种类型, a*exp(b*x 、 a*exp(b*x + c*exp(d*x · Fourier:傅立叶逼近,有 7种类型,基础型是 a0 + a1*cos(x*w + b1*sin(x*w

matlab最小二乘法的非线性参数拟合

matlab最小二乘法的非线性参数拟合 首先说一下匿名函数:在创建匿名函数时,Matlab记录了关于函数的信息,当使用句柄调用该函数的时候,Matlab不再进行搜索,而是立即执行该函数,极大提高了效率。所以首选匿名函数。具体拟合时可以使用的方法如下: 1 曲线拟合工具箱提供了很多拟合函数,使用简单 非线性拟合nlinfit函数 clear all; x1=[ ]'; x2=[ ]'; x=[x1 x2]; y=[ ]'; f=@(p,x) *p(1)*(1-1/p(2))*(1-(1-x(:,1).^(1/p(2))).^p(2)).^2.*(x(:,1).^(-1/p(2))-1).^(-p(2)).*x(:,1). ^(-1/p(2).*x(:,2); p0=[8 ]'; opt=optimset('TolFun',1e-3,'TolX',1e-3);% [p R]=nlinfit(x,y,f,p0,opt) 2 最小二乘法在曲线拟合中比较普遍。拟合的模型主要有 1.直线型 2.多项式型 3.分数函数型 4.指数函数型 5.对数线性型 6.高斯函数型

一般对于LS问题,通常利用反斜杠运算“\”、fminsearch或优化工具箱提供的极小化函数求解。在Matlab中,曲线拟合工具箱也提供了曲线拟合的图形界面操作。在命令提示符后键入:cftool,即可根据数据,选择适当的拟合模型。“\”命令 1.假设要拟合的多项式是:y=a+b*x+c*x^ 2.首先建立设计矩阵X: X=[ones(size(x)) x x^2]; 执行: para=X\y para中包含了三个参数:para(1)=a;para(2)=b;para(3)=c; 这种方法对于系数是线性的模型也适应。 2.假设要拟合:y=a+b*exp(x)+cx*exp(x^2) 设计矩阵X为 X=[ones(size(x)) exp(x) x.*exp(x.^2)]; para=X\y 3.多重回归(乘积回归) 设要拟合:y=a+b*x+c*t,其中x和t是预测变量,y是响应变量。设计矩阵为X=[ones(size(x)) x t] %注意x,t大小相等! para=X\y polyfit函数 polyfit函数不需要输入设计矩阵,在参数估计中,polyfit会根据输入的数据生成设计矩阵。 1.假设要拟合的多项式是:y=a+b*x+c*x^2 p=polyfit(x,y,2) 然后可以使用polyval在t处预测: y_hat=polyval(p,t) polyfit函数可以给出置信区间。 [p S]=polyfit(x,y,2) %S中包含了标准差

相关主题