Я работаю над физическим исследованием в качестве бакалавра, и для этого мне нужно умножить большие матрицы порядка 348x348 с использованием C++. Мой учитель попросил меня проверить мой код, используя меньшие матрицы, такие как 6x6 и 12x12, и с этими матрицами я получил именно то, что искал. Но, когда я пытаюсь использовать один и тот же точный код для случая 348x348, я не получаю правильный вывод для умножения матриц. У меня есть чтение программы в некоторых данных и помещение данных в виде матрицы, и я проверил, чтобы все данные были прочитаны правильно. Но я все еще просто не получаю правильный продукт из матриц. Я использую C++-библиотеку Eigen, и я читаю числа для элементов матрицы как двойные. Мой учитель сделал расчет с ее собственной программой, и она получает правильный результат. Итак, мне просто интересно, может ли кто-нибудь указать мне в правильном направлении, чтобы выяснить, что не так?C++ Multiplying Large Matrices
myOutfile << NormCoord.transpose() * SqrtMass * NormCoord << endl;
Это фактическое умножение. Я должен получить идентификационную матрицу, но с большей матрицей диагональные элементы отключены в 2 раза, а некоторые из недиагональных элементов немного слишком велики порядка 0,0001, когда я хочу, чтобы они были по крайней мере на порядок 10^(- 6)
Мы, наверное, можно, но только если вы размещаете по крайней мере, некоторые из вашего кода. Не видя, что вы сделали, это все догадывается, что вы сделали неправильно. – nhgrif
Проводка кода поможет, без кода невозможно узнать, в чем проблема. –
Какую часть моего кода я должен публиковать? Это довольно простой код просто потому, что Eigen упрощает работу с матрицами и, как я уже сказал, при использовании меньших матриц я получал правильный вывод. – user2581502