最小二乘法及matlab程序.doc
《最小二乘法及matlab程序.doc》由會員分享,可在線閱讀,更多相關(guān)《最小二乘法及matlab程序.doc(3頁珍藏版)》請在裝配圖網(wǎng)上搜索。
最小二乘法及matlab程序 最小二乘法簡介: 最小二乘法(又稱最小平方法)是一種數(shù)學(xué)優(yōu)化技術(shù)。它通過最小化誤差的平方和尋找數(shù)據(jù)的最佳函數(shù)匹配。利用最小二乘法可以簡便地求得未知的數(shù)據(jù),并使得這些求得的數(shù)據(jù)與實際數(shù)據(jù)之間誤差的平方和為最小。最小二乘法還可用于曲線擬合。其他一些優(yōu)化問題也可通過最小化能量或最大化熵用最小二乘法來表達。 最小二乘法的矩陣形式: 若未知量的個數(shù)大于方程的個數(shù),則方程無解,但在數(shù)值計算領(lǐng)域,我們通常是計算 ,解出其中的x 。比較直觀的做法是求解 ,但通常比較低效。其中一種常見的解法是對 A進行QR分解(A=QR),其中Q是正交矩陣(Orthonormal Matrix),R是上三角矩陣(Upper Triangular Matrix),則有:。 Matlab命令: 一次函數(shù)線性擬合使用polyfit(x,y,1); 多項式函數(shù)線性擬合使用 polyfit(x,y,n),n為次數(shù); 例如: x=[0.5,1.0,1.5,2.0,2.5,3.0]; y=[1.75,2.45,3.81,4.80,7.00,8.60]; p=polyfit(x,y,2) x1=0.5:0.5:3.0; y1=polyval(p,x1); plot(x,y,*r,x1,y1,-b) 計算結(jié)果為: p =0.5614 0.8287 1.1560 即所得多項式為y=0.5614x^2+0.8287x+1.15560 然后可以使用polyval在t處預(yù)測:y_hat=polyval(p,t) 非線性函數(shù)使用:lsqcurvefit、nlinfit 格式:lsqcurvefit(f,a,x,y)、nlinfit(x,y,f,a) f:符號函數(shù)句柄,如果是以m文件的形式調(diào)用的時候,別忘記加@.這里需要注意,f函數(shù)的返回值是和y匹對的,即擬合參數(shù)的標準是(f-y)^2取最小值,具體看下面的例子 a:最開始預(yù)估的值(預(yù)擬合的未知參數(shù)的估計值)。如上面的問題如果我們預(yù)估A為1,B為2,則a=[1 2] x:我們已經(jīng)獲知的x的值 y:我們已經(jīng)獲知的x對應(yīng)的y的值 例子1: 問題:對于函數(shù)y=a*sin(x)*exp(x)-b/log(x)我們現(xiàn)在已經(jīng)有多組(x,y)的數(shù)據(jù),我們要求最佳的a,b值 %針對上面的問題,我們可以來演示下如何使用這個函數(shù)以及看下其效果 x=2:10; y=8*sin(x).*exp(x)-12./log(x); %上面假如是我們事先獲得的值 a=[1 2]; f=@(a,x)a(1)*sin(x).*exp(x)-a(2)./log(x); %第一種方法使用lsqcurvefit lsqcurvefit(f,a,x,y) ans = 7.999999999999987 11.999999999988997%和我們預(yù)期的值8和12結(jié)合得非常好 %第二種方法使用nlinfit nlinfit(x,y,f,a) ans = 8.000000000000000 11.999999999999998 %********************************** %另一種方法,假如我們寫了一個如下的m文件 function f=test(a,x) f=a(1)*sin(x).*exp(x)-a(2)./log(x); end %則在上面lsqcurvefit函數(shù)調(diào)用如下,不要忘記那個@ lsqcurvefit(@test,a,x,y) 例子2:(多元的情況,注意看格式) 問題:我們已知z=a*(exp(y)+1)-sin(x)*b且有多組(x,y,z)的值,現(xiàn)在求最佳系數(shù)a,b x=2:10; y=10*sin(x)./log(x); z=4.5*(exp(y)+1)-sin(x)*13.8; f=@(a,x)a(1)*(exp(x(2,:))+1)-sin(x(1,:))*a(2); %第一種方法使用lsqcurvefit lsqcurvefit(f,[1 2],[x;y],z)%注意這里面的[x;y],這里的[1 2]表示我們設(shè)置f函數(shù)里的初始值a(1)=1,,a(2)=2 ans = 4.499999999999999 13.800000000000024 %第二種方法使用nlinfit nlinfit([x;y],z,f,[1 2]) ans = 4.500000000000000 13.799999999999956- 1.請仔細閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認領(lǐng)!既往收益都歸您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 最小二乘法 matlab 程序
鏈接地址:http://ioszen.com/p-6660009.html