Class
TSparseMtx
Solve the system A*X = B, where A is the calling matrix. The actual system being solved is defined by SparseSystem property. A is sparse and unsymmetric. It is based on the Unsymmetric MultiFrontal method, which factorizes PAQ into the product LU, where L and U are lower and upper triangular, respectively, and P are Q are permutation matrices. Both P and Q are chosen to reduce fill-in (new nonzeros in L and U that are not present in A). The permutation P has the dual role of reducing fill-in and maintaining numerical accuracy (via relaxed partial pivoting and row interchanges).
The Solve method uses BLAS level 3 dgeem matrix multiply routine and takes full advantage of CPU specific optimized code and symmetric multiprocessing.
| See Also |
|---|
| SparseSolver |
uses MtxExpr, MtxVecTee, Sparse; procedure Example; var x,b: Vector; SparseA: TSparseMtx; begin // load data SparseA.LoadFromMatrixFile('system.mtx'); b.LoadFromFile('coefficients.vec'); // set solution size x.Size(b); // solve SparseA.SparseSolver := ssUmfPack; SparseA.Solve(b,x); //view solution ViewValues(x); end;
#include "MtxVecCpp.h" #include "Sparse.hpp" #include "MtxVecTee.hpp" void __fastcall Example() { Vector x,b; TSparseMtx *SparseA = new TSparseMtx(); try { // load data SparseA->LoadFromMatrixFile("system.mtx"); b->LoadFromFile("coefficients.vec"); // set solution size x->Size(b); // solve SparseA->SparseSolver = ssUmfPack; SparseA->Solve(b,x); //view solution ViewValues(x); } __finally { delete SparseA; } }
| Copyright 2008 Dew Research |