数学运算¶
TinyMath — 为边缘计算打造的数学库
覆盖基础线性代数、复数运算、矩阵分解、特征值分析到迭代方法。C 和 C++ 双 API,从向量乘法到结构模态分析一应俱全。
架构速览¶
-
Vec 向量运算
tiny_vec· 一维向量算术
add · sub · mul · div · sqrt · dot product -
Mat 矩阵类 (C++)
tiny_matrix· RAII 矩阵类
构造函数 · ROI · 运算符重载
分解 · 特征值 · 求解器 -
tiny_mat 矩阵 (C)
tiny_mat· 纯 C 矩阵操作
逐元素运算 · QR 分解
最小体积 (~2 KB) -
Linalg 基础线性代数
tiny_linalg· add / sub / mul
transpose · norm · eye · fill · diag
第 1 层 — 所有上层模块的基础 -
Cfloat 复数运算
tiny_cfloat· 复数类型与运算
add · sub · mul · div · abs · arg · log · sqrt
第 2 层 — QR 特征值的基础 -
Decomp 矩阵分解
tiny_decomp· MGS QR · Householder QR
第 3 层 — ERA / SSI / 最小二乘的核心 -
Eigen 特征值与模态
tiny_eigen· Francis QR · 2×2 闭式解
tiny_modal· 极点→频率/阻尼 · MAC
第 4 层 — 结构动力学分析 -
Iterative 迭代方法
tiny_iterative· Arnoldi · Lanczos · RSVD
算子接口 · Hankel / 协方差算子
第 5 层 — 大规模稀疏系统
场景索引¶
-
基础矩阵运算
→ Linalg / Mat
-
QR 分解 / 最小二乘
→ Decomp (MGS / HQR)
-
特征值 / 模态分析
→ Eigen (Francis QR, MAC)
-
复数算术
→ Cfloat
-
大规模稀疏特征问题
→ Iterative (Arnoldi, Lanczos)
-
C++ 全功能矩阵类
→ Mat (tiny::Mat + 分解 + 求解器)
快速开始¶
#include "tiny_matrix.hpp"
// 3×3 矩阵
tiny::Mat A(3, 3);
A(0,0) = 4; A(0,1) = 1; A(0,2) = 1;
A(1,0) = 1; A(1,1) = 3; A(1,2) = 2;
A(2,0) = 1; A(2,1) = 2; A(2,2) = 5;
// LU 分解
auto lu = A.lu_decompose();
// 特征值分解(自动选择 Jacobi / QR)
auto eig = A.eigendecompose();
// 解线性方程组 Ax = b
tiny::Mat b(3, 1);
b(0,0) = 6; b(1,0) = 9; b(2,0) = 12;
tiny::Mat x = A.solve(A, b);
依赖链¶
Level 5: ITERATIVE ── Arnoldi / Lanczos / RSVD
Level 4: EIGEN ── Francis QR / 模态分析 (MAC)
Level 3: DECOMP ── MGS QR / Householder QR
Level 2: CFLOAT ── 复数运算
Level 1: LINALG ── 逐元素矩阵运算 (add/sub/mul/norm)
- 下层不依赖上层,可独立使用
- VEC (向量运算) 和 MAT (C++ Mat 类 + C helper) 为独立模块
- C++ Mat 类 内嵌了完整的分解/特征值求解器,不需调用 C 层