Multiplication vecteur par un vecteur de vecteur
Fermé
sara.khenine
Messages postés
1
Date d'inscription
lundi 8 juillet 2013
Statut
Membre
Dernière intervention
8 juillet 2013
-
8 juil. 2013 à 15:32
mamiemando Messages postés 33113 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 15 mai 2024 - 13 juil. 2013 à 16:24
mamiemando Messages postés 33113 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 15 mai 2024 - 13 juil. 2013 à 16:24
A voir également:
- Multiplication vecteur par vecteur
- Table de multiplication javascript ✓ - Forum Javascript
- Logiciel multiplication - Télécharger - Études & Formations
- Comment faire un vecteur sur word ✓ - Forum Word
- Créer un vecteur ligne matlab ✓ - Forum Matlab
- Vba multiplication ✓ - Forum Bureautique
1 réponse
mamiemando
Messages postés
33113
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
15 mai 2024
7 753
13 juil. 2013 à 16:24
13 juil. 2013 à 16:24
Je n'ai pas compris ce que tu appelles un produit de vecteur. En admettant qu'il s'agisse d'un produit scalaire il suffit de définir une fonction qui calcule le produit scalaire de deux vecteurs :
... ce qui donne :
Après tu peux dire que l'opérateur * sur deux vecteurs effectue un produit scalaire. Tant qu'à faire on peut même définir sur des vecteurs génériques.
Bonne chance
#include <iostream> #include <ostream> #include <vector> double produit_scalaire( const std::vector<double> & x, const std::vector<double> & y ){ double res = 0; size_t size = x.size(); if (x.size() != y.size()) throw; for (size_t i = 0; i < size; ++i) { res += x[i] * y[i]; } return res; } std::ostream & operator << ( std::ostream & out, const std::vector<double> & x ) { out << '['; for (size_t i = 0; i < x.size(); ++i) { out << ' ' << x[i]; } out << " ]"; return out; } int main() { std::vector<double> x, y; x.push_back(1); x.push_back(5); x.push_back(3); y.push_back(2); y.push_back(0); y.push_back(4); std::cout << "produit_scalaire(" << x << ", " << y << ") = " << produit_scalaire(x, y) << std::endl; return 0; }
... ce qui donne :
produit_scalaire([ 1 5 3 ], [ 2 0 4 ]) = 14
Après tu peux dire que l'opérateur * sur deux vecteurs effectue un produit scalaire. Tant qu'à faire on peut même définir sur des vecteurs génériques.
// x * y <=> produit_scalaire(x, y); template <typename T> T operator * ( const std::vector<T> & x, const std::vector<T> & y ) { T res; size_t size = x.size(); if (x.size() != y.size()) throw; for (size_t i = 0; i < size; ++i) { res += x[i] * y[i]; } return res; }
Bonne chance