У меня есть сложный вектор (VSII_Complex
, содержащий собственные значения) и комплексная матрица (CUII_Complex
, содержащая собственные векторы). Каждый элемент VSII_Complex
соответствует столбцу CUII_Complex
. Моя проблема в том, что я хочу отсортировать собственные значения внутри VSII_Complex
на основе их реальной части (НЕ мнимой части), и мне придется сортировать столбцы CUII_Complex
в соответствии с отсортированным VSII_Complex
. Следующий код разработан моим другом, но мне кажется, что с этим кодом что-то не так, но я не могу в этом разобраться. Интересно, может ли кто-нибудь сказать, что не так, если таковые имеются.
EIG eigA=EIG(m_IIStiffnessAct,m_IIMassAct,true);
ComplexColumnVector VSII_Complex=eigA.eigenvalues();
ComplexMatrix CUII_Complex=eigA.eigenvectors();
///// make eigenvalues in decreasing order, so do eigenvectors
for (long ii = 0; ii < VSII_Complex.rows(); ii++)
{
for (long jj = ii+1; jj < VSII_Complex.rows(); jj++)
{
if (VSII_Complex(ii).real() < VSII_Complex(jj).real())
{
Complex temp = VSII_Complex(ii);
VSII_Complex(ii) = VSII_Complex(jj);
VSII_Complex(jj) = temp;
for (long kk = 0; kk < CUII_Complex.rows(); kk++)
{
Complex tempVec = CUII_Complex(kk,ii);
CUII_Complex(kk,ii) = CUII_Complex(kk,jj);
CUII_Complex(kk,jj) = tempVec;
}
}
}
}