Show
Ignore:
Timestamp:
04/12/11 18:11:50 (13 years ago)
Author:
sindj
Message:

Pokracuji v dodelavani samplovani, problem se zapornymi vahami pred gamma rozdelenimi sigmy. JS

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • applications/robust/robustlib.cpp

    r1324 r1325  
    9797 
    9898                        emlig* current_emlig; 
     99                        simplex->gamma_parameters.clear(); 
     100                        simplex->gamma_sum = 0; 
    99101 
    100102                        if(this->my_emlig!=NULL) 
     
    250252                                        } 
    251253                                         
    252                                 }        
    253  
    254                                  
    255  
    256                                 double bracket = fact(sigma_order)/fact(as1_order-1)/pow(a_0-(*as_ref).first,sigma_order+1); 
     254                                } 
     255                                 
     256                                                                 
     257 
     258                                double bracket = fact(as1_order-1)/pow(a_0-(*as_ref).first,sigma_order+1); 
     259                                 
     260                                simplex->gamma_sum += bracket*multiplier; 
     261                                 
     262                                multimap<double,double> map; 
     263                                simplex->gamma_parameters.push_back(map); 
     264                                simplex->gamma_parameters[0].insert(pair<double,double>(bracket*multiplier,a_0-(*as_ref).first)); 
     265 
     266                                bracket *= fact(sigma_order); 
     267 
    257268                                for(int k = 0;k < as1_order-1;k++) 
    258269                                { 
    259                                         double bracket_factor = -pow((double)-1,k+1)*fact(sigma_order-k)/fact(as1_order-1-k)/pow(a_0-(*as_ref).first,sigma_order-k); 
     270                                        double local_bracket = 0; 
     271                                        double bracket_factor = -pow((double)-1,k+1)/fact(as1_order-1-k)/pow(a_0-(*as_ref).first,sigma_order-k); 
    260272                                         
    261273                                        ivec control_vec = ivec(); 
    262                                         control_vec.ins(0,my_emlig->number_of_parameters-as1_order+1);           
    263                                          
     274                                        control_vec.ins(0,my_emlig->number_of_parameters-as1_order+1);                                   
    264275                                         
    265276                                        for(multiset<my_ivec>::iterator combi_ref = this->my_emlig->correction_factors[k].begin();combi_ref!=this->my_emlig->correction_factors[k].upper_bound(my_ivec(control_vec));combi_ref++) 
     
    271282                                                         
    272283                                                        bracket_combination /= factors[(*combi_ref)[j]-1]; 
    273                                                 } 
    274  
    275                                                 bracket+=bracket_factor*bracket_combination;                                                                     
    276                                         }                                                                        
    277                                 } 
    278  
    279                                  
     284                                                }                                                
     285                                                                                                 
     286                                                local_bracket += bracket_factor*bracket_combination;                                                                     
     287                                        } 
     288 
     289                                        simplex->gamma_sum += local_bracket*multiplier; 
     290                                         
     291                                        if(simplex->gamma_parameters.size()<=k+1) 
     292                                        { 
     293                                                multimap<double,double> loc_map; 
     294                                                simplex->gamma_parameters.push_back(loc_map); 
     295                                        } 
     296 
     297                                        simplex->gamma_parameters[k+1].insert(pair<double,double>(local_bracket*multiplier,a_0-(*as_ref).first)); 
     298 
     299                                        bracket += local_bracket*fact(sigma_order-k); 
     300                                }                                
    280301 
    281302                                int_value += multiplier*bracket; 
     
    283304                        } 
    284305 
    285                          
    286                         correction_term *= fact(sigma_order)/abs(pow(a_0,sigma_order+1)); 
    287  
    288                         // cout << c << int_value << endl; 
     306                        double correction_term_base = correction_term/pow(a_0,sigma_order+1); 
     307 
     308                        simplex->gamma_sum += correction_term_base; 
     309                        simplex->gamma_parameters[0].insert(pair<double,double>(correction_term_base,a_0)); 
     310 
     311                        correction_term = fact(sigma_order)*correction_term_base; 
     312 
     313                        //cout << c << int_value << endl; 
    289314 
    290315                        int_value += correction_term; 
    291316                 
    292317 
    293                         // cout << "Probability:" << int_value << endl; 
    294                         // pause(0.100); 
     318                        //cout << "Probability:" << int_value << endl; 
     319                        //pause(0.100); 
    295320 
    296321                        simplex->probability = int_value;