Changeset 1395 for applications/robust/robustlib.cpp
- Timestamp:
- 09/21/11 20:35:02 (13 years ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
applications/robust/robustlib.cpp
r1384 r1395 210 210 } 211 211 212 double factor_multiplier = pow((double)-1,k)/pow((*a_ref).first,sigma_order- k);//pow((double)-1,k+1)212 double factor_multiplier = pow((double)-1,k)/pow((*a_ref).first,sigma_order-a_order+k+1);//pow((double)-1,k+1) 213 213 214 double value = 0; 214 215 if(k!=0) 215 { 216 double value = 0; 216 { 217 217 ivec control_vec = ivec(); 218 218 control_vec.ins(0,my_emlig->number_of_parameters-a_order+1); 219 for(multiset<my_ivec>::iterator combi_ref = this->my_emlig->correction_factors[ k-1].begin();combi_ref!=this->my_emlig->correction_factors[k-1].upper_bound(my_ivec(control_vec));combi_ref++)219 for(multiset<my_ivec>::iterator combi_ref = this->my_emlig->correction_factors[a_order-k-1].begin();combi_ref!=this->my_emlig->correction_factors[a_order-k-1].upper_bound(my_ivec(control_vec));combi_ref++) 220 220 { 221 double bracket_factor = 1/fact( a_order-1-k);221 double bracket_factor = 1/fact(k); 222 222 223 223 for(int j = 0;j<(*combi_ref).size();j++) … … 229 229 230 230 value += bracket_factor*factor_multiplier*k_multiplier; 231 } 232 233 simplex->insert_gamma(k,value,(*a_ref).first); 234 gamma_facs[k] += value; 231 } 235 232 } 236 233 else 237 234 { 238 double value = k_multiplier*factor_multiplier/fact(a_order-1);239 240 simplex->insert_gamma(0,value,(*a_ref).first); 241 gamma_facs[0] += value;242 }235 value = k_multiplier*factor_multiplier; 236 } 237 238 simplex->insert_gamma(k,value,(*a_ref).first); 239 gamma_facs[k] += value; 243 240 } 244 241 } 245 242 246 243 double int_value = 0; 244 double volume = det_jacobian/fact(jacobian.rows()); 247 245 int gamma_size = (int)gamma_facs.size(); 248 246 if(sigma_order-gamma_size>=0) … … 250 248 for(int k = 0;k<gamma_size;k++) 251 249 { 252 int_value += det_jacobian*fact(sigma_order-gamma_size+k)/fact(jacobian.rows())*gamma_facs[k]/pow(2.0,sigma_order);250 int_value += volume*fact(sigma_order+k)*gamma_facs[k]/pow(2.0,((toprow*)this)->condition_order); 253 251 } 254 252 } … … 259 257 260 258 simplex->probability = int_value; 259 simplex->volume = volume; 261 260 //cout << "Probability:" << int_value << endl; 261 //pause(0.1); 262 262 return int_value; 263 263 }