99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁精彩閱讀最小二乘法線性擬合和2次曲線擬合算法
最小二乘法線性擬合和2次曲線擬合算法
2018-06-23
收藏

最小二乘法線性擬合和2次曲線擬合算法

最近由于項(xiàng)目要求,應(yīng)用了最小二乘法線性擬合和2次曲線擬合算法,現(xiàn)總結(jié)如下:

最小二乘法線性擬合應(yīng)用已有的采樣時(shí)間點(diǎn),再現(xiàn)這些點(diǎn)所描述的線性變化,即求出一個(gè)線性方程y=ax+b(這個(gè)算法的主要問題也就是如何用給定的數(shù)據(jù)求線性方程系數(shù)a和b)

//最小二乘法線性擬合,線性方程求系數(shù),Xval時(shí)間數(shù)據(jù),Yval每個(gè)時(shí)間點(diǎn)上的值數(shù)據(jù),n數(shù)據(jù)的個(gè)數(shù),Aval線性方程系數(shù)a,Bval線性方程系數(shù)b
BOOL DlgDataAnalyse::TwoCurveCompose(double *Xval,double *Yval,long n,double *Aval,double *Bval)
{
 double mX,mY,mXX,mXY;
 mX=mY=mXX=mXY=0;
 for (int i=0;i  {
  mX+=Xval[i];
  mY+=Yval[i];
  mXX+=Xval[i]*Xval[i];
  mXY+=Xval[i]*Yval[i];
 }
 if(mX*mX-mXX*n==0)return FALSE;
 *Aval=(mY*mX-mXY*n)/(mX*mX-mXX*n);
 *Bval=(mY-mX*(*Aval))/n;
 return TRUE;
}
最小二乘法2次曲線擬合應(yīng)用已有的采樣時(shí)間點(diǎn),再現(xiàn)這些點(diǎn)所描述的2次曲線的變化,即求出一個(gè)二次曲線方程y=ax2+bx+c (這個(gè)算法的主要問題也就是如何用給定的數(shù)據(jù)求方程系數(shù)abc)

今天使用擬合的最小二乘法,求出了給定的一組坐標(biāo)系上的點(diǎn)對(duì)最接近的直線的。
  其具體理論如下:
   在科學(xué)實(shí)驗(yàn)數(shù)據(jù)處理中,往往要根據(jù)一組給定的實(shí)驗(yàn)數(shù)據(jù),求出自變量x與因變量y的函數(shù)關(guān)系,這是為待定參數(shù),由于觀測(cè)數(shù)據(jù)總有誤差,且待定參數(shù)ai的數(shù)量比給定數(shù)據(jù)點(diǎn)的數(shù)量少(即n<m),因此它不同于插值問題.這類問題不要求通過點(diǎn),而只要求在給定點(diǎn)上的誤差的平方和最小.當(dāng)時(shí),即
         (5.8.1)
這里是線性無關(guān)的函數(shù)族,假定在上給出一組數(shù)據(jù),以及對(duì)應(yīng)的一組權(quán),這里為權(quán)系數(shù),要求使最小,其中
           (5.8.2)

這就是最小二乘逼近,得到的擬合曲線為y=s(x),這種方法稱為曲線擬合的最小二乘法.
  (5.8.2)中實(shí)際上是關(guān)于的多元函數(shù),求I的最小值就是求多元函數(shù)I的極值,由極值必要條件,可得
      (5.8.3)
根據(jù)內(nèi)積定義(見第三章)引入相應(yīng)帶權(quán)內(nèi)積記號(hào)
             (5.8.4)
則(5.8.3)可改寫為
     
這是關(guān)于參數(shù)的線性方程組,用矩陣表示為
            (5.8.5)
(5.8.5)稱為法方程.當(dāng)線性無關(guān),且在點(diǎn)集上至多只有n個(gè)不同零點(diǎn),則稱在X上滿足Haar條件,此時(shí)(5.8.5)的解存在唯一(證明見[3]).記(5.8.5)的解為
         
從而得到最小二乘擬合曲線
          (5.8.6)
可以證明對(duì),有
     
故(5.8.6)得到的即為所求的最小二乘解.它的平方誤差為
                  (5.8.7)
均方誤差為
          
  在最小二乘逼近中,若取,則,表示為
             (5.8.8)
此時(shí)關(guān)于系數(shù)的法方程(5.8.5)是病態(tài)方程,通常當(dāng)n≥3時(shí)都不直接取作為基。

//最小二乘法二次曲線擬合算法,Xval時(shí)間數(shù)據(jù),Yval每個(gè)時(shí)間點(diǎn)上的值數(shù)據(jù),M代表幾次曲線(如:2次的話就是3),N數(shù)據(jù)的個(gè)數(shù),A二次曲線方程的系數(shù)(A[2]代表a,A[1]代表b,A[0]代表c)
BOOL DlgDataAnalyse::CalculateCurveParameter(double *Xval,double *Yval,long M,long N,double *A)
{
 //X,Y --  X,Y兩軸的坐標(biāo)
 //M   --  次數(shù),表示幾次曲線
 //N   --  采樣數(shù)目
 //A   --  結(jié)果參數(shù)
 
 register long i,j,k;
 double Z,D1,D2,C,P,G,Q;
 CDoubleArray B,T,S;
 B.SetSize(N);
 T.SetSize(N);
 S.SetSize(N);
 if(M>N)M=N;
 for(i=0;i   A[i]=0;
 Z=0;
 B[0]=1;
 D1=N;
 P=0;
 C=0;
 for(i=0;i  {
  P=P+Xval[i]-Z;
  C=C+Yval[i];
 }
 C=C/D1;
 P=P/D1;
 A[0]=C*B[0];
 if(M>1)
 {
  T[1]=1;
  T[0]=-P;
  D2=0;
  C=0;
  G=0;
  for(i=0;i   {
   Q=Xval[i]-Z-P;
   D2=D2+Q*Q;
   C=Yval[i]*Q+C;
   G=(Xval[i]-Z)*Q*Q+G;
  }
  C=C/D2;
  P=G/D2;
  Q=D2/D1;
  D1=D2;
  A[1]=C*T[1];
  A[0]=C*T[0]+A[0];
 }
 for(j=2;j  {
  S[j]=T[j-1];
  S[j-1]=-P*T[j-1]+T[j-2];
  if(j>=3)
  {
   for(k=j-2;k>=1;k--)
    S[k]=-P*T[k]+T[k-1]-Q*B[k];
  }
  S[0]=-P*T[0]-Q*B[0];
  D2=0;
  C=0;
  G=0;
  for(i=0;i   {
   Q=S[j];
   for(k=j-1;k>=0;k--)
    Q=Q*(Xval[i]-Z)+S[k];
   D2=D2+Q*Q;
   C=Yval[i]*Q+C;
   G=(Xval[i]-Z)*Q*Q+G;
  }
  C=C/D2;
  P=G/D2;
  Q=D2/D1;
  D1=D2;
  A[j]=C*S[j];
  T[j]=S[j];
  for(k=j-1;k>=0;k--)
  {
   A[k]=C*S[k]+A[k];
   B[k]=T[k];
   T[k]=S[k];
  }
 }
 return TRUE;
}

數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼

若不方便掃碼,搜微信號(hào):CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對(duì)象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺(tái)檢測(cè)極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請(qǐng)參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請(qǐng)輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請(qǐng)輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }