MTL LU 分解示例

//-*-c++-*-----------------------------------------------------------------
//
//  A simple LU factorization algorithm written using MTL
//  The example matrix is the same as the getrf example, which
//  is the LAPACK version of LU factorization.
//
//-------------------------------------------------------------------------

#include "mtl/lu.h"
#include "mtl/matrix.h"
#include "mtl/dense1D.h"
#include "mtl/utils.h"

/*
  Sample output:
 
  3x3
  [
  [1,2,2],
  [2,1,2],
  [2,2,1]
  ]
  3x3
  [
  [2,1,2],
  [0.5,1.5,1],
  [1,0.666667,-1.66667]
  ]
  [2,2,3,]

也就是,
pivot =
[2,0,0,]
[0,2,0,]
[0,0,3,]

L=
[2*2,0,0],
[0.5,1.5*2,0],
[1,0.666667,-1.66667*3]

U=
  [1,1,2],
  [0,1,1],
  [0,0.666667,1]
 
 

 
  */

int
main()
{
  using namespace mtl;
  //begin
  typedef matrix<double,
                 rectangle<>,
                 dense<external>,
                 column_major>::type Matrix;

  const Matrix::size_type N = 3;
  double da [] = { 1, 2, 2, 2, 1, 2, 2, 2, 1 };

  Matrix A(da, N, N);
  dense1D<int> pivots(N, 0);
  //end
  print_all_matrix(A);
  //begin
  lu_factor(A, pivots);
  //end
  print_all_matrix(A);

  print_vector(pivots);

  return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值