搜档网
当前位置:搜档网 › 用微软excel进行非线性曲线拟合

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

用微软excel进行非线性曲线拟合
用微软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栏)差的平方.

5. 提请注意,以下是在我发的讲义中介绍的二级反应积分动力学方程. 变

量的意义和我的讲义以及实验手册上的是一致的:

()t k c exp A A A 11A A obs f 0f 0f ???= (3)

以与实验数据拟合的吸光率表示的积分二级反应动力学方程

A 0: 初始吸光率

A: t 时刻的吸光率

A f : 当所有H2Asc 反应完全时的吸光率

6. 我们刚刚完成使用Microsoft Excel 求解程序的准备工作. 每一个动力学

工作表中需要增加包含两类信息的单元格,H2和H3分别输入固定值A 0和epsilon . H5(A f 值)和H6(k obs )栏的内容则是可变的. 首先将估计值输入到A f 和k obs 栏中. 在最小化过程之后,求解程序分别在可变单元H5和H6中返回回归系数. 求解程序不提供系数的标准偏差.

7. 为了能自动代入动力学方程,含A 0,epsilon ,A f ,kobs 的单元格必须给定名

称(这是Excel所要求的).

? 对于A0,在H2单元格中输入B2.

? 将epsilon值输入H3单元格,你得到的epsilon值由朗伯比尔公式计算得到(实验第一天记录). 由我的结果根据最小二乘法计算得到斜率ε

1020.

? 在H5单元格输入A f的最佳估计值,即0.25(为什么?).

? 将k obs的估计值输入H6单元格中. 我的估计值是5.

为了能自动插入方程式3,A0,epsilon,A f,k obs必须给定名称. 以命名A0为例,首先点击H2单元格,然后点击插入,名称,定义:

以下窗口将会弹出:

请注意并核对A0值的正确位置,在这个例子中为(根据Excel的语法): 动力学B!$H$2,表示在动力学工作表B的H2单元格. 点击添加键,选择OK. 继续命名H3:H5单元格. 然后,我们将矢量A2:A22命名为t. 首先选择A2:A22,使其亮显,然后点击插入,命名,定义并将其在工作簿中的名称改为t (检查表示一栏以确保输入名称正确). 定义名称窗口如下

8. 求解程序通过两步优化曲线:

? 第一步,计算吸光率的“原始”值.

? 第二步为优化步骤,计算得到的原始吸光率经过优化以符合实验值. A. 初始步骤:

在C2单元格中输入=Af/((1-((A0-Af)/A0)*EXP(-k obs*t*Af/epsilon))).H2单元格中填入t0的吸光率计算值. 由公式3可得它等于A0.

为了填写C3到C22单元格,点击C2单元格. 将鼠标箭头指向该单元格右下角并按住左键不放,向下拖动鼠标到C22单元格,松开左键. 从C2到C22的单元格都会按照C2的计算方式算出(初始)吸光率:

B. 优化步骤:非线性曲线拟合步骤

9. 在单元格D2中键入=(B2-C2)^2. 回车.

10. 点击单元格D2,将鼠标拖到D22,按计算吸光率的方式操作.

11. 在单元格D23对D2到D22进行求和(点击Σ图标).

.

然后回车.

12. 点击单元格D23. 点击工具,在菜单中点击求解程序(Solver…)

弹出求解参数窗口,目标单元格是D23.

在通过改变中键入单元格H5和H6(即$H$5和$H$6).

在求解参数窗口中点击选择键,将最大时间调整到1200秒(动力学运行时间). 选择OK.

求解参数窗口重新出现,先点击最小值键然后点击求解键:

求解结果窗口弹出,请注意单元格H4和H5的值已被更新. 现在你知道k obs的值是2.60. 注意初始值曾被估计为5.

这时可以打印部分报告: 包括结果灵敏度和极限. 比如结果报告应为以下格式:

重复步骤4到12以得到动力学A 动力学C 和动力学D 的结果. 必要时请更新定义名称栏的指代信息.

II. 迪拜 休克尔方程

在“动力学中”讲义中(参见其中变量意义),迪拜 休克尔方程式被定义为:

2

1210211210real I 1I *3*1.02logk I 1I Z *Z *1.02logk logk ++=++= (6) 其中k real 由方程(4)得到:

al

obs real K ][H k k += (4) 用工作表5(重命名为迪拜 休克尔)来计算,并以logk real (y 轴)对I 0.5/(I 0.5+1) (x 轴)作图. 完成后的迪拜 休克尔工作表如下:

1. 建一个5行7列的表, 标题的顺序和内容如X图所示. 切记在Excel

中x轴的值应在y轴的值的左边(例如,A列为x轴的值而B列为y轴的值).

的值将从指定的工作表中的相应位置读取. 例如:点击单元格C2并键2. k

obs

入:动力学A!$H$6. C2单元格将填入2.07作为k obs值. C3单元格中填入动力学B!$H$6,C4单元格中填入动力学C!$H$6而C5单元格中填入动

力学D!$H$6.

数(K al=6.76*10-5)填入B8单元格

4. 在单元格D2到D5中填入计算得到的k real(见方程式4). 例如在单元格

D2中填入: (C2/$B$8)*0.5*$B$7(0.5的出现是因为紫外比色皿中HNO3的浓度已被稀释到原始溶液浓度的一半). 由于单元格B7和B8是引用确定的地址,例如$B$7,所以单元格D2到D5的结果可以自动生成. 点击D2单元格,将鼠标箭头指向该单元格右下角并按住左键不放,向下拖动鼠标到D5单元格,这些单元格的结果将自动生成.

5. 用LOG10(D2)在D2中计算logk real,用先前描述的方法将鼠标箭头拖动到

D5单元格进行计算:

6. 余下的计算是关于I0.5/(I0.5+1),即在A列中计算x轴变量的值.

? 首先填入NaNO3的原始溶液摩尔浓度. 我在实验中使用E2到E5单元格的数据.

? 其次,在F2到F5单元格中计算NaNO3 +HNO3的真实摩尔浓度. 例如在F2单元格中计算(E2+$B$7)*0.5. 乘以0.5是因为当以3ml+3ml混合时(参见实验和讲义)紫外比色皿中的溶液为初始溶液浓度的一半. 记住对于单价阴离子和阳离子,摩尔浓度在数值上等于离子强度.

? 第三步,在G2到G5单元格中计算F2到F5的平方根. 例如在G2中键入SQRT(F2),按回车键.

? 第四步在A2到A5单元格中计算I0.5/(I0.5+1). 例如在A2中键入

G2/(G2+1). 点击A2,将鼠标箭头指向该单元格右下角并按住左键不放,向下拖动鼠标到A5单元格.

7. 最后一步为迪拜休克尔图的制作.

? 选择A2到B5,使其显亮. 点击插入,然后在菜单中点击图表:

? 在图表格式窗口第一步,选择图表形式:XY(分散型);然后选择图表亚形式,使其显亮.

? 点击进入第二步和第三步,分别填写图名X轴和Y轴的轴名.

? 点击下一步然后点击完成.

? 经过一些编辑后图表显示如下:

? 点击图表,在下拉菜单中点击趋势线,在图中添加最小二乘法拟合的直线.

选择曲线趋势/衰减模式,线性.

? 点击选择键,检查显示图表中的方程和显示图表中的R平方值:

? 最小二乘法直线符合方程:y 2.7835x+1.8686,R20.9809(满足要求,然而我确信5.310的学生会得到更好的R2值).

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

- 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 在非线性曲线拟合中的应用小结 摘要:归纳总结了非线性曲线拟合的方法、求解步骤和上机操作过程 关键词:曲线拟合非线性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];

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)

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

非线性回归分析 回归分析中,当研究的因果关系只涉及因变量和一个自变量时,叫做一元回归分析;当研究的因果关系涉及因变量和两个或两个以上自变量时,叫做多元回归分析。此外,回归分析中,又依据描述自变量与因变量之间因果关系的函数表达式是线性的还是非线性的,分为线性回归分析和非线性回归分析。通常线性回归分析法是最基本的分析方法,遇到非线性回归问题可以借助数学手段化为线性回归问题处理 两个现象变量之间的相关关系并非线性关系,而呈现某种非线性的曲线关系,如:双曲线、二次曲线、三次曲线、幂函数曲线、指数函数曲线(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 关于t 的回归方程2?ct bt a s ++=. 解: 1. 对将要拟合的非线性模型y=a /e b x ,建立M 文件如下: function yhat=volum(beta,x) yhat=beta(1)*exp(beta(2)./x); 2.输入数据: x=2:16; y=[ 10 ]; beta0=[8 2]'; 3.求回归系数: [beta,r ,J]=nlinfit(x',y','volum',beta0); beta 即得回归模型为: 1.0641 11.6036e x y - = 4.预测及作图: [YY,delta]=nlpredci('volum',x',beta,r ,J); plot(x,y,'k+',x,YY,'r')

非线性函数拟合

用非线性回归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

origin 非线性拟合

第9章非线性拟合 对于许多实验数据和统计数据来说,为了描述不同变量之间的关系,进一步分析曲线特征,根据已知数据找出相应的函数关系,经常需要对曲线进行拟合。 Origin可以对整条曲线拟合,也可以使用Tools工具条中的Data Selector命令按钮选择一部分曲线进行拟合。如果Graph窗口的层中包含几条曲线的,只对选中的曲线拟合。 激活Graph窗口,Analysis菜单下面提供了许多拟合方法,包括前面介绍过的线性拟合工具,这些拟合方法在运行速度和计算复杂程度上各不相同,拟合后,Origin将拟合结果及剩余误差输出到Results Log窗口中。 本章的内容包括: ●Origin 7.0常用非线性拟合; ●高级非线性拟合; ●使用自定义函数拟合; ●峰拟合模板(PFM); 9.1 Origin 7.0常用的非线性拟合 9.1.1 基本拟合函数 图9.1 Analysis菜单中非线性拟合命令

图9.2 Origin 7.0提供的基本拟合函数 (a)一阶指数衰减函数曲线;(b)指数增长函数曲线;(c)Gaussian 函数曲线;(d)Lorentzian函数曲线;(e)Boltzmann函数曲线;(f)对数函数曲线 9.1.2 拟合举例 图9.3 拟合前减去基线

图9.4 多峰拟合过程9.1.3 S拟合工具

图9.5 Sigmoidal Fit工具箱的Operation和Settings选项卡图9.6 Fit Comparison工具9.1.4 拟合比较工具 图9.7 拟合比较结果 9.2 高级非线性拟合 9.2.1 NLFS基本模式

相关主题