Show
Ignore:
Timestamp:
09/21/11 20:35:02 (13 years ago)
Author:
sindj
Message:

Dodelavani toho zatracenyho samplingu. JS

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • applications/robust/robustlib.cpp

    r1384 r1395  
    210210                                        } 
    211211                                         
    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) 
    213213                                                                                 
     214                                        double value = 0; 
    214215                                        if(k!=0) 
    215                                         {        
    216                                                 double value = 0; 
     216                                        {                                                        
    217217                                                ivec control_vec = ivec(); 
    218218                                                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++) 
    220220                                                { 
    221                                                         double bracket_factor = 1/fact(a_order-1-k); 
     221                                                        double bracket_factor = 1/fact(k); 
    222222                                                          
    223223                                                        for(int j = 0;j<(*combi_ref).size();j++) 
     
    229229                                                                                                         
    230230                                                        value += bracket_factor*factor_multiplier*k_multiplier;                                                  
    231                                                 } 
    232  
    233                                                 simplex->insert_gamma(k,value,(*a_ref).first); 
    234                                                 gamma_facs[k] += value; 
     231                                                }                                                
    235232                                        } 
    236233                                        else 
    237234                                        { 
    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; 
    243240                                }                                
    244241                        } 
    245242 
    246243                        double int_value = 0; 
     244                        double volume = det_jacobian/fact(jacobian.rows()); 
    247245                        int gamma_size = (int)gamma_facs.size(); 
    248246                        if(sigma_order-gamma_size>=0) 
     
    250248                                for(int k = 0;k<gamma_size;k++) 
    251249                                {        
    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);                                 
    253251                                }        
    254252                        } 
     
    259257                         
    260258                        simplex->probability = int_value; 
     259                        simplex->volume = volume; 
    261260                        //cout << "Probability:" << int_value << endl; 
     261                        //pause(0.1); 
    262262                        return int_value;                
    263263                }