Dew MtxVec NET
TSparseMtx.Solve Methods
Summary
Vector version of Solve.

Class
TSparseMtx

Declaration
Procedure Solve(B, X: TVec; MtxType: TMtxType = mtGeneral);


Declaration
Procedure Solve(B, X: TMtx; MtxType: TMtxType = mtGeneral);
Summary
Direct solve.
Description

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 

Example 1

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
http://www.dewresearch.com