Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F102321207
Tutorial_sparse_example.cpp
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Wed, Feb 19, 11:57
Size
1 KB
Mime Type
text/x-c
Expires
Fri, Feb 21, 11:57 (2 d)
Engine
blob
Format
Raw Data
Handle
24330326
Attached To
rDLMA Diffusion limited mixed aggregation
Tutorial_sparse_example.cpp
View Options
#include <Eigen/Sparse>
#include <vector>
#include <iostream>
typedef
Eigen
::
SparseMatrix
<
double
>
SpMat
;
// declares a column-major sparse matrix type of double
typedef
Eigen
::
Triplet
<
double
>
T
;
void
buildProblem
(
std
::
vector
<
T
>&
coefficients
,
Eigen
::
VectorXd
&
b
,
int
n
);
void
saveAsBitmap
(
const
Eigen
::
VectorXd
&
x
,
int
n
,
const
char
*
filename
);
int
main
(
int
argc
,
char
**
argv
)
{
if
(
argc
!=
2
)
{
std
::
cerr
<<
"Error: expected one and only one argument.
\n
"
;
return
-
1
;
}
int
n
=
300
;
// size of the image
int
m
=
n
*
n
;
// number of unknowns (=number of pixels)
// Assembly:
std
::
vector
<
T
>
coefficients
;
// list of non-zeros coefficients
Eigen
::
VectorXd
b
(
m
);
// the right hand side-vector resulting from the constraints
buildProblem
(
coefficients
,
b
,
n
);
SpMat
A
(
m
,
m
);
A
.
setFromTriplets
(
coefficients
.
begin
(),
coefficients
.
end
());
// Solving:
Eigen
::
SimplicialCholesky
<
SpMat
>
chol
(
A
);
// performs a Cholesky factorization of A
Eigen
::
VectorXd
x
=
chol
.
solve
(
b
);
// use the factorization to solve for the given right hand side
// Export the result to a file:
saveAsBitmap
(
x
,
n
,
argv
[
1
]);
return
0
;
}
Event Timeline
Log In to Comment