📄 rank_1_symm_sparse.cc
字号:
#include "mtl/matrix.h"#include "mtl/mtl.h"#include "mtl/utils.h"#include "mtl/linalg_vec.h" /* Expected output: Matrix A:3x3[[100,200,300],[200,400,500],[300,500,600]]Vector X:[1,2,3,]a * x * x^T + A:3x3[[101,202,303],[202,404,506],[303,506,609]]*/using namespace mtl;typedef matrix< double , symmetric<lower>, compressed<int,external, index_from_one>, column_major>::type Matrix;typedef dense1D<double> Vec; intmain(){ const int N = 3; const double alpha = 1; // 100 200 300 1 // A = 200 400 500 x = 2 // 300 500 600 3 double values[] = { 100, 200, 300, 200, 400, 500, 300, 300, 600 }; int ptrs[] = { 1, 4, 7, 10}; int indices[] = { 1, 2, 3, 1, 2, 3, 1, 2, 3}; Matrix A(N, N, N*N, values, ptrs, indices); Vec y(N),x(N); //initialize X for (int i=0;i<N;++i) x[i]=i+1; //print a x y std::cout << "Matrix A:" << std::endl; print_all_matrix(A); std::cout << "Vector X:" << std::endl; print_vector(x); //do the update rank_one_update(A, scaled(x, alpha), x); //print result std::cout << "a * x * x^T + A:"; print_all_matrix(A);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -