跳转至

数学运算

TinyMath — 为边缘计算打造的数学库

覆盖基础线性代数、复数运算、矩阵分解、特征值分析到迭代方法。C 和 C++ 双 API,从向量乘法到结构模态分析一应俱全。


架构速览

  • Vec 向量运算


    tiny_vec · 一维向量算术
    add · sub · mul · div · sqrt · dot product

    API →

  • Mat 矩阵类 (C++)


    tiny_matrix · RAII 矩阵类
    构造函数 · ROI · 运算符重载
    分解 · 特征值 · 求解器

    概览 →

  • tiny_mat 矩阵 (C)


    tiny_mat · 纯 C 矩阵操作
    逐元素运算 · QR 分解
    最小体积 (~2 KB)

    API →

  • Linalg 基础线性代数


    tiny_linalg · add / sub / mul
    transpose · norm · eye · fill · diag
    第 1 层 — 所有上层模块的基础

    API →

  • Cfloat 复数运算


    tiny_cfloat · 复数类型与运算
    add · sub · mul · div · abs · arg · log · sqrt
    第 2 层 — QR 特征值的基础

    API →

  • Decomp 矩阵分解


    tiny_decomp · MGS QR · Householder QR
    第 3 层 — ERA / SSI / 最小二乘的核心

    API →

  • Eigen 特征值与模态


    tiny_eigen · Francis QR · 2×2 闭式解
    tiny_modal · 极点→频率/阻尼 · MAC
    第 4 层 — 结构动力学分析

    API →

  • Iterative 迭代方法


    tiny_iterative · Arnoldi · Lanczos · RSVD
    算子接口 · Hankel / 协方差算子
    第 5 层 — 大规模稀疏系统

    API →


场景索引

  • 基础矩阵运算

    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);
#include "tiny_mat.h"

float A[9] = {4,1,1, 1,3,2, 1,2,5};
float B[9] = {1,0,0, 0,1,0, 0,0,1};
float C[9];

// 矩阵乘法
tiny_mat_mult_f32(A, B, C, 3, 3, 3);

// QR 分解
float Q[9], R[9];
tiny_decomp_mgs_qr_f32(A, 3, 3, Q, R, NULL, 1);

依赖链

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 层

代码结构

include/    tiny_math.h · tiny_math_config.h · tiny_constants.h · tiny_error_type.h
vec/        向量运算
mat/        C++ tiny::Mat 类 + C tiny_mat + print helpers
linalg/     基础线性代数
cfloat/     复数运算
decomp/     QR 分解 (MGS · HQR)
eigen/      特征值 · 模态分析
iterative/  迭代方法 · 算子接口
test/       自测套件