2016-11-06 3 views
0

벡터 (델타 V)의 그래디언트는 어떻게 3x3 매트릭스가됩니까? 그리고 그것의 고유 값을 어떻게 효율적으로 계산합니까? 어떤 C++ 라이브러리가 이것을 할 수 있습니까? (C++ 라이브러리 Eigen이 할 수 있습니까?)벡터 값 함수의 그래디언트 고유 값

+0

https://en.wikipedia.org/wiki/Gradient#Gradient_of_a_vector. 예 네거티브 (eigen)는 행렬의 고유 값을 계산할 수 있습니다 ... 그래서 그것을 사용하거나 아르마딜로와 같은 다른 라이브러리를 사용하십시오. – coincoin

+0

네, 그 기사를 읽었습니다. 그라데이션은 단일 행 벡터입니다. 어떻게 3x3이됩니까? Eigen에 벡터를 주면 3x3 행렬로 변환 할 수 있습니까? – user6682440

+0

은 3 차원에서 다른 derivaties가 있기 때문입니다. 그리고 직접 매트릭스를 렌더링하지 않아도됩니다. – coincoin

답변

1

gradient은 둘 이상의 변수가있는 함수의 미분을 일반화 한 것입니다. 함수의 모든 부분 파생 변수로 구성되므로 각 변수에 대해 하나의 미분을 갖습니다. 스칼라 들어

  • 가 N 가변 기능을 scalar y = f(x1, ..., xN) 값, 기울기 N 스칼라 요소가진 벡터이다.

  • 벡터에 상기를 일반화는 기능 vector y = f(x1, ..., xN)을 (벡터는 N의 요소를 가지고, 상기 기능 N 스칼라 변수를 갖는 경우), 기울기가 N 벡터 요소 가진 벡터로서 생각할 수있다 상당하는 실제로는 Jacobian라고도하는 NxN 요소가있는 행렬입니다.

이 경우 함수는 vector3 y = f(x1, x2, x3)이어야하며 그래디언트는 3x3 매트릭스입니다.

다른 모든 행렬과 마찬가지로 고유 값을 계산할 수 있습니다 (예 : Eigen decomposition을 사용하십시오. 이름에서 알 수 있듯이 Eigen 선형 대수 라이브러리는 이러한 기능을 제공합니다.

+0

일반적으로 임의의 벡터 필드의 미분으로 구성된 행렬은 대칭 적이 지 않습니다. 즉, 행렬의 고유 분해는 복소수를 포함 할 수 있습니다. 반면에 벡터가 그 자체로 스칼라 함수의 파생물 이었다면 2 차 미분의 행렬은 대칭이고 절반은 실수 값입니다. – rwp