Advanced Math Library 🧮 C语言数学计算库

C11 跨平台 高性能 CMake构建

一个完整的C语言数学计算库,提供代数、线性代数、几何、微积分、统计学和数值方法等模块,适用于科学计算、工程仿真和教育应用。

📖 概述

Advanced Math Library 是一个用C11编写的轻量级数学库,提供丰富的数学函数和数据结构。核心模块包括:

🧮 代数运算

二次方程求解、多项式运算、高斯消元法、矩阵求逆。

📐 线性代数

向量/矩阵运算、LU分解、幂法求特征值、QR分解框架。

📏 几何计算

2D/3D点线距离、面积/体积、圆/球/三角形/矩形运算。

📈 微积分

数值微分(中心差分)、积分(辛普森/Romberg)、常微分方程求解(欧拉/RK4)。

📉 统计学

描述性统计、概率分布、随机数生成、线性回归、t检验。

🔢 数值方法

二分法/牛顿法求根、黄金分割优化、拉格朗日插值、ODE系统求解。

✨ 核心特性

⚡ 快速开始

最简单的使用示例:

#include <stdio.h>
#include "algebra.h"
#include "statistics.h"

int main() {
    // 二次方程求解
    QuadraticSolution sol = solve_quadratic(1, -3, 2);
    printf("x² - 3x + 2 = 0 的解: %.2f, %.2f\n", 
           sol.root1.real, sol.root2.real);
    
    // 统计分析
    double data[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    printf("均值: %.2f, 标准差: %.2f\n",
           statistics_mean(data, 10),
           statistics_std_dev(data, 10));
    
    return 0;
}
💡 所有函数都定义在对应的头文件中,链接时使用 -lmath_static-ladv_math

📦 编译与依赖

Ubuntu/Debian 依赖安装

sudo apt update
sudo apt install build-essential cmake

CMake 构建

git clone https://github.com/example/AdvancedMathLibrary.git
cd AdvancedMathLibrary
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j4
# 运行演示程序
./math_demo

构建选项

选项说明默认值
BUILD_TESTING构建单元测试OFF
BUILD_EXAMPLES构建示例程序OFF
BUILD_DOCS生成Doxygen文档OFF

🏗️ 架构设计

库采用模块化分层架构,各模块职责清晰:

🛠️ 基础工具 (math_utils)

提供基础数学函数、复杂数和内存管理。

主要函数

double* vector = math_vector_create(10);

📊 代数运算 (algebra)

二次方程求解

QuadraticSolution solve_quadratic(double a, double b, double c)

返回 QuadraticSolution 结构,包含根和实根个数。

多项式运算

线性方程组求解

LinearSystemSolution solve_linear_system_gauss(double** A, double* b, int n)

使用高斯消元法求解 Ax = b,返回解向量。

矩阵运算

📐 线性代数 (linear_algebra)

向量操作

矩阵操作

矩阵存储为 double**,行优先,使用 math_matrix_create() 分配内存。

📏 几何计算 (geometry)

2D几何类型

3D几何类型

主要函数

📈 微积分 (calculus)

数值微分

DerivativeResult derivative_central(MathFunction f, double x, double h)

中心差分公式,误差估计通过比较不同步长获得。

数值积分

常微分方程

多变量微积分

📉 统计学 (statistics)

描述性统计

概率分布

随机数生成

回归与检验

🔢 数值方法 (numerical_methods)

方程求根

优化方法

插值

所有数值方法均提供迭代次数和误差估计,支持自定义容差。

💡 示例程序

库提供了多个示例程序展示核心功能:

示例文件描述
math_demo.c主演示程序,展示代数、几何、微积分、统计、线性代数
example_algebra.c二次方程求解和线性方程组演示
test_algebra.c代数模块单元测试
test_geometry.c几何模块单元测试

编译并运行示例

cd build
make math_demo
./math_demo

📚 API 参考摘要

错误处理

所有函数使用 MathError 枚举返回状态:MATH_SUCCESS, MATH_ERROR_DIVISION_BY_ZERO, MATH_ERROR_SINGULAR_MATRIX, MATH_ERROR_NO_CONVERGENCE 等。

内存管理

动态分配的函数如 polynomial_create()matrix_inverse() 返回需要释放的内存,使用对应的 _free 函数或 math_vector_free() / math_matrix_free()

double** mat = math_matrix_create(3, 3); // ... 使用矩阵 ... math_matrix_free(mat, 3);

⚖️ 许可证

MIT License

Copyright (c) 2025 AdvancedMathLibrary Contributors

本软件按“原样”提供,不提供任何明示或暗示的保证。允许自由使用、修改、分发,需保留版权声明。

📐 Advanced Math Library · C语言数学计算库 · 文档生成于 2026-03-21