Як обчислити перехресний добуток у 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) )]

Наприклад, припустимо, що ми маємо такі вектори:

  • Вектор A: (1, 2, 3)
  • Вектор B: (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

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *