Comment calculer un produit croisé dans R



En supposant que nous ayons le vecteur A avec des éléments (A 1 , A 2 , A 3 ) et un vecteur B avec des éléments (B 1 , B 2 , B 3 ), nous pouvons calculer le produit vectoriel de ces deux vecteurs comme suit :

Produit croisé = [(A 2 *B 3 ) – (A 3 *B 2 ), (A 3 *B 1 ) – (A 1 *B 3 ), (A 1 *B 2 ) – (A 2 *B 1 )]

Par exemple, supposons que nous ayons les vecteurs suivants :

  • Vecteur A : (1, 2, 3)
  • Vecteur B : (4, 5, 6)

Nous pourrions calculer le produit vectoriel de ces vecteurs comme suit :

  • Produit croisé = [(A 2 *B 3 ) – (A 3 *B 2 ), (A 3 *B 1 ) – (A 1 *B 3 ), (A 1 *B 2 ) – (A 2 *B 1 )]
  • Produit croisé = [(2*6) – (3*5), (3*4) – (1*6), (1*5) – (2*4)]
  • Produit croisé = (-3, 6, -3)

Vous pouvez utiliser l’une des deux méthodes suivantes pour calculer le produit vectoriel de deux vecteurs dans R :

Méthode 1 : utiliser la fonction cross() du package pracma

library(pracma)
  
#calculate cross product of vectors A and B
cross(A, B)

Méthode 2 : définissez votre propre fonction

#define function to calculate cross product 
cross <- function(x, y, i=1:3) {
  create3D <- function(x) head(c(x, rep(0, 3)), 3)
  x <- create3D(x)
  y <- create3D(y)
  j <- function(i) (i-1) %% 3+1
  return (x[j(i+1)]*y[j(i+2)] - x[j(i+2)]*y[j(i+1)])
}

#calculate cross product
cross(A, B)

Les exemples suivants montrent comment utiliser chaque méthode dans la pratique.

Exemple 1 : Utiliser la fonction cross() du package pracma

Le code suivant montre comment utiliser la fonction cross() du package pracma pour calculer le produit vectoriel entre deux vecteurs :

library(pracma)
  
#define vectors
A <- c(1, 2, 3)
B <- c(4, 5, 6)
  
#calculate cross product
cross(A, B)

[1] -3  6 -3

Le produit vectoriel s’avère être (-3, 6, -3) .

Cela correspond au produit croisé que nous avons calculé manuellement plus tôt.

Exemple 2 : définissez votre propre fonction

Le code suivant montre comment définir votre propre fonction pour calculer le produit vectoriel entre deux vecteurs :

#define function to calculate cross product 
cross <- function(x, y, i=1:3) {
  create3D <- function(x) head(c(x, rep(0, 3)), 3)
  x <- create3D(x)
  y <- create3D(y)
  j <- function(i) (i-1) %% 3+1
  return (x[j(i+1)]*y[j(i+2)] - x[j(i+2)]*y[j(i+1)])
}

#define vectors
A <- c(1, 2, 3)
B <- c(4, 5, 6)

#calculate cross product
cross(A, B)

[1] -3 6 -3

Le produit vectoriel s’avère être (-3, 6, -3) .

Cela correspond au produit vectoriel que nous avons calculé dans l’exemple précédent.

Ressources additionnelles

Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes dans R :

Comment calculer le produit scalaire dans R
Comment créer la matrice d’identité dans R
Comment créer une matrice vide dans R

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *