Как я могу создать матрицу double с alglib?

Мне нужно создать матрицу с помощью alglib, потому что мне нужно использовать функцию, содержащуюся в библиотеке, но мне нужно, чтобы моя матрица содержала элемент типа double (или что-то похожее на double, реализованное в alglib), как я могу это сделать?

если это невозможно, знает ли кто-нибудь библиотеку, которая реализует функцию SVD даже для матрицы типа double?

Я использую с ++.

благодарю вас

2 ответа

Для текущей версии alglib на момент написания 2D матрица значений двойной точности может быть создана следующим образом:

ap::real_2d_array matrix;
double data[4] = {0.1, 0.2,
                  0.3, 0.4};
matrix.setcontent(1, 2, 1, 2, data);

Матрица, созданная кодом, будет выглядеть так:

0.1  0.2

0.3  0.4

Функция setcontent определяет то, что определяет размеры и содержание матрицы. У него есть следующее определение:

setcontent(int row_start_index, int row_end_index, int col_start_index, int col_end_index, data)

В качестве альтернативы, если вы хотите установить размеры матрицы, не заполняя ее данными, вы можете использовать следующее:

setbounds(int row_start_index, int row_end_index, int col_start_index, int col_end_index)

В руководстве написано:

ALGLIB (заголовок ap.h) определяет несколько "базовых" типов данных (типов, которые используются всеми пакетами) и множество типов данных, специфичных для каждого пакета. "Основные" типы данных:

alglib:: ae_int_t - целочисленный тип со знаком, используемый библиотекой

alglib:: complex - тип данных двойной точности complex, безопасная замена для std:: complex

alglib:: ap_error - исключение, которое выдается библиотекой

boolean_1d_array - одномерный логический массив

integer_1d_array - одномерный целочисленный массив

real_1d_array - одномерный вещественный массив (с двойной точностью)

complex_1d_array - одномерный комплексный массив

boolean_2d_array - 2-мерный логический массив

integer_2d_array - 2-мерный целочисленный массив

real_2d_array - двумерный вещественный массив (с двойной точностью)

complex_2d_array - 2-мерный комплексный массив

Остальное должно быть довольно простым.

Это должно создать матрицу 2x2:

alglib::real_2d_array r2("[[1.1,2.2],[3.3,4.4]]");

результат:

1.1  2.2

3.3  4.4
Другие вопросы по тегам