qr.cpp

// ////////////////////////////////////////////////////////////////
// QR分解を用いて最小二乗解を求める
// ////////////////////////////////////////////////////////////////
#include <iostream>

#include <tnt_array1d.h>
#include <tnt_array1d_utils.h>
#include <tnt_array2d.h>
#include <tnt_array2d_utils.h>
#include <jama_qr.h>

int
main(int, char *[])
{
  TNT::Array2D<double> A(5, 4);
  A[0][0] = -2.0; A[0][1] =  1.0; A[0][2] =  2.0; A[0][3] =  4.0;
  A[1][0] = -3.0; A[1][1] =  1.0; A[1][2] =  2.0; A[1][3] =  2.0;
  A[2][0] =  1.0; A[2][1] = -2.0; A[2][2] = -3.0; A[2][3] = -2.0;
  A[3][0] = -4.0; A[3][1] =  1.0; A[3][2] =  3.0; A[3][3] =  2.0;
  A[4][0] = -5.0; A[4][1] =  0.0; A[4][2] = -5.0; A[4][3] =  4.0;
  std::cout << "A: " << std::endl;
  std::cout << A << std::endl;

  TNT::Array1D<double> b(5);
  b[0] = 1.0;
  b[1] = -7.0;
  b[2] = 10.0;
  b[3] = -8.0;
  b[4] = -3.0;
  std::cout << "b: " << std::endl;
  std::cout << b << std::endl;

  JAMA::QR<double> qr(A);
  std::cout << "solve: " << std::endl;
  std::cout << qr.solve(b) << std::endl;

  return 0;
}

TNTに対してThu Nov 13 00:45:17 2008に生成されました。  doxygen 1.5.7.1