Hoe een kruisproduct in r te berekenen


Ervan uitgaande dat we vector A hebben met elementen (A 1 , A 2 , A 3 ) en vector B met elementen (B 1 , B 2 , B 3 ), kunnen we het kruisproduct van deze twee vectoren als volgt berekenen:

Kruisproduct = [(A 2 *B 3 ) – (A 3 *B 2 ), (A 3 *B 1 ) – (A 1 *B 3 ), (A 1 *B 2 ) – (A 2 *B 1 )]

Stel dat we bijvoorbeeld de volgende vectoren hebben:

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

We kunnen het kruisproduct van deze vectoren als volgt berekenen:

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

U kunt een van de volgende twee methoden gebruiken om het kruisproduct van twee vectoren in R te berekenen:

Methode 1: gebruik de cross()-functie van het pracma-pakket

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

Methode 2: Definieer uw eigen functie

 #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)

De volgende voorbeelden laten zien hoe u elke methode in de praktijk kunt gebruiken.

Voorbeeld 1: Gebruik de cross()-functie van het pracma-pakket

De volgende code laat zien hoe u de functie cross() uit het pracma- pakket gebruikt om het kruisproduct tussen twee vectoren te berekenen:

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

[1] -3 6 -3

Het kruisproduct blijkt (-3, 6, -3) te zijn.

Dit komt overeen met het kruisproduct dat we eerder handmatig hebben berekend.

Voorbeeld 2: Definieer uw eigen functie

De volgende code laat zien hoe u uw eigen functie definieert om het kruisproduct tussen twee vectoren te berekenen:

 #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)])
}

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

#calculate cross product
cross(A, B)

[1] -3 6 -3

Het kruisproduct blijkt (-3, 6, -3) te zijn.

Dit komt overeen met het kruisproduct dat we in het vorige voorbeeld hebben berekend.

Aanvullende bronnen

In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende taken in R kunt uitvoeren:

Hoe het puntproduct in R te berekenen
Hoe een identiteitsmatrix te creëren in R
Hoe maak je een lege matrix in R

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert