当前位置:网站首页>Eigen sparse matrix operation
Eigen sparse matrix operation
2022-07-06 06:03:00 【Zhan Miao】
In many applications ( for example , The finite element method ), Usually deal with very large matrices , Among them, only a few coefficients are not zero . under these circumstances , You can reduce memory consumption and improve performance by using a dedicated representation that stores only non-zero coefficients . Such a matrix is called sparse matrix .
1. Sparse matrix module
modular | Content | |
#include <Eigen/SparseCore> | SparseMatrix and SparseVector class 、 matrix assemble 、 Basic sparse linear algebra ( Including sparse triangle solver ) | |
#include <Eigen/SparseCholesky> | Directly use sparse LLT and LDLT Cholesky Decomposition to solve the sparse self adjoint positive definite problem | |
#include<Eigen/SparseLU> | sparse LU Decomposition to solve the general square sparse system | |
#include<Eigen/SparseQR | Sparse for solving sparse linear least squares problem QR decompose | |
#include <Eigen/IterativeLinearSolvers> | Iterative solver for solving large general linear square problems ( Including the self adjoint positive definite problem ) | |
#include <Eigen/Sparse> | Including all the above modules |
2. Sparse matrix format
SparseMatrix Class is Eigen The main sparse matrix representation of the sparse module ; It provides high performance and low memory usage . It implements widely used compressed columns ( Or yes ) A more general variant of the storage scheme . It consists of four compact arrays :
Values: Store non-zero coefficient values .
InnerIndices: Store non-zero rows ( Or column ) Indexes .
OuterStarts: For each column ( Or yes ) Store the first non-zero index in the first two arrays .
InnerNNZs: Store each column ( Corresponding line ) Nonzero number of . inner It refers to an internal vector , It is the column of the column master matrix , Or row of the row master matrix . The word external refers to the other direction .
at present , The elements of a given internal vector are always sorted by adding an internal index . “_” Represents the available space to quickly insert new elements . Assume no reallocation , The insertion of random elements is therefore in O(nnz_j) in , among nnz_j Is the nonzero number of the corresponding internal vector . On the other hand , It is more efficient to insert elements with increased internal indexes into a given internal vector , Because this only needs to increase the corresponding InnerNNZs entry , namely O(1) operation .
The case of no available space is a special case , Called compression mode . It corresponds to the widely used compressed column ( Or yes ) Storage plan (CCS or CRS). By calling SparseMatrix::makeCompressed() function , Any SparseMatrix Convert to this form . under these circumstances , It can be noted that InnerNNZs An array with the OuterStarts It's redundant , Because our equation :InnerNNZs[j] = OuterStarts[j+1]-OuterStarts[j]. therefore , Actually call SparseMatrix::makeCompressed() This buffer will be released .
reference
Eigen course 3 - Sparse matrix operation _xuezhisdc The blog of -CSDN Blog _eigen sparse matrix
边栏推荐
- ContentType的作用
- IPv6 comprehensive experiment
- Auto. JS learning notes 17: basic listening events and UI simple click event operations
- YYGH-11-定时统计
- C language bubble sort
- [Jiudu OJ 07] folding basket
- Buuctf-[[gwctf 2019] I have a database (xiaoyute detailed explanation)
- [course notes] Compilation Principle
- 【无标题】
- P问题、NP问题、NPC问题、NP-hard问题详解
猜你喜欢

Web服务连接器:Servlet

What are the test sites for tunnel engineering?

Investment strategy discussion and market scale prediction report of China's solid state high power amplifier industry from 2022 to 2028

Seven imperceptible truths in software testing

请求转发与重定向

Mysql database master-slave cluster construction

Wib3.0 leapfrogging, in leapfrogging (ง • ̀_•́) ง

Network protocol model

Usage of test macro of GTEST

Node 之 nvm 下载、安装、使用,以及node 、nrm 的相关使用
随机推荐
2022 software testing workflow to know
H3C V7 switch configuration IRF
H3C S5820V2_5830V2交换机IRF2堆叠后升级方法
Download, install and use NVM of node, and related use of node and NRM
华为BFD的配置规范
Li Chuang EDA learning notes 12: common PCB board layout constraint principles
P2802 go home
CoDeSys note 2: set coil and reset coil
Station B Liu Erden linear regression pytoch
[leetcode] day96 - the first unique character & ransom letter & letter ectopic word
在线问题与离线问题
Mysql database master-slave cluster construction
The ECU of 21 Audi q5l 45tfsi brushes is upgraded to master special adjustment, and the horsepower is safely and stably increased to 305 horsepower
H3C firewall rbm+vrrp networking configuration
Introduction to promql of # yyds dry goods inventory # Prometheus
High quality coding tool clion
单元测试的意义
ContentType的作用
A complete collection of necessary learning websites for office programmers
Usage of test macro of GTEST