1 / 20

A Computational Environment for Interval Matrices in C++

A Computational Environment for Interval Matrices in C++. Michael Nooner and Chenyi Hu. Computer Science Department, University of Central Arkansas. Introduction. Motivations What is IntBLAS Why use IntBLAS The package. Motivations. Profil, IntLAB, IntLib Easy to use Cross platform.

nova
Télécharger la présentation

A Computational Environment for Interval Matrices in C++

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. A Computational Environment for Interval Matrices in C++ Michael Nooner and Chenyi Hu Computer Science Department, University of Central Arkansas

  2. Introduction • Motivations • What is IntBLAS • Why use IntBLAS • The package

  3. Motivations • Profil, IntLAB, IntLib • Easy to use • Cross platform

  4. What Is IntBLAS • Interval BLAS Standard • Basic Interval Arithmetic Subroutines (IntLib) • Interval Basic Linear Algebra Subroutines • Level 1, 2, 3 • C++ Implementation • Three core objects • Three auxiliary objects

  5. Why use IntBLAS • Easy to install • GCC • Visual Studio • More on the way … • Cross Platform • Open Source (LGPL) • Well Documented • Easy to use

  6. The Package • One header • IntBLAS.h • Two Static Libraries • intblas.lib (optimized) • intblas_d.lib (debug) • One Namespace • intblas • One Initialization Function • INIT_INTERVAL()

  7. The Package #include<IntBLAS.h> using namespace intblas; int main() { INIT_INTERVAL(); Interval a( .1 ); IntervalMatrix m( 2, 2 ), result; m[0][0] = 2.3; m[0][1] = 3.3; m[1][0] = 5.5; m[1][1] = a; result = m + a;

  8. Core Classes

  9. Core Classes • Three Main Classes • Interval • IntervalVector • IntervalMatrix

  10. Interval Class • IntLib • Double precision • Rounding • Round Up: add one ε • Round Down: subtract one ε • 16th – 18th significant digit

  11. Interval Class • Arithmetic operators • Standard Functions • ipow, isin, isqrt, ilog, iatan … • Additional interval set routines • isEmpty(), midpoint(), width(), …

  12. IntervalVector and IntervalMatrix • BLAS Standard • Method/Function pairs double norm( NORMTYPE n ); friend double norm( IntervalMatrix& a, NORMTYPE n ); • Arithmetic operators • Assignment operator • Intermediate values

  13. Auxiliary Classes

  14. Error Handling • INTERVAL_EXCEPTION int code char msg[200] • Global Error Object • 32 predefined codes setError( int code, const char* msg = NULL ) getLastError()

  15. IntervalVectorT & IntervalMatrixT • Enables strong dimension checking • Typdef common matrices and vectorstypedef IntervalMatrixT<2,2> IMatrix2x2;. . .IMatrix2x2 m, n, o;

  16. Demo

  17. Problem • Solve the following set of linear equations:

  18. Problem • By paper the solution is

  19. Conclusion • Interval Basic Linear Algebra Subprograms • Easy to install • Cross Platform • Open Source • Well Documented • Easy to use • Download it from http://www.geocities.com/mike_nooner

  20. Future Work • Banded and Sparse Matrices • Arbitrary precision arithmetic • Fuzzy Logic Module • Interval Based LU Decomposition • Other cool stuff!

More Related