线性代数库 Armadillo 学习笔记
项目环境
Language | Package | IDE | Complier | OS |
---|---|---|---|---|
c99++ | Armadillo-10.7.5 | Xcode 12 | clang-1200.0.32.21 | OS Cataline 10.15.7 |
Xcode 项目配置
分别添加 libblas.tbd
,libcblas
,Accelerate.framework
组件.
前置代码
#include <iostream>
#include "../armadillo-10.7.5/include/armadillo"
using namespace std;
using namespace arma;
int main(int argc, const char * argv[]) {
cout << "Armadillo version: " << arma_version::as_string() << endl;
// insert code here...
return 0;
}
矩阵基本操作
全零矩阵
mat A( 3, 3, fill::zeros );
全一矩阵
mat A( 3, 3, fill::ones );
对角矩阵
mat I( 3, 3, fill::eyes );
打印一个矩阵
A.print("A:");
修改获取矩阵元素
auto x = A.at(1,1);
A(1,1) = 4;
获取某行某列
vec y1 = A.row(1);
vec x2 = A.col(2);
获取对角向量
vec D = A.diag();
转置矩阵
mat B = A.t();
逆矩阵
mat B = inv(A);
矩阵迹
auto t = trace(A);
行列式值
auto d = det(A);
实用案例
解线性方程组
{ 10 x 1 + 10 x 2 + 10 x 3 + b = 30 100 x 1 + 10 x 2 + 10 x 3 + b = 60 10 x 1 + 100 x 2 + 10 x 3 + b = 70 10 x 1 + 10 x 2 + 100 x 3 + b = 65 \begin{cases} &10x_1+10x_2+10x_3+b &= 30\\ &100x_1+10x_2+10x_3+b &= 60\\ &10x_1+100x_2+10x_3+b &= 70\\ &10x_1+10x_2+100x_3+b &= 65 \\ \end{cases} ⎩⎪⎪⎪⎨⎪⎪