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 32283 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 mars 2023 - 13 juil. 2013 à 16:24
mamiemando Messages postés 32283 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 mars 2023 - 13 juil. 2013 à 16:24
A voir également:
- Multiplication vecteur par un vecteur de vecteur
- Créer un vecteur de taille n matlab ✓ - Forum Matlab
- Concatener vecteur matlab - Astuces et Solutions
- Vecteur google doc - Forum Bureautique
- Vecteur en c - Forum C
- Stocker des valeurs dans un vecteur matlab - Forum Programmation
1 réponse
mamiemando
Messages postés
32283
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
17 mars 2023
7 572
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