IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Boost C++ Discussion :

uBlas : Produit vectoriel


Sujet :

Boost C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 426
    Par défaut uBlas : Produit vectoriel
    Bonjours à tous,

    Ayant besoins de faire du calcul sur des matrices et des vecteurs, j'ai choisi d'utiliser <boost/numeric/ublas/vector.hpp> et <boost/numeric/ublas/matrix.hpp> ( N'hésitez pas à me conseiller d'autre bibliothèques, si elles sont plus simples )

    Mon soucis est que je n'arrive pas à faire un simple produit vectoriel! Il sembles que le terme anglais pour "produit vectoriel" soit "outer product". ( et "inner product" pour le "produit scalaire" )
    Pas moyen de trouver un tuto ou une doc simple ( genre "pour les nuls" )

    J'ai écris ce petit bout de code pour tester le produit vectoriel ( lignes 21 à 24 ) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    #include <iostream>
    #include <boost/numeric/ublas/vector.hpp>
    #include <boost/numeric/ublas/io.hpp>
    #include <boost/numeric/ublas/matrix.hpp>
    using namespace boost::numeric::ublas;
    
    int main () {
        
        vector<double> v (3);
    	vector<double> w (3);
    	vector<double> t (3);
    
    	v[0] = 1.;    v[1] = 0.;    v[2] = 0.;
        w[0] = 0.;    w[1] = 1.;    w[2] = 0.;
    	t[0] = 2.;    t[1] = 0.;    t[2] = 0.;
    
        std::cout << v << std::endl;	//Affiche : [3](1,0,0)
    	std::cout << w << std::endl;	//Affiche : [3](0,1,0)
    	std::cout << t << std::endl;	//Affiche : [3](2,0,0)
    
    	matrix<double> m = outer_prod ( v, w );
    	std::cout << m << std::endl;	//Affiche : [3,3]((0,1,0)(0,0,0)(0,0,0))     là je comprends pas!!!
    	m = outer_prod ( v, t );
    	std::cout << m << std::endl;	//Affiche : [3,3]((2,0,0)(0,0,0)(0,0,0))     là je comprends pas!!!
    
    
    	double val = inner_prod ( v, w );
    	std::cout << val << std::endl;	//Affiche : 0     là c'est OK, c'est bien le produit scalaire
    	val = inner_prod ( v, t );
    	std::cout << val << std::endl;	//Affiche : 2     là c'est OK, c'est bien le produit scalaire
    
    	system ("pause");
    }
    Si outer_prod est-elle la fonction pour le produit vectoriel? Pourquoi je récupère une matrice 3*3 plutôt qu'une matrice colonne de 3 lignes?

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par défaut
    Le terme anglais pour produit vectoriel est cross product.

    Les lignes que tu mets en exergue correspondent apparemment au produit matriciel du premier vecteur avec la transposée du second vecteur.

  3. #3
    Membre chevronné

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 426
    Par défaut
    Merci,

    Je n'ai pas trouvé de "cross product" dans uBlas!
    Mais, en regardant sur google, j'ai trouvé un forum ou il est dit qu'il n'y a pas une telle fonction dans uBlas car elle n'as pas de sens en dimensions autres que 3 ( Ce qui n'est pas juste me semble-t-il, j'avais cherché il y a longtemps : il me sembles qu'il existe une généralisation du produit vectoriel aux dimensions supérieures à 3 ( à vérifier chez les matheux ) )

    Il faudra que j’écrive la fonction moi même...

    Merci donc pour ta diligence...

  4. #4
    Membre averti
    Inscrit en
    Novembre 2009
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 19
    Par défaut
    Bonjour,

    Il y a effectivement d'autres bibliothèques pour faire de l'algèbre linéaire mais tout dépend du type de vecteurs et de matrices que tu veux utiliser.
    Il me semble que si ces derniers sont de grandes tailles, relativement creux (sparse) et destinés à être manipulés dans des opérations élémentaires (+,*) alors uBLAS est un bon choix.

    En revanche, si tu as besoin de matrices de petites tailles, d'une panoplie d'algorithmes de décomposition classiques et d'une plus grande simplicité d'utilisation, orientes-toi vers Armadillo.

    Pour une liste complète de bibliothèques d'AL, tu peux chercher linear algebra C++ sur wikipedia car je me souviens qu'il y en a un certain nombre.

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par défaut
    Si c'est uniquement pour de la 3D, il y a même sans doute des bibliothèques beaucoup plus simples.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. calcule du produit vectoriel
    Par twice dans le forum Mathématiques
    Réponses: 4
    Dernier message: 11/04/2011, 23h25
  2. produit vectoriel dans une boucle
    Par hanane78 dans le forum MATLAB
    Réponses: 12
    Dernier message: 19/11/2010, 18h49
  3. Coordonnées - vecteur - produit vectoriel
    Par arsonlupo dans le forum MATLAB
    Réponses: 8
    Dernier message: 08/07/2009, 07h55
  4. aide vectorielle
    Par charly dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 13/11/2002, 17h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo