Собственное значение градиента вектор-функции

Как градиент вектора (дельта V) становится матрицей 3x3? И как эффективно вычислить его собственное значение? Есть ли какая-нибудь библиотека С++, которая может это сделать (может ли это сделать библиотека С++ Eigen)?


person user6682440    schedule 06.11.2016    source источник
comment
en.wikipedia.org/wiki/Gradient#Gradient_of_a_vector. И да, eigen может вычислять собственные значения матрицы... так что используйте его или другую библиотеку, такую ​​​​как броненосец.   -  person coincoin    schedule 07.11.2016
comment
Да, я читал ту статью. Градиент — это однострочный вектор, как он становится 3x3? Если я дам Eigen вектор, сможет ли он превратить его в матрицу 3x3?   -  person user6682440    schedule 07.11.2016
comment
потому что у вас разные производные по 3 измерениям. И нет, вам не нужно делать рендеринг вашей матрицы самостоятельно.   -  person coincoin    schedule 07.11.2016


Ответы (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 предлагает такую ​​функциональность.

person plasmacel    schedule 07.11.2016
comment
Вероятно, стоит отметить, что в общем случае матрица, составленная из производных произвольного векторного поля, не будет симметричной. Это означает, что собственное разложение этой матрицы может включать комплексные числа. С другой стороны, если бы вектор был производной скалярной функции, то матрица вторых производных была бы симметричной и имела бы половину действительных собственных значений. - person rwp; 20.02.2018