Как вычислить векторное произведение в r


Предполагая, что у нас есть вектор A с элементами (A 1 , A 2 , A 3 ) и вектор B с элементами (B 1 , B 2 , B 3 ), мы можем вычислить векторное произведение этих двух векторов следующим образом:

Перекрестное произведение = [(A 2 *B 3 ) – (A 3 *B 2 ), (A 3 *B 1 ) – (A 1 *B 3 ), (A 1 *B 2 ) – (A 2 *B 1 )]

Например, предположим, что у нас есть следующие векторы:

  • Вектор А: (1, 2, 3)
  • Вектор Б: (4, 5, 6)

Мы могли бы вычислить векторное произведение этих векторов следующим образом:

  • Перекрестное произведение = [(A 2 *B 3 ) – (A 3 *B 2 ), (A 3 *B 1 ) – (A 1 *B 3 ), (A 1 *B 2 ) – (A 2 *B 1 )]
  • Перекрестное произведение = [(2*6) – (3*5), (3*4) – (1*6), (1*5) – (2*4)]
  • Перекрестное произведение = (-3, 6, -3)

Вы можете использовать один из двух методов для вычисления векторного произведения двух векторов в R:

Способ 1: используйте функцию cross() пакета pracma.

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

Способ 2: Определите свою собственную функцию

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

Следующие примеры показывают, как использовать каждый метод на практике.

Пример 1. Использование функции cross() пакета pracma.

Следующий код показывает, как использовать функцию cross() из пакета pracma для вычисления векторного произведения между двумя векторами:

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

[1] -3 6 -3

Перекрестное произведение оказывается (-3, 6, -3) .

Это соответствует перекрестному продукту, который мы рассчитали вручную ранее.

Пример 2: Определите свою собственную функцию

Следующий код показывает, как определить собственную функцию для вычисления векторного произведения между двумя векторами:

 #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

Перекрестное произведение оказывается (-3, 6, -3) .

Это соответствует перекрестному продукту, который мы рассчитали в предыдущем примере.

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные задачи в R:

Как вычислить скалярное произведение в R
Как создать единичную матрицу в R
Как создать пустую матрицу в R

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *