第5講-matlab數據擬合課件_第1頁
第5講-matlab數據擬合課件_第2頁
第5講-matlab數據擬合課件_第3頁
第5講-matlab數據擬合課件_第4頁
第5講-matlab數據擬合課件_第5頁
已閱讀5頁,還剩23頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、擬 合2.擬合的基本原理1. 擬合問題引例1擬 合 問 題 引 例 1溫度t(0C) 20.5 32.7 51.0 73.0 95.7電阻R() 765 826 873 942 1032已知熱敏電阻數據:求600C時的電阻R。 設 R=at+ba,b為待定系數2曲 線 擬 合 問 題 的 提 法已知一組(二維)數據,即平面上 n個點(xi,yi) i=1,n, 尋求一個函數(曲線)y=f(x), 使 f(x) 在某種準則下與所有數據點最為接近,即曲線擬合得最好。 +xyy=f(x)(xi,yi)ii 為點(xi,yi) 與曲線 y=f(x) 的距離3擬合與插值的關系 函數插值與曲線擬合都是要根

2、據一組數據構造一個函數作為近似,由于近似的要求不同,二者的數學方法上是完全不同的。 實例:下面數據是某次實驗所得,希望得到X和 f之間的關系?問題:給定一批數據點,需確定滿足特定要求的曲線或曲面解決方案:若不要求曲線(面)通過所有數據點,而是要求它反映對象整體的變化趨勢,這就是數據擬合,又稱曲線擬合或曲面擬合。若要求所求曲線(面)通過所給所有數據點,就是插值問題;4最臨近插值、線性插值、樣條插值與曲線擬合結果:5用MATLAB解擬合問題1、線性最小二乘擬合2、非線性最小二乘擬合6用MATLAB作線性最小二乘擬合1. 作多項式f(x)=a1xm+ +amx+am+1擬合,可利用已有程序:a=po

3、lyfit(x,y,m)2. 對超定方程組可得最小二乘意義下的解。,用3.多項式在x處的值y可用以下命令計算: y=polyval(a,x)輸出擬合多項式系數a=a1, am , am+1 (數組))輸入同長度的數組X,Y擬合多項式次數7即要求 出二次多項式:中 的使得:例 對下面一組數據作二次多項式擬合81)輸入以下命令:x=0:0.1:1; y=-0.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2; R=(x.2) x ones(11,1); A=Ry解法1用解超定方程的方法2)計算結果: = -9.8108 20.1293 -

4、0.031791)輸入以下命令: x=0:0.1:1; y=-0.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2; A=polyfit(x,y,2) z=polyval(A,x); plot(x,y,k+,x,z,r) %作出數據點和擬合曲線的圖形2)計算結果: = -9.8108 20.1293 -0.0317解法2用多項式擬合的命令101. lsqcurvefit已知數據點: xdata=(xdata1,xdata2,xdatan), ydata=(ydata1,ydata2,ydatan) 用MATLAB作非線性最小二乘擬合

5、Matlab的提供了兩個求非線性最小二乘擬合的函數:lsqcurvefit和lsqnonlin。兩個命令都要先建立M-文件fun.m,在其中定義函數f(x),但兩者定義f(x)的方式是不同的,可參考例題. lsqcurvefit用以求含參量x(向量)的向量值函數F(x,xdata)=(F(x,xdata1),F(x,xdatan)T中的參變量x(向量),使得 11 輸入格式為: (1) x = lsqcurvefit (fun,x0,xdata,ydata); (2) x =lsqcurvefit (fun,x0,xdata,ydata,options); (3) x = lsqcurvefi

6、t (fun,x0,xdata,ydata,options,grad); (4) x, options = lsqcurvefit (fun,x0,xdata,ydata,); (5) x, options,funval = lsqcurvefit (fun,x0,xdata,ydata,); (6) x, options,funval, Jacob = lsqcurvefit (fun,x0,xdata,ydata,);fun是一個事先建立的定義函數F(x,xdata) 的M-文件, 自變量為x和xdata說明:x = lsqcurvefit (fun,x0,xdata,ydata,opti

7、ons);迭代初值已知數據點選項見無約束優化12 lsqnonlin用以求含參量x(向量)的向量值函數 f(x)=(f1(x),f2(x),fn(x)T 中的參量x,使得 最小。 其中 fi(x)=f(x,xdatai,ydatai) =F(x,xdatai)-ydatai 2. lsqnonlin已知數據點: xdata=(xdata1,xdata2,xdatan) ydata=(ydata1,ydata2,ydatan)13輸入格式為: 1) x=lsqnonlin(fun,x0); 2) x= lsqnonlin (fun,x0,options); 3) x= lsqnonlin (fu

8、n,x0,options,grad); 4) x,options= lsqnonlin (fun,x0,); 5) x,options,funval= lsqnonlin (fun,x0,);說明:x= lsqnonlin (fun,x0,options);fun是一個事先建立的定義函數f(x)的M-文件,自變量為x迭代初值選項見無約束優化14 例2 用下面一組數據擬合 中的參數a,b,k該問題即解最優化問題:15 1)編寫M-文件 curvefun1.m function f=curvefun1(x,tdata) f=x(1)+x(2)*exp(-0.02*x(3)*tdata) %其中 x

9、(1)=a; x(2)=b;x(3)=k;2)輸入命令tdata=100:100:1000cdata=1e-03*4.54,4.99,5.35,5.65,5.90,6.10,6.26,6.39,6.50,6.59; x0=0.2,0.05,0.05; x=lsqcurvefit (curvefun1,x0,tdata,cdata) f= curvefun1(x,tdata) F(x,tdata)= ,x=(a,b,k)解法1. 用命令lsqcurvefit163)運算結果為:f =0.0043 0.0051 0.0056 0.0059 0.0061 0.0062 0.0062 0.0063 0

10、.0063 0.0063 x = 0.0063 -0.0034 0.25424)結論:a=0.0063, b=-0.0034, k=0.254217 解法 2 用命令lsqnonlin f(x)=F(x,tdata,ctada)= x=(a,b,k)1)編寫M-文件 curvefun2.m function f=curvefun2(x) tdata=100:100:1000; cdata=1e-03*4.54,4.99,5.35,5.65,5.90, 6.10,6.26,6.39,6.50,6.59; f=x(1)+x(2)*exp(-0.02*x(3)*tdata)- cdata2)輸入命令

11、: x0=0.2,0.05,0.05;x=lsqnonlin(curvefun2,x0)f= curvefun2(x)函數curvefun2的自變量是x,cdata和tdata是已知參數,故應將cdata tdata的值寫在curvefun2.m中183)運算結果為 f =1.0e-003 *(0.2322 -0.1243 -0.2495 -0.2413 -0.1668 -0.0724 0.0241 0.1159 0.2030 0.2792 x =0.0063 -0.0034 0.2542可以看出,兩個命令的計算結果是相同的.4)結論:即擬合得a=0.0063 b=-0.0034 k=0.25

12、4219電阻問題 溫度t(0C) 20.5 32.7 51.0 73.0 95.7電阻R() 765 826 873 942 1032例. 由數據擬合R=a1t+a2方法1.用命令polyfit(x,y,m)得到 a1=3.3940, a2=702.4918方法2.直接用結果相同。20 在實驗方面,對某人用快速靜脈注射方式一次注入該藥物300mg后,在一定時刻t(小時)采集血藥,測得血藥濃度c(ug/ml)如下表: t (h) 0.25 0.5 1 1.5 2 3 4 6 8c (g/ml) 19.21 18.15 15.36 14.10 12.89 9.32 7.45 5.24 3.01 要

13、設計給藥方案,必須知道給藥后血藥濃度隨時間變化的規律。從實驗和理論兩方面著手:213.血液容積v, t=0注射劑量d, 血藥濃度立即為d/v.2.藥物排除速率與血藥濃度成正比,比例系數 k(0)模型假設1. 機體看作一個房室,室內血藥濃度均勻一室模型模型建立 在此,d=300mg,t及c(t)在某些點處的值見前表,需經擬合求出參數k、v22用線性最小二乘擬合c(t)計算結果:d=300;t=0.25 0.5 1 1.5 2 3 4 6 8;c=19.21 18.15 15.36 14.10 12.89 9.32 7.45 5.24 3.01;y=log(c);a=polyfit(t,y,1)k

14、=-a(1)v=d/exp(a(2)程序:用非線性最小二乘擬合c(t)23給藥方案 設計cc2c10t 設每次注射劑量D, 間隔時間 血藥濃度c(t) 應c1 c(t) c2 初次劑量D0 應加大給藥方案記為:2、1、計算結果:給藥方案:c1=10,c2=25k=0.2347v=15.0224故可制定給藥方案:即: 首次注射375mg, 其余每次注射225mg, 注射的間隔時間為4小時。25練習1 用給定的多項式,如y=x3-6x2+5x-3,產生一組數據(xi,yi,i=1,2,n),再在yi上添加隨機干擾(可用rand產生(0,1)均勻分布隨機數,或用rands產生N(0,1)分布隨機數),然后用xi和添加了隨機干擾的yi作的3次多項式擬合,與原系數比較。 如果作2或4次多項式擬合,結果如何?26 練習2、用電壓V=10伏的電池給電容器充電,電容器上t時刻的電壓為 ,其中V0是電容器的初始電壓, 是充電常數。試由下面一組t,V數據確定V0, 。27用非線性最小二乘擬合c(t)-用lsqcurvefit2、主程序lihe2.m如下cleartdata=0.25 0.5 1 1.5 2 3 4 6 8;cdata=19.21

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論