std::vector<double> &res_
57vector<Int4> intervals(0);
61 throw error(
"Error in alp_reg::find_tetta_general\n",4);
66 doubleh=(b_-a_)/n_partition_;
68 for(
i=0;
i<n_partition_;
i++)
73a_+
i*h,func_pointer_);
76res_.push_back(a_+
i*h);
92res_.push_back(a_+(
i+1)*h);
95 if((x1*x2<0)&&(
fabs(x1)>=eps_&&
fabs(x2)>=eps_))
97intervals.push_back(
i);
101 for(
i=0;
i<(
Int4)intervals.size();
i++)
107a_+(1+intervals[
i])*h,
112 sort(res_.begin(),res_.end());
119 void* func_pointer_,
127 throw error(
"Error in alp_reg::find_single_tetta_general\n",4);
154 doublex12=(x1+x2)/2;
160 if(
fabs(y12)<eps_)
185 Int4number_of_elements_)
188 if(number_of_elements_<=0)
190 throw error(
"Unexpected error",4);
194 doubleaverage_error=0;
196 for(
i=0;
i<number_of_elements_;
i++)
200 throw error(
"Error in the regression is less than 0",4);
203average_error+=errors_[
i];
206average_error/=(double)number_of_elements_;
210 if(average_error<=0)
216error_eps=average_error;
220 for(
i=0;
i<number_of_elements_;
i++)
224errors_[
i]=error_eps;
231 Int4number_of_elements_,
235 boolcut_right_tail_,
239 double&beta0_error_,
240 double&beta1_error_,
243 bool&res_was_calculated_)
246 if(number_of_elements_<2)
248 throw error(
"Unexpected error\n",4);
257 Int4k1_start,k1_end;
258 Int4k2_start,k2_end;
260 if(cut_left_tail_&&cut_right_tail_)
263k1_end=number_of_elements_-1;
266k2_end=number_of_elements_-1;
271 if(cut_left_tail_&&!cut_right_tail_)
274k1_end=number_of_elements_-1;
276k2_start=number_of_elements_-1;
277k2_end=number_of_elements_-1;
282 if(!cut_left_tail_&&cut_right_tail_)
288k2_end=number_of_elements_-1;
295k2_start=number_of_elements_-1;
296k2_end=number_of_elements_-1;
302 Int4k1_opt=0,k2_opt=0;
304 doublefunc_opt=DBL_MAX;
307 doublebeta0_opt_error=0;
308 doublebeta1_opt_error=0;
313res_was_calculated_=
false;
316 for(k1=k1_start;k1<=k1_end;k1++)
321 doublebeta0_opt_tmp,beta1_opt_tmp,beta0_opt_error_tmp,beta1_opt_error_tmp;
322 boolres_was_calculated;
338 if(
tmp<func_opt&&res_was_calculated)
341beta0_opt=beta0_opt_tmp;
342beta1_opt=beta1_opt_tmp;
343beta0_opt_error=beta0_opt_error_tmp;
344beta1_opt_error=beta1_opt_error_tmp;
347res_was_calculated_=
true;
356 if(res_was_calculated_)
360beta0_error_=beta0_opt_error;
361beta1_error_=beta1_opt_error;
372 Int4number_of_elements_,
377 double&beta0_error_,
378 double&beta1_error_,
379 bool&res_was_calculated_)
392 for(
i=0;
i<number_of_elements_;
i++)
396 double tmp=1.0/(errors_[
i]*errors_[
i]);
399a12+=(double)(k_start_+
i)*
tmp;
400a22+=(double)((k_start_+
i)*(k_start_+
i))*
tmp;
401y1+=values_[
i]*
tmp;
402y1_error+=
tmp*
tmp*errors_[
i]*errors_[
i];
403y2+=(double)(k_start_+
i)*values_[
i]*
tmp;
404y2_error+=(double)(k_start_+
i)*(double)(k_start_+
i)*
tmp*
tmp*errors_[
i]*errors_[
i];
414 doubleden=a11*a22-a21*a12;
415 if(
fabs(den)<=eps)
417res_was_calculated_=
false;
422res_was_calculated_=
true;
425beta0_=(y1*a22-a12*y2)/den;
426beta1_=(a11*y2-a21*y1)/den;
428beta0_error_=sqrt(y1_error*y1_error*a22*a22+a12*a12*y2_error*y2_error)/den;
429beta1_error_=sqrt(a11*a11*y2_error*y2_error+a21*a21*y1_error*y1_error)/den;
433 for(
i=0;
i<number_of_elements_;
i++)
437 double tmp=(beta0_+beta1_*(
i+k_start_)-values_[
i])/errors_[
i];
447 Int4number_of_elements_,
451 boolcut_right_tail_,
455 double&beta0_error_,
459 bool&res_was_calculated_)
468 Int4k1_start,k1_end;
469 Int4k2_start,k2_end;
471 if(cut_left_tail_&&cut_right_tail_)
474k1_end=number_of_elements_-1;
477k2_end=number_of_elements_-1;
482 if(cut_left_tail_&&!cut_right_tail_)
485k1_end=number_of_elements_-1;
487k2_start=number_of_elements_-1;
488k2_end=number_of_elements_-1;
493 if(!cut_left_tail_&&cut_right_tail_)
499k2_end=number_of_elements_-1;
506k2_start=number_of_elements_-1;
507k2_end=number_of_elements_-1;
513 Int4k1_opt = 0, k2_opt = 0;
515 doublefunc_opt=DBL_MAX;
516 doublebeta0_opt = 0.0;
517 doublebeta0_opt_error = 0.0;
521res_was_calculated_=
false;
524 for(k1=k1_start;k1<=k1_end;k1++)
527 for(k2=
alp_data::Tmax(k1,k2_start)+min_length_;k2<=k2_end;k2++)
529 doublebeta0_opt_tmp,beta1_opt_tmp,beta0_opt_error_tmp,beta1_opt_error_tmp;
530 boolres_was_calculated;
532beta1_opt_tmp=beta1_;
533beta1_opt_error_tmp=beta1_error_;
547 if(
tmp<func_opt&&res_was_calculated)
550beta0_opt=beta0_opt_tmp;
551beta0_opt_error=beta0_opt_error_tmp;
554res_was_calculated_=
true;
560 if(res_was_calculated_)
563beta0_error_=beta0_opt_error;
574 Int4number_of_elements_,
579 double&beta0_error_,
581 bool&res_was_calculated_)
590 for(
i=0;
i<number_of_elements_;
i++)
594 double tmp=1.0/(errors_[
i]*errors_[
i]);
597y1+=(values_[
i]-(double)(k_start_+
i)*beta1_)*
tmp;
598 doubleerror_tmp=errors_[
i]*errors_[
i]+(double)(k_start_+
i)*(double)(k_start_+
i)*beta1_error_*beta1_error_;
599y1_error+=
tmp*
tmp*error_tmp;
603y1_error=sqrt(y1_error);
605 doubleeps=1e-10*
fabs(a11);
608 if(
fabs(den)<=eps)
610res_was_calculated_=
false;
615res_was_calculated_=
true;
620beta0_error_=y1_error/den;
624 for(
i=0;
i<number_of_elements_;
i++)
628 double tmp=(beta0_+beta1_*(
i+k_start_)-values_[
i])/errors_[
i];
641 if(v1_error_>=1e100||v1_<=0)
654 if(v1_error_>=1e100||v1_<0)
674 if(v1_error_>=1e100||v2_error_>=1e100)
684 if(v1_==0&&v1_error_==0)
691 if(((v2_+v2_error_)*v2_<=0))
693 doublea3=(v1_+v1_error_)/(v2_-v2_error_);
694 doublea4=(v1_-v1_error_)/(v2_-v2_error_);
698 if(((v2_-v2_error_)*v2_<=0))
700 doublea1=(v1_+v1_error_)/(v2_+v2_error_);
701 doublea2=(v1_-v1_error_)/(v2_+v2_error_);
706 doublea1=(v1_+v1_error_)/(v2_+v2_error_);
707 doublea2=(v1_-v1_error_)/(v2_+v2_error_);
708 doublea3=(v1_+v1_error_)/(v2_-v2_error_);
709 doublea4=(v1_-v1_error_)/(v2_-v2_error_);
720 if(v1_error_>=1e100||v2_error_>=1e100)
725 doublea1=(v1_+v1_error_)*(v2_+v2_error_);
726 doublea2=(v1_-v1_error_)*(v2_+v2_error_);
727 doublea3=(v1_+v1_error_)*(v2_-v2_error_);
728 doublea4=(v1_-v1_error_)*(v2_-v2_error_);
742 if(v1_error_>=1e100||v2_error_>=1e100)
747 returnsqrt(v1_error_*v1_error_+v2_error_*v2_error_);
754vector<double> array_vect(dim_);
756 for(
i=0;
i<dim_;
i++)
758array_vect[
i]=array_[
i];
760 sort(array_vect.begin(),array_vect.end());
764 return0.5*(array_vect[k-1]+array_vect[k]);
769 returnarray_vect[k];
784 throw error(
"Unexpected error\n",4);
787 boolee_error_flag=
false;
788 erroree_error(
"",0);
796remove_flag=
new bool[dim];
798 for(
i=0;
i<dim;
i++)
800remove_flag[
i]=
true;
808vector<pair<double,Int4> > array_vect(dim);
810 for(
i=0;
i<dim;
i++)
812pair<double,Int4>
P;
813 P.first=-
fabs(values[
i]-med_val);
818 sort(array_vect.begin(),array_vect.end());
820 for(
i=0;
i<N_points;
i++)
822remove_flag[array_vect[
i].second]=
false;
827 for(
i=0;
i<dim;
i++)
829 if(remove_flag[
i])
835res/=(double)(dim-N_points);
841ee_error_flag=
true;
847ee_error_flag=
true;
848ee_error=
error(
"Internal error in the program\n",4);
855 delete[]remove_flag;remove_flag=
NULL;
static double round(const double &x_)
static T Tmax(T i_, T j_)
static T Tmin(T i_, T j_)
static void assert_mem(void *pointer_)
static double sqrt_for_errors(double x_)
static double function_for_robust_regression_sum_with_cut_LSM_beta1_is_defined(double *values_, double *errors_, Int4 number_of_elements_, Int4 k_start_, double c_, double &beta0_, double beta1_, double &beta0_error_, double beta1_error_, bool &res_was_calculated_)
static double error_of_the_product(double v1_, double v1_error_, double v2_, double v2_error_)
static double error_of_the_sum(double v1_, double v1_error_, double v2_, double v2_error_)
static double median(Int4 dim_, double *array_)
static void robust_regression_sum_with_cut_LSM(Int4 min_length_, Int4 number_of_elements_, double *values_, double *errors_, bool cut_left_tail_, bool cut_right_tail_, double y_, double &beta0_, double &beta1_, double &beta0_error_, double &beta1_error_, Int4 &k1_opt_, Int4 &k2_opt_, bool &res_was_calculated_)
static double robust_sum(double *values, Int4 dim, Int4 N_points, bool *&remove_flag)
static double error_of_the_lg(double v1_, double v1_error_)
static double error_of_the_sqrt(double v1_, double v1_error_)
static double function_for_robust_regression_sum_with_cut_LSM(double *values_, double *errors_, Int4 number_of_elements_, Int4 k_start_, double c_, double &beta0_, double &beta1_, double &beta0_error_, double &beta1_error_, bool &res_was_calculated_)
static void robust_regression_sum_with_cut_LSM_beta1_is_defined(Int4 min_length_, Int4 number_of_elements_, double *values_, double *errors_, bool cut_left_tail_, bool cut_right_tail_, double y_, double &beta0_, double beta1_, double &beta0_error_, double beta1_error_, Int4 &k1_opt_, Int4 &k2_opt_, bool &res_was_calculated_)
static void find_tetta_general(function_type *func_, void *func_pointer_, double a_, double b_, Int4 n_partition_, double eps_, std::vector< double > &res_)
static void correction_of_errors(double *errors_, Int4 number_of_elements_)
static double error_of_the_ratio(double v1_, double v1_error_, double v2_, double v2_error_)
static double find_single_tetta_general(function_type *func_, void *func_pointer_, double a_, double b_, double eps_)
int32_t Int4
4-byte (32-bit) signed integer
constexpr auto sort(_Init &&init)
double function_type(double x_, void *func_number_)
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4