begin process at 2012 05 28 08:30:19
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Algorithme

 > 

Maths

 > 

Une classe d'algèbre (calcul matriciel) performante ?


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Une classe d'algèbre (calcul matriciel) performante ?

jeudi 10 juillet 2008 à 11:32:45 | Une classe d'algèbre (calcul matriciel) performante ?

Sylphe67

Bonjour à tous,

En une phrase, je recherche une classe template permettant d'effectuer du calcul matriciel performant sur des matrices carrées de tailles moyenne (100 double * 100 double) à grande (2000 double * 2000 double).

Plus précisément, cette classe devrait - dans l'idéal - comporter des méthodes d'inversion de matrice intelligentes, c-à-d qui vont appeler l'un ou l'autre algorithme d'inversion en fonction de la taille de la matrice et de ses propriétés (pleine, triangulaire sup, multidiagonale, etc). Elle devrait aussi pouvoir s'intégrer sans trop de difficultés dans un projet existant de simulation numérique. Après recherche sur le web et consultation de forums, je constate qu'il y a plusieurs solutions libres proposées, et j'ai du mal à me décider pour l'une ou l'autre. Je fais donc appel à votre expérience : pouvez vous me conseiller une classe particulière ?

D'avance merci pour votre aide !

jeudi 10 juillet 2008 à 19:41:34 | Re : Une classe d'algèbre (calcul matriciel) performante ?

Lucky92

Bonjour,

la librairie uBLAS de boost répondra peut-être à ton besoin. En revanche, la documentation n'est pas géniale, et il faut un sacré background en algèbre et en c++, ou éventuellement une bonne connaissance de la librairie fortran originale, pour l'utiliser (à mon sens en tout cas). voici, toutefois - si cela t'intéresse - l'exemple de base qui permet d'inverser une matrice avec l'élimination de gauss-jordan :

/*_________________________________________________________________________________
*/
#include <boost/numeric/ublas/lu.hpp>
#include <boost/numeric/ublas/io.hpp>
/*_________________________________________________________________________________
*/
using namespace boost::numeric;
/*_________________________________________________________________________________
*/
int main( int argc, char** argv )
{
    ublas::matrix<double> A( 2 , 2 ) ;
    A( 0 , 0 ) = 1 ; A( 0 , 1 ) = 2 ;
    A( 1 , 0 ) = 3 ; A( 1 , 1 ) = 4 ;

    std::cout << A << std::endl;

     ublas::permutation_matrix< std::size_t > pm( A.size1() );

    int res( 0 );
    if ( res = ublas::lu_factorize( A , pm ) )
    {
        std::cout << "matrix rank = " << res - 1 << std::endl;
    }
    else
    {
        ublas::matrix<double> inv( ublas::identity_matrix<double>( A.size1() ) );
        ublas::lu_substitute( A , pm , inv );
        std::cout << inv << std::endl;
    }
}
/*_________________________________________________________________________________
*/
vendredi 11 juillet 2008 à 14:40:57 | Re : Une classe d'algèbre (calcul matriciel) performante ?

Sylphe67

Bonjour,

Merci pour ta réponse. A première vue de l'exemple que tu donnes, je dirais que c'est une solution qui ne me convient pas vraiment, car il faut visiblement choisir la méthode d'inversion. Alors que je recherche - dans l'idéal - une solution qui va surcharger une méthode "inversion" (ou opérateur ^(-1), etc) de sorte que l'utilisateur pourrait se contenter d'écrire INV = A^(-1), la librairie se chargeant d'effectuer le travail suivant : détection automatique des propriétés de A, choix d'un algorithme d'inversion en fct de ces propriétés, puis execution. Idem pour un système linéaire A x = b, l'utilisateur se contenterait d'écrire : x = b / A ou x = A^(-1) * b.

mardi 9 mars 2010 à 11:07:14 | Re : Une classe d'algèbre (calcul matriciel) performante ?

Bahoumi88




Bienvenue ,

j'aime la programmation   bouceaups 

J'aime  tous  sur l'informatique  et  je veut  apprendre la langue anglaise ( grace à vos aides) .  


Cette discussion est classée dans : classe, double, calcul, matriciel, algèbre


Répondre à ce message

Sujets en rapport avec ce message

cast d'un float en double [ par ashboody ] j'aimerais me passer de la variable d_val est-ce possible en faisant un cast de f_val ?/* proto de la fonction Calcul */int Calcul (double *Value);/* Librarie dédier au calcul matriciel [ par Stiko ] slt,est ce que connaissez des libaraire dédier au calcul matriciels de grandes tailles et qui fonctionnent avec VC 2003?? Recherche Codes sources de calcul matriciel et de statistiques [ par bizrap ] Bonjour a tous.Je suis pour le moment en train de developper une application en Econometrie et un pricer d options en Finance. (je sais, ce n est pas triangle de penrose et classe [ par ichigoZ710 ] Bonjour à toutes et à tous,j'aurais aimé savoir comment commencer le début de mon code en rapport avec les triangles de penrose (un triangle de penros Librairy calcul matriciel [ par hitcher ] Bonjour,je doit travailler avec des matrices qui soit capable de faire des régressions linéaires (X/Y  ou (X'X)^-1 X'Y pour les puristes) mais pas seu calcul en parallèle [ par Adel85 ] Bonjour, J'utilise openmp pour effectuer un calcul en parallèle. J'ai comparé les résultats obtenu avec et sans parallélisme et ça colle pas. Bref, je Problèmes compilation projets ?? [ par DMK04 ] Bonjour,j'ai un problème avec un projet... J'ai essayé de simplifier le problème au maximum avant de le poser et voilà ce que ça donne :On crée un pro affichage de tout un double [ par xian240482 ] petit programme : #include #include "stdafx.h" void main() {     double d1 = 3.14159265358979323846;     printf("Pi = %.52f\n",d1);     double d2 = 0 Collision elastique indirecte ? [ par SnOOpss ] Bonjour Je suis toujours a essayer de rendre mon jeu realiste (meme principe que le billard) et j'ai essayé pas mal de methodes sans jamais trouver la


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,201 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales