#ifndef POL_LR_H_ #define POL_LR_H_ #include "common.h" #include "Utils.h" #include "matrix_inverse.h" #include //(A^TA)^(-1)A^TY struct pol_lr{//theta + theta0*logx+ theta1*x + theta2* x^2 + theta3 * e^x double alpha; double theta1; double theta2; void caltheta(double x[], double y[], int m){ double **matrix=new double*[m]; for(int i=0;i0.01){ matrix[i][1]=log2(x[i]); } else{ matrix[i][1]=0.0; } */ matrix[i][1]=x[i]; matrix[i][2]=x[i]*x[i]; //matrix[i][3]=x[i]*x[i]; } double **result=new double*[3]; for(int i=0;i<3;i++){ result[i]= new double[1]; } double **ATA_reverse2=new double*[3]; for(int i=0;i<3;i++){ ATA_reverse2[i]= new double[3]; } double **ATA=new double*[3]; for(int i=0;i<3;i++){ ATA[i]= new double[3]; } double ATA2 [9]={0}; double **AT=new double*[3]; for(int i=0;i<3;i++){ AT[i]= new double[m]; } double **ATA_reverseAT=new double*[3]; for(int i=0;i<3;i++){ ATA_reverseAT[i]= new double[m]; } AT=mat_T(3,m,matrix); ATA=multi(3,m,3,AT,matrix); for(int i=0;i<3;i++){ for(int j=0;j<3;j++){ ATA2[i*3+j] = ATA[i][j]; } } /* for(int i=0;i<3;i++){ for(int j=0;j<3;j++){ std::cout<