如何用已有的公式进行origin非线性拟合教程

温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
阅读(5980)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_083067',
blogTitle:'在Origin中使用自定义函数进行非线性拟合',
blogAbstract:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}非线性拟合
非线性拟合
范文一:非线性拟合:第五章 非线性拟合拟合曲线的目的为要根据已知数据照出响应函数的系数。 5-1 使用菜单命令拟合首先激活绘图窗口,选择菜单命令Analysis,则可以看到5-2 使用拟合工具拟合为了给用户提供更大的拟合控制空间,Origin提供了三种拟合工具,即线性拟合工具、多项式拟合工具、S拟和工具。具体自己去体会。 5-3 非线性最小平方拟合NLSF这是Origin提供的功能最强大、使用也最复杂的拟合工具。方法是Analysis-》Non-Linear Curve Fit-》Advanced Fitting Tools或者Fitting Wizad具体的请自己体会。高级模式 利用Function-》new可以自定义拟合函数利用new可以自定义拟合函数 基本模式,Wizad模式高级模式中利用Action-》Dataset设置,在基本模式中用Select Dataset设置。原文地址:非线性拟合:第五章 非线性拟合拟合曲线的目的为要根据已知数据照出响应函数的系数。 5-1 使用菜单命令拟合首先激活绘图窗口,选择菜单命令Analysis,则可以看到5-2 使用拟合工具拟合为了给用户提供更大的拟合控制空间,Origin提供了三种拟合工具,即线性拟合工具、多项式拟合工具、S拟和工具。具体自己去体会。 5-3 非线性最小平方拟合NLSF这是Origin提供的功能最强大、使用也最复杂的拟合工具。方法是Analysis-》Non-Linear Curve Fit-》Advanced Fitting Tools或者Fitting Wizad具体的请自己体会。高级模式 利用Function-》new可以自定义拟合函数利用new可以自定义拟合函数 基本模式,Wizad模式高级模式中利用Action-》Dataset设置,在基本模式中用Select Dataset设置。
范文二:非线性拟合最小二乘法:《高等数学》里面讲过最小二乘(的原理。我在网上搜了一个讲解最小二乘原理的课件,链接如下,大家可以参考:最小均方差(标准误差):1. 以origin软件拟合表面张力实验测量数据 测试并汇总实验数据3-2将浓度作为自变量,即x轴,表面张力作为因变量,即y轴。数据导入origin软件,如下图所示。作图如下:确定需要拟合的经验公式,即???0??0bln?1?确定的值,c是浓度。选择“Analysis”下面的“Non-linear curve fit”??c??,其中a和b是系数,是需要通过拟合a?选择“Function”下拉菜单中的“New”定义函数,x表示浓度,y表示表面张力,两个需要拟合的参数a和b分别对应的是P1和P2。注意物理量的单位,浓度是mol/dm3,需要转化为mol/m3,如下:点击“Save”保存。打开“Action”,选择“dataset”,点击标亮y列和对应的B列。然后点击“Assign”。点击“Action”下面的“simulate”,对P1和P2赋初值,假定为1,然后点击“create curve”。点击“Action”下面的“Fit”,进入拟合界面点击左下角的“Chi-Sqr”点击“10 Iter”,此时,电脑会自动拟合,并把拟合后的曲线显示在图形上继续点击“10 Iter”,“Chi-Sqr”会逐渐减小,直至“Chi-Sqr”没有变化。点击右下角的“Done”,得到如下结果所以,最终确定的拟合方程式为:???0?0.2236?0ln?1?2. 多项式拟合点击“Tools”下面的“Polynomial fit”??c??。47.9567?若“Order”选择1,拟合结果如下:若“order”选择2,拟合结果如下:若“order”选择3,拟合结果如下:若“order”选择5,拟合结果如下:所以,单纯的数学拟合没有物理意义。希望大家掌握用origin作非线性拟合的操作。3. 如何在origin中输入希腊字母(γμζξπ) 双击“X Axis Title”,出现一个对话框。输入\g(大写或者小写的英文字母),如下图:点击OK,就可以得到你想要的那个字母。
范文三:关于采用matlab进行指定非线性方程拟合的问题一。优化工具箱函数LSQNONLIN 解决非线性最小二乘法问题,包括非线性数据拟合问题LSQCURVEFIT
解决非线性数据拟合问题下面给出利用这两个函数的例子:LSQNONLIN:利用这个函数最小化连续函数只能够找到句柄解。下面的例子说明利用LSQNONLIN函数用下面的函数进行拟合:f = A + B exp(C*x)+D*exp(E*x)对数据集x与y进行拟合,其中y是在给定x的情况下的期望输出(可以是方程给出数组,也可以是单独数据组成的数组)。为了解决这个问题,先建立下面的名为 fit_simp.m的函数,它利用数据x与y,将他们作为优化输入参数传递给LSQNONLIN。利用给定的数据x计算f的值,再与原始数据y进行比较。经验值与实际计算出的值之间的差异作为输出值返回。LSQNOLIN函数就是最小化这些差的平方和。function
diff = fit_simp(x,X,Y)% 此函数被LSQNONLIN调用% x 是包含等式系数的向量% X 与 Y 是作为操作数传递给lsnonlinA = x(1);B = x(2);C = x(3);D = x(4);E = x(5);diff = A + B.*exp(C.*X)+D.*exp(E.*X)-Y;下面的脚本是利用上面定义的fit_simp.m函数的一个例子:% 定义你打算拟合的数据集合>> X=0:.01:.5;>> Y=2.0.*exp(5.0.*X)+3.0.*exp(2.5.*X)+1.5.*rand(size(X));% 初始化方程系数>> X0=[1 1 1 1 1]';% 设置用中等模式(memdium-scale)算法>> options=optimset('Largescale','off');% 通过调用LSQNONLIN重现计算新的系数>> x=lsqnonlin(@fit_simp,X0,[],[],options,X,Y);% 调用LSQNONLIN结果输出表明拟合是成功的Optimization terminated successfully:Gradient in the search direction less than tolFunGradient less than 10*(tolFun+tolX)% 绘制原始数据与新的计算的数据>> Y_new=x(1)+x(2).*exp(x(3).*X)+x(4).*exp(x(5).*X);>> plot(X,Y,'+r',X,Y_new,'b');※注意:LSQNONLIN 只可以处理实数变量。在处理包括复数变量的实例的拟合的时候,数据集应该被切分成实数与虚数部分。下面给出一个例子演示如何对复数参数进行最小二乘拟合。为了拟合复数变量,你需要将复数分解为实数部分与虚数部分,然后把他们传递到函数中去,这个函数被LEASTSQ作为单个输入调用。首先,将复数分解为实部与虚部两个向量。其次,将这两个向量理解成诸如第一部分是实部、第二部分是虚部。在MATLAB函数中,重新装配复数数据,并用你想拟合的复数方程计算。将输出向量分解实部与虚部,将这两部分连接为一个单一的输出向量传递回LEASTSQ。下面,给出一个例子演示如何根据两个复数指数拟合实数X与Y。建立方程:function zero = fit2(x,X,Y)% 根据输入x重建复数输入cmpx = x(1:4)+i.*x(5:8);% 利用复数计算函数zerocomp = cmpx(1).*exp(cmpx(2).*X) +cmpx(3).* exp(cmpx(4).*X)-Y;% 将结果转换成一个列向量% 其中第一部分是实部,第二部分是虚部numx = length(X); % 实部长度zero=real(zerocomp); %实部zero(numx+1:2*numx)=imag(zerocomp); % 虚部为了评价计算这个函数,需要X与Y数据集。LSQNONLIN将根据它拟合出下面方程中的参数a,b,c与d:Y = a*exp(b*X)+c*exp(d*X);其中,a,b,c与d是复数变量。>> X=0:.1:5;>> Y=sin(X);>> Y=Y+.1*rand(size(Y))-.05;>> cmpx0=[1 i 2 2*i];>> x0(1:4)=real(cmpx0);>> x0(5:8)=imag(cmpx0);>> x=leastsq(@fit2,x0,[],[],X,Y);>> cmpx=x(1:4)+i.*x(5:8);>> Y1=real(cmpx(1).*exp(cmpx(2).*X)+cmpx(3).*exp(cmpx(4).*X));>> plot(X,Y1,'r');>> hold on>> plot(X,Y,'+');二。LSQCURVEFIT:利用此函数可以在最小二乘意义上解决非线性曲线拟合(数据拟合)问题。也就是说,给定输入数据xdata,以及观测的输出数据ydata,找到系数x,使得函数F(x,xdata)能够最好的拟合向量值。LSQCURVEFIT利用与LSQNONLIN相同的算法。它的目的在于专门为数据拟合问题提供一个接口。在拟合的时候,2维、3维或者N维参数拟合是没有什么差别的。下面给出一个3维参数拟合的例子。待拟合函数是:z = a1*y.*x..^2+a2*sin(x)+a3*y.^3;建立的myfun.m的函数如下:function F = myfun(a, data);x = data(1,:);y = data(2,:);F= a(1)*y.*x.^2+a(2)*sin(x)+a(3)*y.^3;下面的脚本展示了这么利用上面的函数:>> xdata= [3.6 7.7 9.3 4.1 8.6 2.8 1.3 7.9 10.0 5.4];>> ydata= [16.5 150.6 263.1 24.7 208.5 9.9 2.7 163.9 325.0 54.3];>> zdata= [95.09 23.11 60.63 48.59 89.12 76.97 45.68 1.84 82.17 44.47];>> data=[ ydata];>> a0= [10, 10, 10]; % 初识揣测>> [a, resnorm] = lsqcurvefit(@myfun,a0,data,zdata)Maximum number of function increase options.MaxFunEvalsa = 0.0088
-0.0000resnorm = 2.>> format long>> aa =
0.93 -34.83
-0.99>> option=optimset('MaxFunEvals',800);>> [a, resnorm] = lsqcurvefit(@myfun,a0, data, zdata, [], [], option)Optimization terminated successfully:Relative function value changing by less than OPTIONS.TolFuna =
0.53 -20.38
-0.64resnorm = 2.428e+004统计工具箱函数函数名
描述nlinfit(非线性回归)
采用Gauss-Newton法进行非线性最小二乘数据拟合lscov(线性回归)
根据已知协方差矩阵进行最小二乘估计regress
多元线性回归regstats
回归诊断ridge
脊回归(?Ridge regress)rstool
多维响应表面可视化(RSV)stepwise
交互式逐步回归@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@matlab中nlinfit和lsqcurvefit的功能和用法有什么区别?悬赏分:5 - 解决时间: 10:36如题!提问者: 珊珊小魔女- 助理 三级 最佳答案如果你懂英语,就用matlab最强大的函数help(一般人我不告诉他)help nlinfithelp lsqcurvefit如果不懂英语,继续看进行非线性回归时可使用nlinfit指令,其语法如下:beta = nlinfit(X,y,fun,beta0)[beta,r,J] = nlinfit(X,y,fun,beta0)[...] = nlinfit(X, y, fun, beta0, options)[x,resnorm]= lsqcurvefit(fun,x0,xdata,ydata);参数解释:input:fun——编程者需要拟合的函数x0——函数系数的初始猜测值xdata——x坐标的值ydata——y左边的值output:x——经拟合的系数resnorm——the value of the squared 2-norm of the residual at x: sum((fun(x,xdata)-ydata).^2).example:function fitfuncxdata=[3.5 7.7 9.3 4.5 8.6 2.8 1.3 7.9 10.1 5.4];
%定义自变量ydata=[16.5 149.6 263.1 24.6 208.5 9.9 2.7 162.9 322.0 52.3];
%定义因变量x0=[7,7,7];
%初始估计值[x,renorm]=lsqcurvefit(@myfun,x0,xdata,ydata);
%确定待定系数disp(x);disp(renorm);function F=myfun(x,xdata)F=x(1)*(xdata.^2)+x(2)*sin(xdata)+x(3)*(xdata.^3);
%预定义函数关系式
范文四:Matlab 线性拟合 & 非线性拟合分类: Computer Vision MATLAB
21:24 46022人阅读 评论(5) 收藏 举报
matlabplotrandomc图像处理目录(?)[+]使用Matlab进行拟合是图像处理中线条变换的一个重点内容,本文将详解Matlab中的直线拟合和曲线拟合用法。关键函数:fittypeFit type for curve and surface fittingSyntaxffun = fittype(libname)ffun = fittype(expr)ffun = fittype({expr1,...,exprn})ffun = fittype(expr, Name, Value,...)ffun= fittype({expr1,...,exprn}, Name, Value,...)/***********************************线性拟合***********************************/线性拟合公式:coeff1 * term1 + coeff2 * term2 + coeff3 * term3 + ...其中,coefficient是系数,term都是x的一次项。线性拟合Example:Example1: y=kx+b;法1:[csharp] view plaincopyprint?1. x=[1,1.5,2,2.5,3];y=[0.9,1.7,2.2,2.6,3];2. p=polyfit(x,y,1);3. x1=linspace(min(x),max(x));4. y1=polyval(p,x1);5. plot(x,y,'*',x1,y1);结果:p =
0.0400即y=1.0200 *x+ 0.0400法2:[csharp] view plaincopyprint?1. x=[1;1.5;2;2.5;3];y=[0.9;1.7;2.2;2.6;3];2. p=fittype('poly1')3. f=fit(x,y,p)4. plot(f,x,y);运行结果:[csharp] view plaincopyprint?1.
x=[1;1.5;2;2.5;3];y=[0.9;1.7;2.2;2.6;3];2. p=fittype('poly1')3. f=fit(x,y,p)4. plot(f,x,y);5.6. p =7.8.
Linear model Poly1:9.
p(p1,p2,x) = p1*x + p210.11. f =12.13.
Linear model Poly1:14.
f(x) = p1*x + p215.
Coefficients (with 95% confidence bounds):
(-0.1)Example2:y=a*x + b*sin(x) + c法1:[csharp] view plaincopyprint?1. x=[1;1.5;2;2.5;3];y=[0.9;1.7;2.2;2.6;3];2. EXPR = {'x','sin(x)','1'};3. p=fittype(EXPR)4. f=fit(x,y,p)5. plot(f,x,y);
运行结果:[csharp] view plaincopyprint? 1.
x=[1;1.5;2;2.5;3];y=[0.9;1.7;2.2;2.6;3];2. EXPR = {'x','sin(x)','1'};3. p=fittype(EXPR)4. f=fit(x,y,p)5. plot(f,x,y);6.7. p =8.9.
Linear model:10.
p(a,b,c,x) = a*x + b*sin(x) + c11.12. f =13.14.
Linear model:15.
f(x) = a*x + b*sin(x) + c16.
Coefficients (with 95% confidence bounds):17.
(-1.773, 0.05094)法2:[csharp] view plaincopyprint?1. x=[1;1.5;2;2.5;3];y=[0.9;1.7;2.2;2.6;3];2.
p=fittype('a*x+b*sin(x)+c','independent','x')3. f=fit(x,y,p)4. plot(f,x,y);运行结果:[csharp] view plaincopyprint?1. x=[1;1.5;2;2.5;3];y=[0.9;1.7;2.2;2.6;3];2.
p=fittype('a*x+b*sin(x)+c','independent','x')3. f=fit(x,y,p)4. plot(f,x,y);5.6. p =7.8.
General model:9.
p(a,b,c,x) = a*x+b*sin(x)+c10. Warning: Start point not provided, choosing random start11. point.12. > In fit>iCreateWarningFunction/nThrowWarning at 73813.
In fit>iFit at 32014.
In fit at 10915.16. f =17.18.
General model:19.
f(x) = a*x+b*sin(x)+c20.
Coefficients (with 95% confidence bounds):21.
(-1.773, 0.05094)/***********************************非线性拟合***********************************/ Example:y=a*x^2+b*x+c法1:[cpp] view plaincopyprint?1. x=[1;1.5;2;2.5;3];y=[0.9;1.7;2.2;2.6;3];2.
p=fittype('a*x.^2+b*x+c','independent','x')3. f=fit(x,y,p)4. plot(f,x,y);运行结果:[csharp] view plaincopyprint?1. p =2.3.
General model:4.
p(a,b,c,x) = a*x.^2+b*x+c5. Warning: Start point not provided, choosing random start6. point.7. > In fit>iCreateWarningFunction/nThrowWarning at 7388.
In fit>iFit at 3209.In fit at 10910.11. f =12.13.
General model:14.
f(x) = a*x.^2+b*x+c15.
Coefficients (with 95% confidence bounds):16.
(-0.86)17.
(0.791, 3.306)18.
(-2.016, 0.2964)法2:[csharp] view plaincopyprint?1. x=[1;1.5;2;2.5;3];y=[0.9;1.7;2.2;2.6;3];2. %use c=0;3. c=0;4. p1=fittype(@(a,b,x) a*x.^2+b*x+c)5. f1=fit(x,y,p1)6. %use c=1;7. c=1;8. p2=fittype(@(a,b,x) a*x.^2+b*x+c)9. f2=fit(x,y,p2)10. %predict c11. p3=fittype(@(a,b,c,x) a*x.^2+b*x+c)12. f3=fit(x,y,p3)13.14. %show results15. scatter(x,y);%scatter point16. c1=plot(f1,'b:*');%blue17. hold on18. plot(f2,'g:+');%green19. hold on20. plot(f3,'m:*');%purple21. hold off? ? 特征提取方法 SIFT,PCA-SIFT,GLOH,SURF 浙大计算机研究生复试上机考试-2009年
范文五:检验非线性回归的Newton-Rapson优化算法1. 问题的提出假设被解释变量Y与单自变量X之间具有某种统计关系或统计模型(
,(1)其中X是自变量,p是统计关系的参数(假设有M个), 是统计残差。在统计实验中,我们获得N个采样点我们必须且只能通过这N对数据点去确定上述统计关系。因为多数情况下我们不知道上述统计关系的确切形式,所以我们是先猜测一种统计关系,然后使用
检验或最大似然检验的方法判断这种统计关系的合理性。检验定义统计量(
(),(2)因而我们就可以计算某种模型 (
)的拒绝域或置信度。但实际上,我们是将回归分析问题转化为最优化问题来处理的,即求解一组参数p使得
统计量取得极小值。在Y服从高斯分布的条件下,
统计量服从
)分布,因此在采样时数据点数目必须大于统计模型参数数目,即
。2. Newton-Rapson方法2.1 Newton-Rapson使用Newton-Rapson方法,求解参数p使得
统计量取得极小值,目标函数是(
),(3)1(共4页)我们最终要求解的量是参数[] ,(4)2.2迭代过程(1)给定初始参数p计算目标函数值(一个离散序列)写为一维序列(
),(5)。 阅读详情: [ ](
(2)计算雅克比矩阵(
)( )(7) |
矩阵形式阅读详情: [](
)(8)(3)估计参数p的变化(4)收敛判断 如果则结束迭代;如果2(共4页)(
,(10)则继续一下过程。(5)计算新的参数值(6)返回第(1)步。|
,(11)。(12)2.3 参数误差估计假设通过迭代过程我们找到了一组最优参数解,用大写字母P表示[] ,(13)参数P的协方差矩阵(covariance matrix)(
,(14)反映了参数的拟合误差,其主轴元素的根值(
) √(15)给出了某一参数的统计标准差,如果假设参数
服从高斯分布,则(15)给出的就是高斯分布的标准差(置信度68%)。再如果实验观察值(X,Y)和参数P是通过物理过程必然联系起来的,那么(15)给出的误差估计在重建(X,Y)时是可以接受的,反之虽然有其统计合理性,但就物理意义上就有待商榷。3. 统计模型3.1星系团密度径向分布的单 模型星系团气体密度径向分布的单 模型[
()],(16)其参数为(
),迭代过程中的雅克比矩阵具有解析形式,这因为容易求得单β函数对参数的偏导数。3(共4页){[
(]4(共4页)
范文六:用非线性回归nlinfit,如果数据点多些,效果会更好。function nonlinefitt=[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:40yy=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);%或者用以下代码,更为简捷。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 modeltt=0:1:40 ;yy=a+k1*exp(m*tt)+k2*exp(-m*tt);plot(t,y,'o',tt,yy,'r')结果:a = 105.3413
k1 = 0.0137
k2 = -85.2650
m = 0.1840用非线性回归nlinfit,如果数据点多些,效果会更好。function nonlinefitt=[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:40yy=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);%或者用以下代码,更为简捷。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 modeltt=0:1:40 ;yy=a+k1*exp(m*tt)+k2*exp(-m*tt);plot(t,y,'o',tt,yy,'r')结果:a = 105.3413
k1 = 0.0137
k2 = -85.2650
m = 0.1840
范文七:第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基本模式图9.8 NLFS基本模式 (a)预览拟合函数表达式 (b)预览拟合函数曲线 (c)Select Dataset对话框 (d)FittingSession对话框9.2.2 NLFS高级模式图9.9 Select Function对话框及其函数的不同显示方式图9.10 Control Parameters对话框
图9.11 Parameter Constraints对话框图9.12 After Fitting对话框
图9.13 Replicas对话框9.2.3 拟合向导图9.14 NLFS拟合向导图9.15 Button Settings对话框9.2.4 NSLF拟合过程中遇到的问题9.3 自定义函数拟合9.3.1 自定义拟合函数图9.16 Define New Function/Edit Function对话框
图9.17 Parameter Initializations对话框9.3.2 初始化参数 9.3.3 指定函数变量图9.18 Select Dataset对话框
图9.19 Simulate Curves对话框9.3.4 曲线模拟图9.20 几组参数下模拟曲线9.3.5 拟合数据图9.21 Fitting Session对话框
图9.22 Generate Results对话框9.3.6 拟合结果图9.23 NLSF拟合曲线数据图9.24 NLSF拟合曲线图9.25 Parameters工作表图9.26 Results Log窗口图9.27 Var-Cov窗口图9.28 保存函数提示对话框9.4 峰拟合模板(PFM)9.4.1 安装卸载PFM图9.29 安装PFM.OPK文件
图9.30 卸载PFM.OPK9.4.2 Peak Fitting--Choose Data页面图9.31 Peak Fitting向导图9.32 设置曲线显示范围9.4.3 Peak Fitting-- Precondition Data页面图9.33 Precondition Data页面的平滑预处理选项9.4.4 Peak Fitting--Baseline Points页面图9.34 Baseline Points页面选项9.4.5 Peak Fitting--Create Baseline页面9.4.6 Peak Fitting--Baseline Conditioning页面图9.35 Create Baseline页面选项
图9.36 Baseline Conditioning页面选项9.4.7 Peak Fitting--Peak Finding页面图9.37 根据默认设置确定峰位图6.38 修改自定义函数图9.39 确定隐藏的峰9.4.8 Peak Fitting--Define Peaks页面图9.40 Define Peaks页面及手动确定X=19附近的峰位9.4.9 Peak Fitting--Peak Edit Control页面图9.41 Peak Edit Control页面图9.42 调节峰高(a)、峰位(b)、峰宽(c)及最后显示效果(d)图9.43 Peak Parameters Display对话框9.4.10 Peak Fitting--Fit页面图9.44 Fit页面及拟合结果图9.45 显示剩余曲线
图9.46 显示单个峰拟合曲线9.4.11 Peak Fitting--Results页面图9.47 Results页面图9.48 Plot和Worksheet的Peak Characterization Report Field Details对话框图9.49 Peak Fitting Graph结果图9.50 在Worksheet窗口输出拟合峰的特征参数图9.51 拟合曲线参数输出设置及输出结果图9.52 Peak Characteristics对话框及其计算结果9.4.12 个性化Peak Fitting向导图9.53 个性化Peak Fitting向导
图9.54 Button Settings对话框
范文八:设有实验数据 ( xi , y i ), (i = 1,2,? , n) ,寻找函数f ( x,θ )使得函数在点 xi , (i = 1,2,?, n) 处的函数值与观测数据偏差 ^) 使得 f ( x,θ 的平方和达到最小.即求满足如下条件的函数^) - y ) 2 min∑ ( f ( xi , θ ) - y i ) = ∑ ( f ( xi , θ i2 i =1 i =1 n n其中θ 是待定的参数,而 θ^ 就是最小二乘法所确定的 最佳参数. 解决此类问题有以下几个步骤:(1)首先作出散点 图,确定函数的类别;(2)根据已知数据确定待定 参数的初始值,利用Matlab软件计算最佳参数;(3) 根据可决系数,比较拟合效果,计算可决系数的公式 为阅读详情:R2 = 1 -1 n y = ∑ yi n i =12 ^ ( y y ) - ∑ i i i =1 nn∑(yi =1i- y) 2其中R2越趋近于1表明拟合效果越好.在Matlab中实现可决系数的计算的例子:x=[2:16]; y=[6.42,8.2,9.58,9.5,9.7,10,9.93,9.99,10.49,10.59,10.6,10.8,10.6,10.9,10.76];y1=x./(0.5*x); % 拟合曲线R2=1-sum((y-y1).^2)/sum((y-mean(y)).^2) 如果是多项式函数,则称为多项式回归,此时 的参数即多项式的系数;如果为指数函数、对数函 数、幂函数或三角函数等,则称为非线性拟合.下面 的图形给出了常见曲线与方程的对应关系:阅读详情:幂函数y = ax b指数函数 y = ae bx双曲线函数y=x ax + b对数函数y = a + b ln x阅读详情:指数函数y = aeb xS形曲线y=1 a + be - x具有S形曲线的常见方程有: 罗杰斯蒂(logistic)模型:y=α 1 + β e -γ x龚帕兹(Gomperty)模型: 理查德(Richards)模型: 威布尔(Weibull)模型:y = α exp(- βe - kx )y = α /[1 + exp( β - γ x)]1 / δy = α - β exp(-γ t δ )阅读详情:为了实现非线性拟合,首先要定义在线函数 1. inline 定义的函数:用于曲线拟合、数值计算 步骤:(1)建立M文件; (2)fun=inline('f(x) ', '参变量','x')- cx ( 1 be ) a,b,c为待定的参数 y a = - 例1. 建立函数:fun=inline('b(1)*(1-b(2)*exp(-b(3)*x))','b','x'); 此处,将b看成参变量,b(1),b(2),b(3)为其分量. 若计算函数在x=0:0.1:1上的函数值,由于此时x为矩阵, 只需将函数表达式中的某些量表示成向量有些*改成.* 即可.阅读详情:在实际问题中,有时散点图作出后未必是多项式的 图形,可能像其他的曲线,这时可以猜测曲线类型, 然后利用如下命令: [beta,r,J] = nlinfit(x,y,fun,beta0) 其中,x,y为原始数据,fun是在M文件中定义的函数, beta0是函数中参数的初始值;beta为参数的最优值,r 是各点处的拟合残差,J为雅克比矩阵的数值. 例2. 已知如下数据,求拟合曲线k=[ 0,47,93,140,186,279,372,465,558,651]; y=[18.98,27.35,34.86,38.52,38.44,37.73,38.43,43.87,42.77,46.22];plot(k,y,'*')阅读详情:根据右图,我们猜测曲线为:y = b1 (1 - b 2e - b 3 k )现在利用最小二乘法确定最 佳参数:b1,b2,b3b0=[43,0.6,0.1]; %初始参数值 fun=inline('b(1)*(1-b(2)*exp(-b(3)*k))','b','k'); [b,r,j]=nlinfit(k,y,fun,b0); b %最佳参数 R=sum(r.^2) %误差平方和 b = 42.3,0.0099 即拟合曲线为: y = 42..5483e -0.0099k )(图6.3)阅读详情:拟合结果如右图 所示,红色为拟 合曲线图形,*为 原始散点图. 作图程序为:50 45 40 35 30 25 20 15 0 100 200 300 400 500 600 700(图6.4) y1=42..5483*exp(-0.0099*k)); plot(k,y,'*',k,y1,'-or') 练习:计算可决系数阅读详情:例3.炼钢厂出钢时所用盛钢水的钢包,由于钢水对耐 火材料的侵蚀,容积不断增大,我们希望找出使用次 数与增大容积之间的函数关系.实验数据如下: 表4.2 钢包使用次数与增大容积使用 次数 增大 容积 使用 次数 增大 容积 2 6.42 10 3 8.2 11 4 5 6 9.7 14 7 10 15 8 9.93 16 9 9.99 9.58 9.5 12 1310.49 10.59 10.6 10.8 10.6 10.9 10.76x y = 分别选择函数 ax + by = a(1 + be )cxy = aeb x拟合钢包容积与使用次数的关系 ,在同一坐标系内 作出函数图形.阅读详情:下面给出分式函数拟合程序: x1=[2:16]; y1=[6.42,8.2,9.58,9.5,9.7,10,9.93,9.99,10.49,10.59,10.6,10.8 ,10.6,10.9,10.76]; b01=[0.]; %初始参数值 fun1=inline('x./(b(1)+b(2)*x)','b','x'); % 定义函数 [b1,r1,j1]=nlinfit(x1,y1,fun1,b01); y=x1./(0.5*x1); %根据b1写出具体函数 plot(x1,y1,'*',x1,y,'-or'); 可决系数计算: 初始参数b0的计算, 由于确定两个参数值,因此我 们选择已知数据中的两点(2,6.42)和(16,10.76)代 入方程,得到方程组:阅读详情:2 ? 6 . 42 = ? 2a + b ? 16 ?10.76 = 16a + b ?? 6.42(2a + b) = 2 ? a = 0.084 =>? =>? ?10.76 (16a + b) = 16 ?b = 0.1435上述方程组有两种解法:手工,Matlab,下面介 绍Matlab 解方程组的方法 [x,y]=solve('6.42*(2*a+b)=2','10.76*(16*a+b)=16')y = a (1 + be ) cxln b + cx = ln( y / a - 1)取点:(2,6.42),(8,9.93),(10,10.49)代入上述方程[a,b,c]=solve('log(b)+c*2=log(6.42/a-1)','log(b)+c*10=log(10.49/a-1)','log(b)+c*8=log(9.93/a-1)')注意:如果出现复数解,则只取实部
范文九:计算机在化学中的应用页码,1/91. 在Origin中使用自定义函数进行非线性拟合Knmc ns=根据文献, 拟合函数 1+Kc,其中自变量是c,因变量为n,希望拟合s常数K和nm拟合过程:1.
Analysis选“Non-line curve fit”-“Advanced Fitting Tools”2.
在窗口中Function 选择New 自定义函数3.
选择参数数目为2
定义函数为P1*P2*x/(1+P2*x) 如图计算机在化学中的应用4. Action中选DataSet 指定x和y值
双击data_b即可页码,2/95. Action 选Simulate 给P1和P2的初试值,按creat Curve按钮看画出的曲线的趋势是否相近,如选P1=10,P2=0.5可以得到趋势合适的曲线6. Action 选fit 按100次的按钮,得到结果7. 按Done结束 得到拟合曲线,拟合结果在下面result窗口8. 按一般要求,删除Legand窗口、参数结果标记,可双击试验曲线,在plotdetails窗口删除user2的试验曲线(按del键),再修饰图即可计算机在化学中的应用页码,9/9
范文十:2008年第6期文章编号:08)06-0015-05计算机与现代化JISUANJIYUXIANDAIHUA总第154期基于MATLAB的非线性曲线拟合唐家德(楚雄师范学院数学系,云南楚雄675000)摘要:介绍软件MATLAB非线性曲线拟合的功能,通过上机实验和误差分析,寻找较好的非线性函数来拟合实验数据,从而探索并归纳总结出非线性曲线拟合的方法、求解步骤和上机操作过程。关键词:曲线拟合;非线性;MATLAB中图分类号:TP311.52    文献标识码:ANonlinearCurveFittingBasedonMATLABTANGJia-de(DepartmentofMathematics,ChuxiongNormalUniversity,Chuxiong675000,China)Abstract:ThispaperintroducesthefunctionofnonlinearcurvefittingofMATLABsoftware.Bydoingexperimentswithcomputeranderroranalysis,itislookingforbetternonlinerarfunctiontofitexperimentaldata,inordertoexploreandgetcorrectsolutionofnonlinearcurvefitting.Keywords:MATLAB0 引 言在科学实验及应用领域中,时常需要在分析一组测试数据的基础上,去求自变量与应变量之间近似函数关系表达式,以便计算机或其它设计人员利用它来方便地进行其它设计计算。这类问题在图形上就是由测得的点求曲线拟合的问题。1 曲线拟合的基本原理所谓曲线拟合是指设法找出某条光滑的曲线,它能最佳地拟合数据。在曲线拟合时,并不要求拟合曲线一定要经过每一个数据点。其思想是使它能反映这些离散数据的变化趋势,使数据点的误差平方和最小。也就是已知一组测定的数据(例如N个点(x,iy))去求得自变量x和因变量y的一个近似解析表i达式y=φ(x)。若记误差δφ(x)-y,i=1,2,…,i=iiN的关系有比较充分的认识时,一般用机理分析的方法建立描述y=φ(x)的数学模型,再用曲线拟合的方法确定模型中的参数。但如果由于客观事物内部规律的复杂性及人们认识程度的限制,无法建立合乎机理规律的数学模型,这时,只有对观测数据(x,y)进行ii分析,绘制散点图,先猜测y=φ(x)的形式,并通过上机实验和误差分析,不断对比和计算,然后选出拟合数据较好的函数类型。2 MATLAB曲线拟合的相关方法MATLAB提供了两种方法进行曲线拟合。一种是以函数的形式,使用命令对数据进行拟合。这种方法比较繁琐,需要对拟合函数有比较好的了解。另外一种是用图形窗口进行操作,具有简便、快速,可操作性强的优点。另外,MATLAB从拟合曲线的对象上看,又可分为多项式曲线拟合和其它非线性曲线拟合,具体介绍如下:1.函数形式。(1)多项式拟合函数Polyfit。利用该函数进行多项式曲线拟合,其调用格式为:p=polyfit(x,y,n)N,则要使误差的平方和最小,即要求为Q=∑δi最i=1小,这就是常用的最小二乘法原理。2Q=∑δii=1N2(1)用最小二乘法求拟合曲线时,首先要确定φ(x)的形式。当人们对研究对象的内在特性和各因素间收稿日期:作者简介:唐家德(1970-),男,云南楚雄人,楚雄师范学院数学系副教授,硕士,研究方向:微分方程和数值计算。16计 算 机 与 现 代 化2008年第5期其中x,y为参与曲线拟合的实验数据,n为拟合多项式的次数,函数返回值为拟合多项式的系数(按降幂排列)。n=1时,就为线性拟合。由于高次多项式会产生Runge现象,因此除非已知数据来自高次多项式,否则多项式拟合的次数一般不超过六次。例1:给出下表数据,试用最小二乘法求一次和二次拟合多项式。-1.00-0.75-0.50-0.250.250.500.751.00-0.0....70614.x=-1:0.25:1;y=[-0.5,0.2,2.5,3.1,4.2836];p1=polyfit(x,y,1)p1=2.1p2=polyfit(x,y,2)p2=0.6 2.0001y1=polyval(p1,x);%多项式求值函数;y2=polyval(p2,x);plot(x,y,′+′,x,y1,′r:′,x,y2,′k-.′)图2 例2非线性曲线拟合图时间(小时0.250.50.75酒精含量30687357582811.522.533.544.16774时间(小时6酒精含量38legend(′实验数据′,′一次拟合′,′二次拟合′);故一次、二次拟合多项式分别为:**2y=2.1和y=0.6x+2.0001,拟合曲线图见图1。题目要求结合给定数据建立饮酒后血液中酒精浓度的数学模型。通过建立微分方程模型得到短时间内喝酒后血液中酒精浓度与时间的关系为:-ct-cty=ce-e)1(23(2)现在根据实验数据,利用非线性拟合函数lsqcur-vefit,确定模型(2)中的参数c1,c2,c3。求解过程为:先编写一个M-函数文件Example2 1M-file:functionf=Example2 1(c,tdata)f=c(1)*(exp(-c(2)*tdata)-exp(-c(3)*tda-ta));以文件名Example2 1保存后,在MATLAB的命令窗口中输入语句:tdata=[0.250.50..544.];ydata=[1210774];c0=[111];fori=1:50c=lsqcurvefit(′Example2 1′,c0,tdata,ydata);c0=c;%以计算出的c为初值进行迭代;endy1=c(1)*(exp(-c(2)*tdata)-exp(-c(3)*tda-ta));plot(tdata,ydata,′+′,tdata,y1);legend(′实验数据′,′拟合曲线′)成功得到最优解为:c=114.2 2.0124从而得出拟合曲线:-0.4ty=114.2587(e-e)(3)图1 例1多项式曲线拟合图(2)非线性数据拟合函数lsqcurvefit和lsqnonlin。MATLAB提供了两个求解最小二乘非线性数据拟合问题的命令lsqcurvefit和lsqnonlin。两者都要事先定义M-函数文件。①c=lsqcurvefit(′fun′,x0,xdata,ydata)其中`fun'为拟合函数的M-函数文件名,x0为初始向量,xdata,ydata为参与曲线拟合的实验数据。函数返回值c为非线性函数`fun'的拟合系数。例2:2004年全国大学生数学建模竞赛C题(酒后驾车)中给出某人在短时间内喝下两瓶啤酒后,间隔一定的时间t测量他的血液中酒精含量y(毫克/百毫升),得到数据如表1所示。表1 酒精含量与饮酒时间的实验数据拟合曲线图见图2。②c=lsqsnonlin(′fun′,c0)。求含参量非线性函数fun中的参量c,使得各数据点函数值fun的平方和最小。例如用lsqsnonlin(′fun′,c0)命令求解例2的过2008年第5期唐家德:基于MATLAB的非线性曲线拟合 17先编写M-函数文件Example2 2M-file:functionf=Example2 2(c,tdata,ydata)tdata=[0.250.50..544.];ydata=[1210774];f=c(1)*(exp(-c(2)*tdata)-exp(-c(3)*tdata))-保存后,在MATLAB命令窗口输入语句:c0=[111];fori=1:50c=lsqnonlin(′Example2 2′,c0);c0=c;endcc=114.2 2.0124,从而得出拟合曲线:-0.4ty=114.2587(e-e)(4)residuals,见图5。图5 例1基本曲线拟合及残差图2.图形窗口形式。(1)利用多项式拟合的交互图命令(GUI)poly-tool调用格式为:polytool(x,y)其中x,y分别为实验数据构成向量,例如利用polytool求解例1的MATLAB命令如下:x=-1:0.25:1;y=[-0.5,0.2,2.5,3.1,4.2836];polytool(x,y)所得拟合直线方程为:y=2.3x+2;拟合二次*2多项式为:y=0.031x+2.3x+2通过残差图,可以*看出残差ε=y-y大致服从均值为零的正态分布,误差平方和的算术根仅为0.034和0.001,说明用线性函数或二次多项式拟合的效果都较好。应用这种方法,可以求出当拟合函数y=φ(x)为线性、二次、三次直至十次多项式的表达式。(3)曲线拟合工具界面cftool。曲线拟合工具界面是一个可视化的图形界面,具有强大的图形拟合功能,包括:①可视化地展示一个或多个数据集,并可以用散点图来展示;②用残差和置信区间可视化地估计拟合结果的好坏;③通过其它界面可以实现许多功能:输出、察看和平滑数据;拟合数据、比较拟合曲线的数据集;从拟合曲线中排除特殊的数据点;选定区间后,可以显示拟合曲线和数据集;还可以做内插法、外推法、微分或积分拟合。下面通过一个具体例子来介绍曲线拟合工具界面cftool的用法。*图3 多项式(线性)拟合的  图4 多项式(二次)拟合的交互式界面         交互式界面打开多项式拟合的交互式界面,见图3,由于要拟合的函数为线性函数,因此在多项式拟合交互式界面中的Degree中输入1,点击导出数据Export,出现保存对话框ExporttoWorkspace,选中Parameters(参数),Residuals(残差)后点击OK,在MATLAB的Workspace窗口中可以看到参数为:2.1*即拟合函数为y=2.1。同样如果拟合的函数为二次函数,则只要在De-gree中输入2,其它步骤相同,见图4,可得拟合函数*2为y=0.6x+2.0001通过查看Re-siduals(残差)值,可以发现二次函数拟合的残差值比线性函数的要小一些,从拟合的效果看,可以选择二次函数作为拟合函数,但由于线性函数较简单,残差值也很小,从简单出发,也可选择线性函数作为拟合函数。(2)在图1的图形窗口上分别点击菜单档中的Tools※BasicFitting,在PlotsFits中分别选中linear、,例3:某生化系学生为研究嘌呤霉素在某项酶促反应中对反应速度与底物浓度之间关系的影响,设计了一个实验,所得的实验数据见表2。试根据问题的背景和这些数据建立一个合适的数学模型,来反映这项酶促反应的速度与底物浓度之间的关系。表2 嘌呤霉素实验中的反应速度与底物浓度数据底物浓度(ppm)反应速度0.020.060.110.220.561.10  记酶促反应的速度为y,底物浓度为x,两者之间的关系写作y=f(x,β),其中β为参数。由酶促反应的基本性质可知,当底物浓度较小时,反应速度大致与浓度成正比;而当底物浓度很大,渐进饱和时,反应速度将趋于一个固定值———最终反应速度。下面的两个简单模型具有这种性质:βxMichaelis-Menten模型:y=f(x,1β2+x-βx指数增长模型:y=(x,β)=β1(1-e2)(5)(6)我们使用曲线拟合工具界面cftool来确定模型(5)和(6)中的参数,并比较(5)、(6)的拟合效果。在MB:18计 算 机 与 现 代 化2008年第5期x=[0.020.020.060.060.110.110.220.220.560.561.101.10];y=[];cftool(x,y);%打开曲线拟合工具界面;如表4所示。表4 在数据线性化中的变量替换在“CurveFittingTool”对话框中单击“Fitting”,打开“Fitting”对话框,点击“Newfit”,在“FitName:”中输入“有理函数”,在“Typeoffit”中选中“Rational”(有理函数拟合),在“Numerator(分子)”中选中“lin-earpolynomial”(一次多项式),在“Denominator(分母)”中选中“linearpolynomial”(一次多项式),然后点击“Apply”,完成有理函数拟合。然后,再次点击“Newfit”,在“FitName:”中输入“指数函数”,在“Typeoffit”中选中“CustomEqua-tion”(用户自定义方程),点击“Newequation”,打开用户自定义方程对话框,点击“GeneralEquation”(一般方程),在“Equation”中输入“y=a*(1-exp(-b*x))”,点击“Ok”后回到拟合窗口,点击“Apply”,完成指数函数拟合,拟合效果图如图6所示。(a)yAD1+B;A=-3,B=-4 (b)y;D=-1,B=-2 (c)y;A=2,B=-3图6 例3有理函数和指数函数拟合效果图表3 模型(4)、(5)计算结果拟合函数系数RMSE(剩余标准差)9.41917.44R-square0.9741x3(d)y;A=-1,B=1 (e)y=Aln(x)+B;A=2,B (f)y=Aln(x)+B;A=-2,B=2y=(p1*x+p2)p1=221.7p2=3.318/(x+q1)q1=0.1047y=a*(1-exp(-b*x))a=192.1,b=11.38Ax(g)y=Ce;A0.90141213AxA,C (h)y=Ce;A=-1,C=3 (i)y=Cx;A,C通过表3可以看出,有理函数yx+0.1047剩余标准差的较小,R-square较大(越接近1越221.7x+3.318好),故用有理函数yx+0.x指数函数y=192.1(1-e)拟合的效果好。1L(j)y;A=4,B=-3 (k)y=Cxe-Dx;C=12,D=1 (l)y;L=5,C=20,A=-21+Ce3 数据线性化变换在许多实际问题中,变量之间内在的关系并不简单地呈线性关系,但是通常可以使用数据线性化技术ax来拟合各种曲线,如y=ce,可两边取自然对数后,B令X=x,Y=ln(y),c=e,就可变换成线性表达式。当选定曲线后,可以为变量找一个合适的变换,以得,,2+3+2+2+4+3+2+(m)y=axbx+c   (n)y=axbxcxd   (o)y=axbxcxdx+e图7 “数据线性化”中可能使用的曲线2008年第5期唐家德:基于MATLAB的非线性曲线拟合 19如何从众多的函数中选取函数y=φ(x)来拟合实际情况的数据,除了根据专业知识和经验来确定外,还可以根据散点图的分布形状及特点来选择适当的曲线拟合这些数据。从图7中可以看出,进行“数据线性化”时,根据实验数据的散点图的特征,可以将散点图大致分为四类:(1)双曲型,如图7中的(a)、(b)、(c)、(d)、(j),其特点为“存在水平渐近线和垂直渐近线”。当散点图为此种类型1111时,可分别作出[x,],[,y],[,]的散点图,看哪一yxxy个图将数据变“直”,从而确定出做哪一种变换。(2)抛物型,如图7中的(m),其特点是“先升后降”或“先降后升”。当散点图为此种类型时,可使用例1中介绍的命令求解拟合函数,只是需要注意将相应的命令选项改为二次(quadratic)即可。(3)指数型,如图7中的(e)、(f)、(g)、(h)、(i),其特点为“当x趋于无穷时,y也趋于无穷”。当散点图为此种类型时,可分别作出(x,lny),(lnx,lny)的散点图,看哪一个图将数据变“直”,从而确定出做哪一种变换。(4)特殊指数型,如图7中的(k)、(l),其特点为“曲线呈现S形”,此时可对应使用表4中的变量变换。图8 例4实验数据和经过变换的散点图下面举一个实例说明。例4:给出实验数据。64.684.8104.612141618205.5225.6246.04.95.05.45.1用最小二乘法原理找出函数拟合以上数据x=6:2:24;y=[4.6 4.8 4.6 4.9 5.0 5.4 5.1 5.5 5.6 6.0];subplot(2,2,1);plot(x,y,′+′);title(′x与y的散点图′)图9 例4实验数据拟合图从图8中x与y的散点图可以看出,随着x的增大,y也不断增大,可以认为属于“指数型”,为了确定具体的拟合函数,再作出(lnx,y),(x,lny),(lnx,lny)的散点图,MATLAB命令如下:subplot(2,2,2);plot(log(x),y,′+′);title(′log(x)与y的散点图′);subplot(2,2,3);plot(x,log(y),′+′);title(′x与log(y)的散点图′);subplot(2,2,4);plot(log(x),log(y),′+′);title(′log(x)与log(y)的散点图′);观察x与log(y)的散点图,发现数据点大致分布在一条直线附近,采用变换X=x,Y=log(y)可以将数据线性化。即拟合函数为:log(y)=ax+bbax(7)化简为:y=ee,利用多项式拟合函数命令polyfit,可求出参数a,bp=polyfit(x,log(y),1)p=0.b故a=0.0138,b=1.4281,e=4.1709,即拟合*0.0138x函数为y=4.1709e参考文献:[1] JohnHMathews,KurtisDFink.数值方法(MATLAB版)[M].北京:电子工业出版社,.[2] 徐萃薇,孙绳武.计算方法引论[M].北京:高等教育出版社,.[3] 苏金明,张莲花,等.MATLAB工具箱应用[M].北京:电子工业出版社,.[4] 李庆扬,王能超,等.数值分析[M].北京:清华大学出版社,.[5] 姜启源,谢金星,,叶俊.数学模型[M].北京:高等教育出版社,.[6] 白峰杉.数值计算引论[M].北京:高等教育出版社,.[7] GeraldRecktenwald.数值方法和MATLAB实现与应用[M].北京:机械工业出版社,.[8] 宋兆基,徐流美,等.MATLAB6.5在科学计算中的应用[M].北京:清华大学出版社,.}

我要回帖

更多关于 matlab多元非线性拟合 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信