같은 방향이거나 정확히 반대방향인 벡터 2개에 외적 구하는 건 의미 없음. 두 벡터로 한 평면이 정의가 되는데 그 평면에 수직인 벡터를 찾는 과정인데, 같은 방향인 벡터2개면 평면자체부터가 정의가 안됨.
왼손좌표계, 오른손 좌표계 신경써야함. 계산순서에 따라 방향 달라짐
Pseudo 2D Cross Product
Orthonormalization with the Cross Product
외적을 이용해서 Orthonomalization을 할 수 있다.
포인트(point)
포인트 연산
포인트에서 포인트 빼면 벡터가 나온다.
포인트에 벡터 더하면 다시 포인트가 나온다.
왜 외적 대신 Gram-Schmidt 방식을 사용할까요?
세 벡터가 주어졌을때, 외적 두번을 하면 서로 수직인 벡터 3개를 구할 수 있는데 굳이 왜 복잡하게 저런 방식을 굳이 사용할까 하는 의문이 들어서 chat GPT통해서 찾아본 결과입니다.
혹시 같은 의문을 가지신 분이 계실까봐 정리한 글 남겨봅니다. 혹시 틀린 내용있다면 댓글 남겨주세요.
ChatGPT
Q: 외적 두번이면 서로 수직인 벡터 3개를 구할 수 있는데 굳이 Gram-Schmidt 방식을 쓰는 이유? Gram-Schmidt 방식의 존재 의의?
Gram-Schmidt 정규화 과정의 존재 의의는 다음과 같은 몇 가지 중요한 이유로 설명할 수 있습니다:
차원의 일반화: Gram-Schmidt 과정은 3차원 공간에만 국한되지 않고, 더 높은 차원의 공간에서도 사용될 수 있습니다. 벡터의 크로스 프로덕트는 3차원 공간에서만 정의되고 사용되기 때문에, 더 높은 차원의 공간에서 벡터들을 정규화하고 직교화하기 위해서는 Gram-Schmidt 과정이 필요합니다.
기존 벡터 세트의 보존: Gram-Schmidt 과정은 주어진 벡터 세트를 유지하면서 이들을 직교화합니다. 즉, 원래의 벡터 세트가 가지고 있는 방향성이나 구조를 유지하면서 직교화를 수행합니다. 반면, 크로스 프로덕트를 사용하는 방법은 완전히 새로운 벡터를 생성하기 때문에, 원래 벡터 세트의 특성을 완전히 보존하지 못할 수 있습니다.
알고리즘의 유연성: Gram-Schmidt 과정은 벡터 세트가 선형 독립인 경우에만 적용되는 것이 아니라, 선형 의존성이 있는 벡터들에 대해서도 적용할 수 있습니다. 이 과정을 통해 선형 의존적인 벡터들을 제거하고 직교 기저를 생성할 수 있습니다.
수학적 정확성 및 안정성: 크로스 프로덕트를 사용하는 방법은 계산 과정에서 오차가 발생하기 쉽고, 특히 벡터의 크기가 매우 작거나 서로 거의 평행할 때 정확도가 떨어질 수 있습니다. Gram-Schmidt 과정은 이러한 경우에도 더 안정적이고 정확한 결과를 제공합니다.
따라서 Gram-Schmidt 방식은 높은 차원의 공간에서의 일반화, 원래 벡터 세트의 구조 보존, 선형 의존성 처리, 계산의 안정성과 정확성 등의 측면에서 크로스 프로덕트를 사용하는 방법보다 더 우수하고 유연한 접근법을 제공합니다.
Q: 외적이 정확도가 떨어진다는 의미?
수학적 계산에서 벡터의 크로스 프로덕트(외적)는 정확한 결과를 제공합니다. 제가 언급한 '정확도가 떨어진다'는 점은 주로 컴퓨터 계산에서 발생하는 문제를 지칭합니다. 컴퓨터를 사용한 수치 계산에서는 다음과 같은 이유로 정확도 문제가 발생할 수 있습니다:
부동소수점 오차: 컴퓨터에서 실수를 표현할 때 부동소수점 방식을 사용합니다. 이 방식은 실수를 완벽하게 정확하게 표현할 수 없어서 작은 오차가 발생할 수 있습니다. 이 오차는 계산이 반복될수록 누적되어 결과의 정확도에 영향을 줄 수 있습니다.
근접한 벡터들의 처리: 두 벡터가 서로 거의 평행한 경우, 즉 각도가 매우 작을 때, 컴퓨터는 이 두 벡터의 크로스 프로덕트를 정확하게 계산하기 어렵습니다. 이런 경우, 작은 수치 오차도 결과에 큰 영향을 미칠 수 있습니다.
오버플로우 및 언더플로우: 매우 크거나 작은 수치를 다룰 때, 컴퓨터는 오버플로우(너무 큰 값 처리 불가)나 언더플로우(너무 작은 값 처리 불가) 문제에 직면할 수 있습니다. 이는 크로스 프로덕트 계산에도 영향을 줄 수 있습니다.
수학적으로는 크로스 프로덕트가 완벽히 정확한 값을 제공하지만, 실제 컴퓨터 계산에서는 이러한 수치 오차를 고려해야 합니다. 이러한 문제들은 Gram-Schmidt 과정에서도 발생할 수 있지만, 이 방법은 특정 조건에서 더 안정적인 결과를 제공할 수 있는 방법론을 가지고 있습니다.