如何用代数工具创建一个双精度矩阵
how can I create a matrix of double with alglib?
我需要用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
相关文章:
- 将双精度变量设置为另一个变量的值
- 我在C++中使用提升哈希函数将 3 个双精度组合成一个面临冲突的哈希
- 为什么 Clang std::ostream 写一个 std::istream 无法读取的双精度?
- Fmod 函数清楚地输出一个预期的双精度值,但 if(fmod == 预期的双精度值)的计算结果不是 true
- C++ 警告:在一个声明中将截断从双精度初始化为浮点数,但在另一个声明中则不初始化
- 字符串和双精度的麻烦,等值后再得到一个数字
- 我想读取文本文件中的所有内容(但文本文件中只有一个双精度值),转换为双精度值并返回值
- 在编译时将整数和分数部分宏组合成一个新的宏或双精度
- 将 32 位浮点数和不强制转换的 32 位整数与双精度进行比较,当其中一个值可能太大而无法完全适合另一种类型时
- 有没有办法构造一个 constexpr 函数来获取双精度的位表示
- C++ 传递一个 int,错误地说这是一个双精度
- 在C++中获取大于或等于一个双精度的最小浮点值(以及小于或等于一的最大浮点值)
- 在字符串(C++)的末尾添加一个双精度
- C++试图返回一个双精度数组的字符串(有点)
- 如何找到最近的下一个/上一个双精度值(给定数字的numeric_limits::epsilon)
- C++函数在一个双精度数组中查找最大值
- 两个整型到一个双精度c++
- 如何用代数工具创建一个双精度矩阵
- 当我从函数返回一个双精度值时,它变成了一个整数
- 在程序中稍后传递一个双精度-使用对话框进行输入