權因子

權因子

在進行抗差估計時,必須根據殘差計算等價權因子,簡稱權因子。

權因子是觀測殘差的一個分段函式,目前常用的是三段函式,當殘差的絕對值小於界值k0時,等價權因子取值為1;當殘差的絕對值大於界值k0小於界值k1時,等價權因子在區間(0,1)取值;當殘差絕對值大於界值k0時,等價權因子取值為0。

基本介紹

  • 中文名:權因子
  • 外文名:weighting factor
計算公式,Huber函式,IGG1函式,IGG3函式,函式原型,函式原始碼,

計算公式

關於權因子函式的定義,在實際套用中有太多的形式,此處選取了目前在測量平差中套用較廣的Huber函式、IGG1函式和IGG3函式,設計了統一的等價權因子計算函式,取名為Wi

Huber函式

IGG1函式

IGG3函式

函式原型

double Wi(int fname,double v,double k0,double k1);
fname——權因子函式選擇變數,0、1、2分別對應IGG1函式、IGG3函式、Huber函式;
v——權因子函式的自變數;
ko——保權臨界值,即等價權公式中的k0
k1——零權臨界值,即等價權公式中的k1
返回值——等價權因子。

函式原始碼

#defme IGG1 0
#define IGG3 1
#define Huber 2
double Wi(int fname,double v,double k0,double k1)
{
double a:
switch(fname)
{
case IGG1://IGG1函式
v=fabs(v);
if(v<=k0)return 1.0;
if(v>k1)return 0.0;
return k0/v;
case IGG3://IGG3 函式
v=fabs(v);
if(v<=k0)return 1.0;
if(v>k1)return 0.0;
a=(k1-v)/(k1-k0);
return k0/v*a*a;
case Huber://Huber函式
v=fabs(v);
if(v<=k0)return 1.0;
return k0/v;
default:
MyBreak(”等價權函式名稱錯誤!”);
return 1.0;
}
}
說明:為了便於記憶,程式中將IGG1、IGG3、Huber分別定義成三個,這樣可以用IGG1、IGG3或Huber作為實在參數調用Wi函式。

相關詞條

熱門詞條

聯絡我們