一種非線性函數的曲線擬合方法_第1頁
一種非線性函數的曲線擬合方法_第2頁
一種非線性函數的曲線擬合方法_第3頁
一種非線性函數的曲線擬合方法_第4頁
全文預覽已結束

下載本文檔

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

文檔簡介

1、 一種非線性函數的曲線擬合方法(函數公式: k = A*(Ta)*exp(E/T) )上一篇文章說了,函數的曲線擬合我以前沒做過,所以是摸著石頭過河,不知道所采用的方法是否合理,雖然是完成了擬合,不過我覺得自己采用的擬合方法還是比較原始的,希望做曲線擬合的朋友多多指教。原始數據如下:  T(K)                 K     200.00    

2、;        2.5069E-13   220.00            3.5043E-13   223.00            3.6741E-13   225.00        &#

3、160;   3.7904E-13   250.00            5.4617E-13   275.00            7.5744E-13   295.00            9.6192E-13

4、   298.00            9.9551E-13   300.00            1.0183E-12   325.00            1.3346E-12   350.00  &

5、#160;         1.7119E-12   375.00            2.1564E-12   400.00            2.6739E-12   425.00      

6、0;     3.2706E-12   450.00            3.9527E-12   475.00            4.7261E-12   480.00           

7、4.8922E-12   500.00            5.5968E-12   525.00            6.5710E-12   550.00            7.6544E-12   575.00

8、60;           8.8529E-12   600.00            1.0172E-11   800.00            2.5705E-11  1000.00     

9、       5.1733E-11  1250.00            1.0165E-10  目標:擬合成 k = A*(Ta)*exp(E/T) 模式的公式,其中A、a和E為未知常數,是我們需要通過曲線擬合要求出的數據。擬合目標中的公式是冪逼近和指數逼近的混合,用Matlab的cftool 工具箱的自定義函數來逼近,效果并不理想,所以我就參考了網上的一些博客和百度知道等資源,采取如下策略: 

10、;首先將非線性的擬合公式轉化為線性公式,再用求解線性方程組的矩陣方法求出未知常數的值。具體地說,擬合公式的線性化表達式為: log(k) = log(A) + a*log(T) + E/T 。這里有三個未知常數log(A)、a 和 E,則依次取T,K各三個數據,組成 N 個線性方程組:  Cx=b,其中:x=log(A),  a,  E,   C=1,  log(T),  1/T,    b=log(k) 。解這些線性方程組,得到所有方程組的解組成的解矩陣 xMat,其大小為 N*3,對解矩陣的

11、每一列求平均,即可得到所求的未知常數值。根據以上策略,可求得未知常數A、a和E的值如下:A = 3.8858e-020,a = 3.0595,E = -117.2915程序源碼:function A,a,E= fun_NLFit(T,K)% 函數 FUN_NLFIT() 根據輸入T,K的數據集,求出擬合公式 k = A*(Ta)*exp(E/T)% 的未知常數 A,a,E 。logT=log(T);logK=log(K);daoT=T.(-1);lenT=length(T);C=ones(3);xMat=;% 為了提高擬合精度,從第一個數據點開始,依次分別取T、K的三個相鄰的數據點% 組成線性

12、方程組,若 T 有 lenT 個元素,則可組成 lenT-2 個方程組for r=1:lenT-2    C(:,2)=logT(r:r+2);    C(:,3)=daoT(r:r+2);    b=logK(r:r+2);    % C=1 log(T) 1/T,   b=log(k)    x=(Cb)'    xMat=xMat;  x;   

13、; % 每解一次方程組,則將解 x 存入解矩陣 xMatend% 對解矩陣的每一列求平均,即可得到所求的未知常數值logA=mean(xMat(:,1);A=exp(logA);a=mean(xMat(:,2);E=mean(xMat(:,3);% 畫出由點集T、K構成的目標曲線h1=stem(T,K,'bo');  % bo表示每個點用一個小圓圈表示    set(h1,'MarkerFaceColor','green');  % 小圓圈內的顏色為綠色    set(h1,'LineStyle','none');     % 隱藏基線到點的連線    set(get(h1,'BaseLine'),'LineStyle','none'); % 隱藏基線    hold on;    % 保持由點集構成的目標曲線,以便和擬合曲線進行對比% 根據擬合公式,求出若干的擬合點,畫出擬合曲線t=200:10:1300;k

溫馨提示

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

評論

0/150

提交評論