999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

MATLAB中三個適于數據擬合命令的比較分析

2010-09-25 12:48:18林大偉張宏禮
大慶師范學院學報 2010年6期

楊 洪,林大偉,張宏禮

(黑龍江八一農墾大學 文理學院,黑龍江 大慶 163319)

0 引言

在科學數據的處理過程中,常常需要建立變量之間的數學模型。所建立的數學模型往往是非線性的,因為在實際應用中非線性模型常常比線性模型更能反映變量之間的關系。數據擬合是一種重要的建立變量之間數學模型的方法,其求解方法通常是對給定的含有待定參數的數學模型應用最小二乘法求解。隨著研究的不斷深入,非線性數據擬合問題越來越受到重視。

1 基于最小二乘法的數據擬合

在Matlab下有三個適于數據擬合的命令,它們分別是統計工具箱下的nlinfit()、優化工具箱下的 lsqnonlin()、優化工具箱下的lsqcurvefit(),這三個命令都依據最小二乘法求解[1]。

最小二乘法一般是求解最小二乘問題,最小二乘問題就是對由若干個函數的平方和構成的目標函數求極小值的問題。目標函數一般可以寫成

其中,x=(x1,x2,…xn)是集合En中的點,一般m≥n。目標函數極小化可以表示成

特別地,當fi(x),i=1,2,…m中至少有一個是x的非線性函數時,稱為非線性最小二乘問題。

2 三個命令的算法原理、格式

2.1 nlinfit函數的算法原理

nlinfit()實際上是非線性回歸函數,一般用非線性最小二乘法確定回歸方程中的系數[3],其基本算法是Guass-Newton法。

Guass-Newton法可以非常方便地求解最小二乘問題。在Guass-Newton法中需要求解牛頓方程

2f(x(k))d=f(x(k))

由Hesse矩陣

可知,這里需要計算ri(x)(i=1,2,…m),計算量大。為了簡化計算,省略Hesse矩陣的第二項,即求解方程組

J(x(k))TJ(x(k))d=-J(x(k))Tr(x(k))

得d(k),然后置

x(k+1)=x(k)+d(k)

這樣就得到了Guass-Newton法[4]。

2.2 lsqnonlin函數的算法原理及格式

該函數主要的算法是Guass-Newton法和Levenberg-Marquardt法。

lsqnonlin函數求解非線性數據擬合問題,不僅僅要計算目標函數f(x)(平方和),lsqnonlin函數還需要用戶指定函數來計算向量值函數

然后,將優化問題重新寫成向量的形式:

式中,x為一向量,F(x)為一返回向量值的函數。

用lsqnonlin函數求解數據擬合問題,其調用格式為:

x = lsqnonlin(fun,x0)

x = lsqnonlin(fun,x0,lb,ub)

x = lsqnonlin(fun,x0,lb,ub,options)

x = lsqnonlin(fun,x0,lb,ub,options,P1,P2,…)

[x,resnorm] = lsqnonlin(...)

[x,resnorm,residual] = lsqnonlin(...)

[x,resnorm,residual,exitflag] = lsqnonlin(...)

[x,resnorm,residual,exitflag,output] = lsqnonlin(...)

[x,resnorm,residual,exitflag,output,lambda] = lsqnonlin(...)

[x,resnorm,residual,exitflag,output,lambda,jacobian] = lsqnonlin(...)

2.3 lsqcurvefit函數的算法原理及格式

lsqcurvefit函數的基本算法與lsqnonlin函數基本相同。同樣是應用了Guass-Newton法和Levenberg-Marquardt法。

lsqcurvefit解決非線性數據擬合問題的數學模型為

其中xdata和ydata為向量,F(x,xdata)為向量值函數。

用lsqcurvefit函數求最小二乘意義上的非線性數據擬合問題。即根據輸入數據xdata和得到的輸出數據ydata,找到與方程F(x,xdata)最佳的擬合系數。

lsqcurvefit求解非線性數據擬合問題。lsqcurvefit需要一個用戶定義函數來計算向量值函數F(x,xdata)。用戶定義的函數的向量的大小必須與ydata的大小相同。

該函數的調用格式為:

x = lsqcurvefit(fun,x0,xdata,ydata)

x = lsqcurvefit(fun,x0,xdata,ydata,lb,ub)

x = lsqcurvefit(fun,x0,xdata,ydata,lb,ub,options)

[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(...)

3 nlinfit、lsqnonlin和lsqcurvefit命令的實例比較

nilinfit()函數是應用了Guass-Newton法進行求解的,在Guass-Newton法中,當J(x(k))的各列是線性相關,或接近線性相關,換句話說,矩陣J(x(k))TJ(x(k))奇異或是病態的,那么求解線性方程組就會出現一點困難,而lsqnonlin命令是基于Guass-Newton法和Levenberg-Marquardt法進行求解。從而利用Levenberg-Marquardt法設置參數即可完成。已知數據如表1所示

表1 數據表

在Matlab中輸入

x=[0.02 0.02 0.06 0.06 0.11 0.11 0.22 0.22 0.56 0.56 1.10 1.10];

y=[76 47 97 107 123 139 159 152 191 201 207 200];

f=inline('p(1)*x./(p(2)+x)','p','x');

[p,r]=nlinfit(x,y,f,[200,0.1])

運行結果為

p = 212.6826 0.0641

r =25.4332 -3.5668 -5.8119 4.1881 -11.3623 4.6377 -5.6848 -12.6848 0.1676 10.1676 6.0319 -0.9681

下面畫出由擬合得到的數據及已知的數據散點圖。

x1=0:0.02:1.10; y1=212.6826*x1./(0.0641+x1); plot(x,y, 'o',x1,y1)

圖1利用nlinfit( )數據擬合生成圖

在[p,r]=nlinfit(x,y,f,[200,0.1])中,“r”為殘差。殘差是通過建立的擬合函數求出的值和實際值之間的差值。

下面應用lsqnonlin函數進行擬合,首先編寫目標函數 (curve_fun.m)

function y=curve_fun(p)%非線性最小二乘擬合函數

x=[0.02 0.02 0.06 0.06 0.11 0.11 0.22 0.22 0.56 0.56 1.10 1.10];

y=[76 47 97 107 123 139 159 152 191 201 207 200];

y=p(1)*x./(p(2)+x)-y;

再用lsqnonlin()函數求解,輸入

[p,resnorm,residual]=lsqnonlin(@curve_fun,[200,0.1])

運行結果為

p =212.6836 0.0641

resnorm =1.1954e+003

residual =

Columns 1 through 11

-25.4339 3.5661 5.8111 -4.1889 11.3617 -4.6383 5.6847 12.6847 -0.1671 -10.1671 -6.0313

Column 12 0.9687

作圖如下:

x=[0.02 0.02 0.06 0.06 0.11 0.11 0.22 0.22 0.56 0.56 1.10 1.10];

y1=212.6836*x1./(0.0641+x1); plot(x,y,'o',x1,y1)

圖2 利用lsqnonlin ( )數據擬合生成圖

雖然lsqnonlin函數較nlinfit函數全面,但在一些基本數據擬合問題上特別在不是解病態奇異的方程組的情況下,應用nlinfit函數與lsqnonlin函數擬合沒有明顯的差別,幾乎可以省略。Matlab用lsqcurvefit函數進行非線性數據擬合,其算法與lsqnonlin函數的算法相同。

4 結語

基于最小二乘法闡述了MATLAB中三個適于數據擬合命令的算法原理、格式,并通過應用實例對這三個命令的異同進行了比較分析。nlinfit()函數實際上是非線性回歸函數,其基本原理是Guass-Newton法,它的擬合結果比lsqurvefit()函數的默認控制結果更精確,但是因為其不允許給出像lsqurvefit()函數的精度控制選項,在某方面不能進一步精確。用lsqcurvefit()函數進行非線性數據擬合,設置該函數的目的是提供一個更方便于進行數據擬合的方法,其算法與lsqnonlin()函數的算法相同,都是Guass-Newton法和Levenberg-Marquardt法。但在一些特定的環境不能用lsqnonlin()函數,比如由于大型算法不能求解待定系統,中型算法不能求解有邊界約束的問題等,這樣的問題應用lsqurvefit()函數更適用更精確些。

[參考文獻]

[1] 羅成漢,劉小山.曲線擬合法的Matlab實現[J].現代電子技術,2003,20:16-18.

[2] 薛毅.最優化理論與算法[M].北京:北京工業大學出版社,2004:201-202.

[3] 包翠蓮,開小明.Matlab語言在多元線性回歸中的應用[J]. 安徽教育學院學報,2005,23(3):55.

[4] 禇洪生,杜增吉,閻金華.Matlab7.2優化設計實例指導教程[M].北京:機械工業出版社,2007:117.

主站蜘蛛池模板: 色综合久久久久8天国| 久久99精品久久久久久不卡| 精品一区二区三区水蜜桃| 99久视频| 啪啪永久免费av| 玩两个丰满老熟女久久网| 久久黄色视频影| 国产人前露出系列视频| 国产青青草视频| 热re99久久精品国99热| 人妻无码AⅤ中文字| 黄色网址手机国内免费在线观看| 青青久久91| 国产精品第页| 一级毛片免费的| 亚洲天堂精品视频| 国产亚洲精品自在久久不卡| 毛片视频网址| 精品视频一区二区三区在线播| 国产香蕉一区二区在线网站| 97se亚洲综合在线天天 | 欧美三级日韩三级| 国产一区二区三区在线观看免费| 欧美日韩在线观看一区二区三区| 天天综合网站| 国产不卡在线看| 久久这里只有精品国产99| 国产69精品久久久久孕妇大杂乱| 国产在线观看一区精品| 亚洲国产午夜精华无码福利| 国产丝袜丝视频在线观看| 国产在线专区| 好久久免费视频高清| 亚洲成aⅴ人在线观看| 狠狠做深爱婷婷久久一区| 久久青草视频| 丝袜国产一区| 亚洲男人天堂久久| 国产手机在线观看| 久久6免费视频| 57pao国产成视频免费播放| 中文无码日韩精品| 亚洲成人精品久久| 国产成人一区在线播放| 99久久精品免费看国产免费软件| 国产综合精品一区二区| 国产主播福利在线观看| 久久综合成人| 人妻中文久热无码丝袜| 四虎成人在线视频| 国产精品露脸视频| 999国产精品永久免费视频精品久久| 91啪在线| 成人毛片在线播放| 亚洲欧美在线综合图区| 99re热精品视频国产免费| 久草视频福利在线观看| 一级做a爰片久久毛片毛片| 国产精品美女网站| 漂亮人妻被中出中文字幕久久| 欧美成人手机在线观看网址| 国产成人精品一区二区三在线观看| 久久香蕉国产线| 91精品国产麻豆国产自产在线| 久久精品人人做人人爽97| 欧洲在线免费视频| 亚洲人成网站18禁动漫无码| 国产在线精品99一区不卡| 亚洲中文字幕日产无码2021| 99久久国产自偷自偷免费一区| 国产青榴视频| 久久精品视频一| 欧美色亚洲| 激情亚洲天堂| 国产区91| 无码日韩精品91超碰| 亚洲香蕉久久| 操国产美女| 91年精品国产福利线观看久久| 国产中文一区a级毛片视频| 久久精品这里只有精99品| 久久久受www免费人成|