Предположим, у меня есть вход ArrayXd размером 3:
P[1]
P[2]
P[3]
Требуемый симметричный MatrixXd имеет размер [3,3]:
-P[1]*P[1]+P[1] -P[2]*P[1] -P[3]*P[1]
-P[1]*P[2] -P[2]*P[2]+P[2] -P[3]*P[2]
-P[1]*P[3] -P[2]*P[3] -P[3]*P[3]+P[3]
Решение в псевдокоде:
-1.0 * P.broadcast.rowwise() * P.broadcast.colwise() + diag(P)
Проблема: в руководстве Eigen объясняется, что вы можете транслировать вектор, но только в сочетании с матрицей (или двумерным массивом).Как это делается с двумя векторами?