Как градиент вектора (дельта V) становится матрицей 3x3? И как эффективно вычислить его собственное значение? Есть ли какая-нибудь библиотека С++, которая может это сделать (может ли это сделать библиотека С++ Eigen)?
Собственное значение градиента вектор-функции
Ответы (1)
градиент — это обобщение производной для функций с более чем одной переменной. Он состоит из всех частных производных функции, поэтому имеет по одной производной для каждой переменной.
Для скалярной функции N-переменных
scalar y = f(x1, ..., xN)
градиент представляет собой вектор с N скалярными элементами.Обобщая его далее на векторную функцию
vector y = f(x1, ..., xN)
(где вектор имеет N элементов, а функция имеет N скалярных переменных), градиент можно рассматривать как вектор с N векторными элементами< /strong>, которая на самом деле представляет собой матрицу с элементами NxN, также называемую Jacobian.
В вашем случае функция должна быть похожа на vector3 y = f(x1, x2, x3)
, поэтому градиент представляет собой матрицу 3x3.
Вы можете вычислить его собственные значения, как и для любой другой матрицы, например. используя собственное разложение. Как следует из названия, библиотека линейной алгебры Eigen предлагает такую функциональность.