симметричные матрицы в собственных

I have a lower triangular matrix M (strict, with 0 on the diagonal). I want to turn this unto a symmetric matrix, efficiently. (e.g. i want to do M<-M+M'). I'm using Eigen.

Моя проблема, я делаю:

U=U+U.transpose();

но, читая документы, я чувствую , что, возможно, я должен использовать некоторые функции, такие как как .noalias() и/или .transposeInPlace() , но очевидный кандидат:

U+=U.transposeInPlace();

дает ошибку.

РЕДАКТИРОВАТЬ:

вот сообщение об ошибке:

.cpp:210:24: note: candidates are:
/eigen/Eigen/src/Core/MatrixBase.h:183:14: note: template Derived& Eigen::MatrixBase::operator+=(const Eigen::MatrixBase&) [with OtherDerived = OtherDerived, Derived = Eigen::Matrix]
/eigen/Eigen/src/Core/MatrixBase.h:517:46: note: template Derived& Eigen::MatrixBase::operator+=(const Eigen::ArrayBase&) [with OtherDerived = OtherDerived, Derived = Eigen::Matrix]
/eigen/Eigen/src/Core/DenseBase.h:266:14: note: template Derived& Eigen::DenseBase::operator+=(const Eigen::EigenBase&) [with OtherDerived = OtherDerived, Derived = Eigen::Matrix]
0
nl ja de

2 ответы

в Eigen, transposeInPlace() объявлен как void . Таким образом, вы не можете использовать результат этого метода в сумме матриц, потому что результат просто не является матрицей.

Делать

V = U;
V.transposeInPlace();
U += V;

вместо.

3
добавлено

На самом деле,

U+=U.transpose().eval();
return(U);

делает трюк

1
добавлено
pro.cxx
pro.cxx
3 049 участник(ов)

C/C++ chat 0. Простые вопросы, лабы и о IDE — в чат новичков @supapro 1. Не хамим, не переходим на личности, не вбрасываем утверждения без доказательств 2. No Ads, offtop, flood Объявления о вакансиях и евенты - в лс @AlexFails https://t.me/ProCxx/259155

supapro.cxx
supapro.cxx
1 925 участник(ов)

Чат для тех, кто немного знает C++, простые вопросы по реализации, синтаксису и ide – сюда, а для другого есть: /Главный чат по серьезным вопросам — @ProCxx /Чат по обсуждению всего — @fludpac

C++ Russia
C++ Russia
384 участник(ов)

Сообщество разработчиков C++ в Telegram.

cxx.Дискуссионная
cxx.Дискуссионная
298 участник(ов)

это не двач, общайтесь вежливо; разговор на почти любые темы; Не согласны с баном? В лс @AlexFails, @ivario

C++ для маленьких и тупых
C++ для маленьких и тупых
105 участник(ов)

Лоу левел (по среднему IQ участников) чатик ExtremeCode @extremecode Флудилка @extremecode_rest