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