/*--------------------------------------------------------------------------------
QR分解を用いた最小二乗法
least square method using QR decomposition
least_sq.c
--------------------------------------------------------------------------------*/
#include "least_sq.h"
int main( void )
{
int i;
// y = X * A
double A[COL_NUM]; // パラメータ, parameter
double y[ROW_NUM];
double X[ROW_NUM][COL_NUM];
/*----------------------------------------------------------------------*/
// y = X * A
// correct values of A
// A[0] = 1.0
// A[1] = 2.0
y[0] = 3.0;
y[1] = (double)DELTA;
y[2] = 2.0 * DELTA;
X[0][0] = 1.0; X[0][1] = 1.0;
X[1][0] = (double)DELTA; X[1][1] = 0.0;
X[2][0] = 0.0; X[2][1] = (double)DELTA;
/*----------------------------------------------------------------------*/
if ( least_sq_with_QR_decomp( y, X, A ) != 0 ){
printf("# least_sq_with_QR_decomp cannot be done.\n");
return -1;
}
printf("----------------------------------------------------\n");
printf(" number of rows: %d\n", (int)ROW_NUM);
printf(" number of columns: %d\n", (int)COL_NUM );
printf(" DELTA: %g\n", (double)DELTA );
printf("----------------------------------------------------\n");
for( i = 0; i < COL_NUM; i++ ){
printf(" A%d: %.10lf\n", i, A[i] );
}
printf("----------------------------------------------------\n");
return 0;
}