#c #matrix #sparse-matrix
#c #матрица #разреженная матрица
Вопрос:
Я хочу добавить две разреженные матрицы вместе в C ?
Комментарии:
1. как вы их сохраняете? Существует много способов хранения разреженной матрицы, и они более или менее независимы от используемого вами языка.
Ответ №1:
Вы добавляете матрицы в соответствии с этим правилом:
A[i,j] B[i, j] = C[i,j]
Две добавляемые матрицы должны иметь одинаковое количество строк и столбцов.
То, как вы это делаете для своей схемы хранения, зависит от того, как вы сопоставляете строки и столбцы. Но правила остаются неизменными, потому что именно так работают матрицы.
Комментарии:
1. 1, о наилучшем возможном ответе, учитывая предоставленную информацию. Возможно, стоит отметить, что условием для элемента (i, j), существующего в C, является существование этого элемента либо в A, либо В B, если вы случайно не заметили, что A [i, j] == -B [i, j], учитывая некоторую точность.
Ответ №2:
Если вы используете библиотеку boost::ublas, то вы можете просто сложить их вместе, что-то вроде этого.
#include <boost/numeric/ublas/matrix_sparse.hpp>
using namespace boost::numeric::ublas;
compressed_matrix<double > A(30000, 100, 30000 ),B(30000, 100, 30000 ),C(30000, 100, 30000 );
A(1,1) = 1.0;
B(99,99) = 10.0;
C = A B;