《Matlab擬合曲線》PPT課件.ppt
《《Matlab擬合曲線》PPT課件.ppt》由會員分享,可在線閱讀,更多相關(guān)《《Matlab擬合曲線》PPT課件.ppt(54頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、1,擬 合,2,實驗?zāi)康?實驗內(nèi)容,2、掌握用數(shù)學(xué)軟件求解擬合問題。,1、直觀了解擬合基本內(nèi)容。,1、擬合問題引例及基本理論。,4、實驗作業(yè)。,2、用數(shù)學(xué)軟件求解擬合問題。,3、應(yīng)用實例,3,擬 合,2.擬合的基本原理,1. 擬合問題引例,,4,擬 合 問 題 引 例 1,求600C時的電阻R。,,設(shè) R=at+b a,b為待定系數(shù),,,5,擬 合 問 題 引 例 2,求血藥濃度隨時間的變化規(guī)律c(t).,作半對數(shù)坐標(biāo)系(semilogy)下的圖形,,,MATLAB(aa1),6,曲 線 擬 合 問 題 的 提 法,已知一組(二維)數(shù)據(jù),即平面上 n個點(xi,yi) i=1,n, 尋求一個函
2、數(shù)(曲線)y=f(x), 使 f(x) 在某種準(zhǔn)則下與所有數(shù)據(jù)點最為接近,即曲線擬合得最好。,y=f(x),i 為點(xi,yi) 與曲線 y=f(x) 的距離,7,擬合與插值的關(guān)系,函數(shù)插值與曲線擬合都是要根據(jù)一組數(shù)據(jù)構(gòu)造一個函數(shù)作為近似,由于近似的要求不同,二者的數(shù)學(xué)方法上是完全不同的。,實例:下面數(shù)據(jù)是某次實驗所得,希望得到X和 f之間的關(guān)系?,MATLAB(cn),問題:給定一批數(shù)據(jù)點,需確定滿足特定要求的曲線或曲面,解決方案:,若不要求曲線(面)通過所有數(shù)據(jù)點,而是要求它反映對象整體的變化趨勢,這就是數(shù)據(jù)擬合,又稱曲線擬合或曲面擬合。,若要求所求曲線(面)通過所給所有數(shù)據(jù)點,就是插值
3、問題;,8,最臨近插值、線性插值、樣條插值與曲線擬合結(jié)果:,9,曲線擬合問題最常用的解法線性最小二乘法的基本思路,第一步:先選定一組函數(shù) r1(x), r2(x), rm(x), m 4、量個數(shù)的方程組,超定方程一般是不存在解的矛盾方程組。,如果有向量a使得 達(dá)到最小, 則稱a為上述超定方程的最小二乘解。,11,線性最小二乘法的求解,定理:當(dāng)RTR可逆時,超定方程組(3)存在最小二乘解,且即為方程組 RTRa=RTy 的解:a=(RTR)-1RTy,,所以,曲線擬合的最小二乘法要解決的問題,實際上就是求以下超定方程組的最小二乘解的問題。,12,線性最小二乘擬合 f(x)=a1r1(x)+ +amrm(x)中函數(shù)r1(x), rm(x)的選取,1. 通過機理分析建立數(shù)學(xué)模型來確定 f(x);,2. 將數(shù)據(jù) (xi,yi) i=1, n 作圖,通過 5、直觀判斷確定 f(x):,,13,用MATLAB解擬合問題,1、線性最小二乘擬合,2、非線性最小二乘擬合,,14,用MATLAB作線性最小二乘擬合,1. 作多項式f(x)=a1xm+ +amx+am+1擬合,可利用已有程序:,a=polyfit(x,y,m),2. 對超定方程組,3.多項式在x處的值y可用以下命令計算: y=polyval(a,x),15,例 對下面一組數(shù)據(jù)作二次多項式擬合,16,1)輸入以下命令: 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( 6、11,1); A=Ry,,,MATLAB(zxec1),解法1用解超定方程的方法,2)計算結(jié)果: = -9.8108 20.1293 -0.0317,17,,1)輸入以下命令: 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) %作出數(shù)據(jù)點和擬合曲線的圖形,2)計算結(jié)果: = -9.8108 20.1293 -0.0317,解法2用多項式擬合的命令,MATLAB(zxec2),,18,1. 7、lsqcurvefit 已知數(shù)據(jù)點: xdata=(xdata1,xdata2,,xdatan), ydata=(ydata1,ydata2,,ydatan),用MATLAB作非線性最小二乘擬合,Matlab的提供了兩個求非線性最小二乘擬合的函數(shù):lsqcurvefit和lsqnonlin。兩個命令都要先建立M-文件fun.m,在其中定義函數(shù)f(x),但兩者定義f(x)的方式是不同的,可參考例題.,lsqcurvefit用以求含參量x(向量)的向量值函數(shù) F(x,xdata)=(F(x,xdata1),,F(xiàn)(x,xdatan))T 中的參變量x(向量),使得,,19,輸入格式為: (1 8、) x = lsqcurvefit (fun,x0,xdata,ydata); (2) x =lsqcurvefit (fun,x0,xdata,ydata,options); (3) x = lsqcurvefit (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 ( 9、fun,x0,xdata,ydata,);,說明:x = lsqcurvefit (fun,x0,xdata,ydata,options);,20,lsqnonlin用以求含參量x(向量)的向量值函數(shù) f(x)=(f1(x),f2(x),,fn(x))T 中的參量x,使得 最小。 其中 fi(x)=f(x,xdatai,ydatai) =F(x,xdatai)-ydatai,2. lsqnonlin,已知數(shù)據(jù)點: xdata=(xdata1,xdata2,,xdatan) ydata=(ydata1,ydata2,,ydatan),21,輸入格式為: 1) x=l 10、sqnonlin(fun,x0); 2) x= lsqnonlin (fun,x0,options); 3) x= lsqnonlin (fun,x0,options,grad); 4) x,options= lsqnonlin (fun,x0,); 5) x,options,funval= lsqnonlin (fun,x0,);,說明:x= lsqnonlin (fun,x0,options);,22,,例2 用下面一組數(shù)據(jù)擬合 中的參數(shù)a,b,k,該問題即解最優(yōu)化問題:,23,MATLAB(fzxec1),1)編寫M-文件 curvefun1.m function 11、f=curvefun1(x,tdata) f=x(1)+x(2)*exp(-0.02*x(3)*tdata) %其中 x(1)=a; x(2)=b;x(3)=k;,2)輸入命令 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; 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. 用命令lsqc 12、urvefit,24,3)運算結(jié)果為: f =0.0043 0.0051 0.0056 0.0059 0.0061 0.0062 0.0062 0.0063 0.0063 0.0063 x = 0.0063 -0.0034 0.2542,4)結(jié)論:a=0.0063, b=-0.0034, k=0.2542,25,MATLAB(fzxec2),解法 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 13、=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)- cdata,2)輸入命令: x0=0.2,0.05,0.05; x=lsqnonlin(curvefun2,x0) f= curvefun2(x),函數(shù)curvefun2的自變量是x,cdata和tdata是已知參數(shù),故應(yīng)將cdata tdata的值寫在curvefun2.m中,26,,3)運算結(jié)果為 f =1.0e-003 *(0.2322 -0.1243 -0.2495 -0.2413 -0. 14、1668 -0.0724 0.0241 0.1159 0.2030 0.2792 x =0.0063 -0.0034 0.2542,可以看出,兩個命令的計算結(jié)果是相同的.,4)結(jié)論:即擬合得a=0.0063 b=-0.0034 k=0.2542,27,MATLAB解應(yīng)用問題實例,1、電阻問題,2、給藥方案問題,*3、水塔流量估計問題,,28,MATLAB(dianzu1),電阻問題,得到 a1=3.3940, a2=702.4918,方法2.直接用,結(jié)果相同。,,MATLAB(dianzu2),29,一室模型:將整個機體看作一個房室,稱中心室,室內(nèi)血藥濃度是均勻的??焖凫o脈注射后,濃度立即上 15、升;然后迅速下降。當(dāng)濃度太低時,達(dá)不到預(yù)期的治療效果;當(dāng)濃度太高,又可能導(dǎo)致藥物中毒或副作用太強。臨床上,每種藥物有一個最小有效濃度c1和一個最大有效濃度c2。設(shè)計給藥方案時,要使血藥濃度 保持在c1c2之間。本題設(shè)c1=10,c2=25(ug/ml).,一種新藥用于臨床之前,必須設(shè)計給藥方案.,藥物進(jìn)入機體后血液輸送到全身,在這個過程中不斷地被吸收、分布、代謝,最終排出體外,藥物在血液中的濃度,即單位體積血液中的藥物含量,稱為血藥濃度。,30,要設(shè)計給藥方案,必須知道給藥后血藥濃度隨時間變化的規(guī)律。從實驗和理論兩方面著手:,給藥方案,1. 在快速靜脈注射的給藥方式下,研究血藥濃度(單位體積血 16、液中的藥物含量)的變化規(guī)律。,t,問題,2. 給定藥物的最小有效濃度和最大治療濃度,設(shè)計給藥方案:每次注射劑量多大;間隔時間多長。,分析,理論:用一室模型研究血藥濃度變化規(guī)律,實驗:對血藥濃度數(shù)據(jù)作擬合,符合負(fù)指數(shù)變化規(guī)律,3.血液容積v, t=0注射劑量d, 血藥濃度立即為d/v.,2.藥物排除速率與血藥濃度成正比,比例系數(shù) k(0),模型假設(shè),1. 機體看作一個房室,室內(nèi)血藥濃度均勻一室模型,模型建立,在此,d=300mg,t及c(t)在某些點處的值見前表,需經(jīng)擬合求出參數(shù)k、v,用線性最小二乘擬合c(t),MATLAB(lihe1),計算結(jié)果:,用非線性最小二乘擬合c(t),給藥方案 設(shè) 17、計,設(shè)每次注射劑量D, 間隔時間,血藥濃度c(t) 應(yīng)c1 c(t) c2,初次劑量D0 應(yīng)加大,給藥方案記為:,2、,1、,計算結(jié)果:,給藥方案:,c1=10,c2=25 k=0.2347 v=15.02,35,故可制定給藥方案:,即: 首次注射375mg, 其余每次注射225mg, 注射的間隔時間為4小時。,,36,,估計水塔的流量,2、解題思路,3、算法設(shè)計與編程,1、問題,,37,某居民區(qū)有一供居民用水的園柱形水塔,一般可以通過測量其水位來估計水的流量,但面臨的困難是,當(dāng)水塔水位下降到設(shè)定的最低水位時,水泵自動啟動向水塔供水,到設(shè)定的最高水位時停止供水,這段時間無法測量水塔的水位 18、和水泵的供水量通常水泵每天供水一兩次,每次約兩小時. 水塔是一個高12.2米,直徑17.4米的正園柱按照設(shè)計,水塔水位降至約8.2米時,水泵自動啟動,水位升到約10.8米時水泵停止工作 表1 是某一天的水位測量記錄,試估計任何時刻(包括水泵正供水時)從水塔流出的水流量,及一天的總用水量,38,,39,流量估計的解題思路,擬合水位時間函數(shù),確定流量時間函數(shù),估計一天總用水量,,40,擬合水位時間函數(shù) 測量記錄看,一天有兩個供水時段(以下稱第1供水時段和第2供水時段),和3個水泵不工作時段(以下稱第1時段t=0到t=8.97,第2次時段t=10.95到t=20.84和第3時段t=23以后)對第1 19、、2時段的測量數(shù)據(jù)直接分別作多項式擬合,得到水位函數(shù)為使擬合曲線比較光滑,多項式次數(shù)不要太高,一般在36由于第3時段只有3個測量記錄,無法對這一時段的水位作出較好的擬合,,41,2、確定流量時間函數(shù) 對于第1、2時段只需將水位函數(shù)求導(dǎo)數(shù)即可,對于兩個供水時段的流量,則用供水時段前后(水泵不工作時段)的流量擬合得到,并且將擬合得到的第2供水時段流量外推,將第3時段流量包含在第2供水時段內(nèi),,42,3、一天總用水量的估計 總用水量等于兩個水泵不工作時段和兩個供水時段用水量之和,它們都可以由流量對時間的積分得到。,,43,算法設(shè)計與編程,1、擬合第1、2時段的水位,并導(dǎo)出流量,2、擬合供水時段的 20、流量,3、估計一天總用水量,,4、流量及總用水量的檢驗,,44,1、擬合第1時段的水位,并導(dǎo)出流量 設(shè)t,h為已輸入的時刻和水位測量記錄(水泵啟動的4個時刻不輸入),第1時段各時刻的流量可如下得: 1) c1=polyfit(t(1:10),h(1:10),3); %用3次多項式擬合第1時段水位,c1輸出3次多項式的系數(shù) 2)a1=polyder(c1); % a1輸出多項式(系數(shù)為c1)導(dǎo)數(shù)的系數(shù) 3)tp1=0:0.1:9; x1=-polyval(a1,tp1); % x1輸出多項式(系數(shù)為a1)在tp1點的函數(shù)值(取負(fù)后邊為正值),即tp1時刻的流量,MATLAB(l 21、lgj1),4)流量函數(shù)為:,45,2、擬合第2時段的水位,并導(dǎo)出流量 設(shè)t,h為已輸入的時刻和水位測量記錄(水泵啟動的4個時刻不輸入),第2時段各時刻的流量可如下得: 1) c2=polyfit(t(10.9:21),h(10.9:21),3); %用3次多項式擬合第2時段水位,c2輸出3次多項式的系數(shù) 2) a2=polyder(c2); % a2輸出多項式(系數(shù)為c2)導(dǎo)數(shù)的系數(shù) 3)tp2=10.9:0.1:21; x2=-polyval(a2,tp2); % x2輸出多項式(系數(shù)為a2)在tp2點的函數(shù)值(取負(fù)后邊為正值),即tp2時刻的流量,MATLAB(llgj2),,4) 22、流量函數(shù)為:,46,3、擬合供水時段的流量 在第1供水時段(t=911)之前(即第1時段)和之后(即第2時段)各取幾點,其流量已經(jīng)得到,用它們擬合第1供水時段的流量為使流量函數(shù)在t=9和t=11連續(xù),我們簡單地只取4個點,擬合3次多項式(即曲線必過這4個點),實現(xiàn)如下: xx1=-polyval(a1,8 9); %取第1時段在t=8,9的流量 xx2=-polyval(a2,11 12); %取第2時段在t=11,12的流量 xx12=xx1 xx2; c12=polyfit(8 9 11 12,xx12,3); %擬合3次多項式 tp12=9:0.1:11; x12=pol 23、yval(c12,tp12); % x12輸出第1供水時段 各時刻的流量,MATLAB(llgj3),擬合的流量函數(shù)為:,47,在第2供水時段之前取t=20,20.8兩點的流水量,在該時刻之后(第3時段)僅有3個水位記錄,我們用差分得到流量,然后用這4個數(shù)值擬合第2供水時段的流量如下: dt3=diff(t(22:24)); %最后3個時刻的兩兩之差 dh3=diff(h(22:24)); %最后3個水位的兩兩之差 dht3=-dh3./dt3; %t(22)和t(23)的流量 t3=20 20.8 t(22) t(23); 24、xx3=-polyval(a2,t3(1:2),dht3); %取t3各時刻的流量 c3=polyfit(t3,xx3,3); %擬合3次多項式 t3=20.8:0.1:24; x3=polyval(c3,tp3);% x3輸出第2供水時段 (外推至t=24)各時刻的流量,MATLAB(llgj4),,擬合的流量函數(shù)為:,48,3、一天總用水量的估計 第1、2時段和第1、2供水時段流量的積分之和,就是一天總用水量雖然諸時段的流量已表為多項式函數(shù),積分可以解析地算出,這里仍用數(shù)值積分計算如下: y1=0.1*trapz(x1); %第 25、1時段用水量(仍按高 度計),0.1為積分步長 y2=0.1*trapz(x2); %第2時段用水量 y12=0.1*trapz(x12); %第1供水時段用水量 y3=0.1*trapz(x3); %第2供水時段用水量 y=(y1+y2+y12+y3)*237.8*0.01; %一天總用水量( ) 計算結(jié)果:y1=146.2, y2=266.8, y12=47.4, y3=77.3,y=1250.4,MATLAB(llgjz),,49,,4、流量及總用水量的檢驗 計算出的各時刻的流量可用水位記錄的數(shù)值微分來檢驗用 26、水量y1可用第1時段水位測量記錄中下降高度968-822=146來檢驗,類似地,y2用1082-822=260檢驗 供水時段流量的一種檢驗方法如下:供水時段的用水量加上水位上升值260是該時段泵入的水量,除以時段長度得到水泵的功率(單位時間泵入的水量),而兩個供水時段水泵的功率應(yīng)大致相等第1、2時段水泵的功率可計算如下: p1=(y12+260)/2; %第1供水時段水泵的功率 (水量仍以高度計) tp4=20.8:0.1:23; xp2=polyval(c3,tp4); % xp2輸出第2供水時段 各時刻的流量 p2 27、=(0.1*trapz(xp2)+260)/2.2; %第2供水時段水泵的功率 (水量仍以高度計) 計算結(jié)果:p1=154.5 ,p2=140.1,MATLAB (ll),50,計算結(jié)果,流量函數(shù)為:,51,流量曲線見圖,,,,n=(3,4),n=(5,6),,52,練習(xí)1 用給定的多項式,如y=x3-6x2+5x-3,產(chǎn)生一組數(shù)據(jù)(xi,yi,i=1,2,,n),再在yi上添加隨機干擾(可用rand產(chǎn)生(0,1)均勻分布隨機數(shù),或用rands產(chǎn)生N(0,1)分布隨機數(shù)),然后用xi和添加了隨機干擾的yi作的3次多項式擬合,與原系數(shù)比較。 如果作2或4次多項式擬合 28、,結(jié)果如何?,53,練習(xí)2、用電壓V=10伏的電池給電容器充電,電容器上t時刻的電壓為 ,其中V0是電容器的初始電壓, 是充電常數(shù)。試由下面一組t,V數(shù)據(jù)確定V0, 。,,54,用非線性最小二乘擬合c(t)-用lsqcurvefit,2、主程序lihe2.m如下 clear tdata=0.25 0.5 1 1.5 2 3 4 6 8; cdata=19.21 18.15 15.36 14.10 12.89 9.32 7.45 5.24 3.01; x0=10,0.5; x=lsqcurvefit(curvefun3,x0,tdata,cdata); f=curvefun3(x,tdata) x,MATLAB(lihe2),1、用M-文件curvefun3.m定義函數(shù) function f=curvefun3(x,tdata) d=300 f=(x(1)d)*exp(-x(2)*tdata) % x(1)=v; x(2)=k,,
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識競賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識測試題庫及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測工種技術(shù)比武題庫含解析
- 1 礦山應(yīng)急救援安全知識競賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案