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