mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-01-12 14:25:16 +08:00
parent
fa81676d64
commit
76d05e8236
@ -83,7 +83,7 @@ There is no notion of compressed/uncompressed mode for a SparseVector.
|
|||||||
|
|
||||||
\section TutorialSparseExample First example
|
\section TutorialSparseExample First example
|
||||||
|
|
||||||
Before describing each individual class, let's start with the following typical example: solving the Lapace equation \f$ \nabla u = 0 \f$ on a regular 2D grid using a finite difference scheme and Dirichlet boundary conditions.
|
Before describing each individual class, let's start with the following typical example: solving the Laplace equation \f$ \nabla u = 0 \f$ on a regular 2D grid using a finite difference scheme and Dirichlet boundary conditions.
|
||||||
Such problem can be mathematically expressed as a linear problem of the form \f$ Ax=b \f$ where \f$ x \f$ is the vector of \c m unknowns (in our case, the values of the pixels), \f$ b \f$ is the right hand side vector resulting from the boundary conditions, and \f$ A \f$ is an \f$ m \times m \f$ matrix containing only a few non-zero elements resulting from the discretization of the Laplacian operator.
|
Such problem can be mathematically expressed as a linear problem of the form \f$ Ax=b \f$ where \f$ x \f$ is the vector of \c m unknowns (in our case, the values of the pixels), \f$ b \f$ is the right hand side vector resulting from the boundary conditions, and \f$ A \f$ is an \f$ m \times m \f$ matrix containing only a few non-zero elements resulting from the discretization of the Laplacian operator.
|
||||||
|
|
||||||
<table class="manual">
|
<table class="manual">
|
||||||
|
@ -10,12 +10,12 @@ endif(NOT EIGEN_TEST_NOQT)
|
|||||||
if(QT4_FOUND)
|
if(QT4_FOUND)
|
||||||
add_executable(Tutorial_sparse_example Tutorial_sparse_example.cpp Tutorial_sparse_example_details.cpp)
|
add_executable(Tutorial_sparse_example Tutorial_sparse_example.cpp Tutorial_sparse_example_details.cpp)
|
||||||
target_link_libraries(Tutorial_sparse_example ${EIGEN_STANDARD_LIBRARIES_TO_LINK_TO} ${QT_QTCORE_LIBRARY} ${QT_QTGUI_LIBRARY})
|
target_link_libraries(Tutorial_sparse_example ${EIGEN_STANDARD_LIBRARIES_TO_LINK_TO} ${QT_QTCORE_LIBRARY} ${QT_QTGUI_LIBRARY})
|
||||||
|
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
TARGET Tutorial_sparse_example
|
TARGET Tutorial_sparse_example
|
||||||
POST_BUILD
|
POST_BUILD
|
||||||
COMMAND Tutorial_sparse_example
|
COMMAND Tutorial_sparse_example ARGS ${CMAKE_CURRENT_BINARY_DIR}/../html/Tutorial_sparse_example.jpeg
|
||||||
ARGS ${CMAKE_CURRENT_BINARY_DIR}/../html/Tutorial_sparse_example.jpeg
|
|
||||||
)
|
)
|
||||||
|
|
||||||
add_dependencies(all_examples Tutorial_sparse_example)
|
add_dependencies(all_examples Tutorial_sparse_example)
|
||||||
endif(QT4_FOUND)
|
endif(QT4_FOUND)
|
||||||
|
@ -11,8 +11,8 @@ void insertCoefficient(int id, int i, int j, double w, std::vector<T>& coeffs,
|
|||||||
int n = boundary.size();
|
int n = boundary.size();
|
||||||
int id1 = i+j*n;
|
int id1 = i+j*n;
|
||||||
|
|
||||||
if(i==-1 || i==n) b(id) -= w * boundary(j); // constrained coeffcieint
|
if(i==-1 || i==n) b(id) -= w * boundary(j); // constrained coefficient
|
||||||
else if(j==-1 || j==n) b(id) -= w * boundary(i); // constrained coeffcieint
|
else if(j==-1 || j==n) b(id) -= w * boundary(i); // constrained coefficient
|
||||||
else coeffs.push_back(T(id,id1,w)); // unknown coefficient
|
else coeffs.push_back(T(id,id1,w)); // unknown coefficient
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user