R에서 교차곱을 계산하는 방법
요소(A 1 , A 2 , A 3 )가 있는 벡터 A와 요소(B 1 , B 2 , B 3 )가 있는 벡터 B가 있다고 가정하면 이 두 벡터의 외적을 다음과 같이 계산할 수 있습니다.
외적 = [(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: pracma 패키지의 cross() 함수를 사용합니다.
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: pracma 패키지의 cross() 함수 사용
다음 코드는 pracma 패키지의 cross() 함수를 사용하여 두 벡터 간의 외적을 계산하는 방법을 보여줍니다.
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에서 다른 일반적인 작업을 수행하는 방법을 설명합니다.