如何用代数工具创建一个双精度矩阵

how can I create a matrix of double with alglib?

本文关键字:一个 双精度 何用代 工具 创建      更新时间:2023-10-16

我需要用alglib创建一个矩阵,因为我需要使用库中包含的函数,但我需要我的矩阵包含double类型的元素(或类似于在alglib中实现的double)我该怎么做呢?

如果它是不可能的,有人知道一个库,实现SVD函数,甚至为矩阵的类型双?

我正在使用c++。

谢谢

对于撰写本文时的当前版本的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 header)定义了几个"基本"数据类型(所有包使用的类型)和许多包特定的数据类型。"基本"数据类型是:

alglib::ae_int_t -库使用的有符号整数类型

alglib::complex -双精度复杂数据类型,更安全的替换std::复杂的

alglib::ap_error -库

抛出的异常

boolean_1d_array -一维布尔数组

integer_1d_array -一维整数数组

real_1d_array -一维实(双精度)数组

complex_1d_array -一维复杂数组

boolean_2d_array -二维布尔数组

integer_2d_array -二维整型数组

real_2d_array -二维实(双精度)数组

complex_2d_array -二维复杂数组

剩下的应该非常简单。

这将创建一个2x2矩阵:

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

1.1  2.2
3.3  4.4
相关文章: