Posted by
Klaus Spanderen on
URL: http://quantlib.414.s1.nabble.com/matrix-inverse-tp599p600.html
Hi JJ
the following code calculates the inverse of a square matrix using boost/
quantlib.
cheers
Klaus
#include <boost/numeric/ublas/vector.hpp>
#include <boost/numeric/ublas/vector_proxy.hpp>
#include <boost/numeric/ublas/matrix.hpp>
#include <boost/numeric/ublas/triangular.hpp>
#include <boost/numeric/ublas/lu.hpp>
#include <ql/Math/matrix.hpp>
namespace QuantLib {
Disposable<Matrix> inverse(const Matrix& m) {
QL_REQUIRE(m.rows() == m.columns(), "matrix is not square");
boost::numeric::ublas::matrix<Real> a(m.rows(), m.columns());
std::copy(m.begin(), m.end(), a.data().begin());
boost::numeric::ublas::permutation_matrix<Size> pert(m.rows());
// lu decomposition
const Size singular = lu_factorize(a, pert);
QL_REQUIRE(singular == 0, "singular matrix given");
boost::numeric::ublas::matrix<Real>
inverse = boost::numeric::ublas::identity_matrix<Real>(m.rows());
// backsubstitution
boost::numeric::ublas::lu_substitute(a, pert, inverse);
Matrix retVal(m.rows(), m.columns());
std::copy(inverse.data().begin(), inverse.data().end(),
retVal.begin());
return retVal;
}
}
On Monday 12 February 2007 1:22 am, AAA BBB wrote:
-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier.
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642_______________________________________________
QuantLib-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/quantlib-users