本项目是一个基于 C++17 开发的高性能线性代数工具库。通过严谨的四层架构设计,实现了从底层向量运算到高层方程组求解、特征值计算及分块矩阵运算的完整功能。
代码采用了分层设计(Layered Design),确保了极高的模块化程度和可维护性:
-
Layer 0:
vector.h- 原子向量操作。实现向量空间$V^n$ 的基本定义。 -
Layer 1:
matrix.h- 基础矩阵层。支持内存管理、QR 分解及基础行列变换。 -
Layer 2:
RREF.h- 矩阵变换算法。核心实现带主元选择的高斯-约当消元逻辑。 -
Layer 3: 综合应用层
-
SolvingEquation.h: 线性方程组全自动化求解。 -
VectorSet.h: 向量组线性相关性分析及正交化。 -
BlockMatrix.h: 分块矩阵的高阶运算逻辑。
-
在 vector.h 中,我们实现了基于
RREF.h 实现了带主元选择的消元算法。通过初等行变换将矩阵
在 SolvingEquation.h 中,程序通过比较系数矩阵
-
唯一解:
$\text{rank}(A) = \text{rank}(A|\mathbf{b}) = n$ -
无穷多解:
$\text{rank}(A) = \text{rank}(A|\mathbf{b}) < n$ -
无解:
$\text{rank}(A) < \text{rank}(A|\mathbf{b})$
matrix.h 中通过连续相似变换寻找特征值,矩阵将逐步收敛至上三角阵(Schur Form):
程序能自动处理包含自由变量的非齐次方程组。
输入示例:
程序输出:
[Status] Infinite Solutions Detected.
[Particular Solution] x_p = (3, 0)^T
[Basis of Null Space] η1 = (-2, 1)^T
在 Matrix 类中广泛使用 std::move,将复杂度从 $O(n^2)$ 的拷贝降至 $O(1)$ 的指针转移。数值稳定性:在消元时搜索当前列绝对值最大的元素作为主元,抑制浮点误差:C++int max_row = find_max_pivot(current_col); swap_rows(current_row, max_row);
利用 std::invalid_argument 对维度不匹配或不可逆矩阵进行严格校验。🛠 快速上手1. 编译 (Requires C++17)Bashg++ -std=c++17 main.cpp -o matrix_calc
Bash./matrix_calc