Yufmath - 计算机代数系统
Yufmath 是一个基于 Rust 编写的高性能计算机代数系统(CAS)库,提供符号数学计算、精确算术运算和多种接口支持。
本项目由 Kiro 提供部分支持
[!CAUTION] 这个库仍然处于不稳定状态
主要特性
- 精确计算:支持任意精度整数、有理数和复数运算,避免浮点数精度损失
- 符号计算:代数表达式的符号操作、简化和变换
- 微积分:符号求导和积分功能
- 多接口支持:Rust 原生 API、C++ 绑定、命令行工具
- 高性能:优化的算法实现和智能缓存机制
- 类型安全:利用 Rust 的类型系统确保计算的正确性
快速开始
安装
将以下内容添加到您的 Cargo.toml
文件中:
[]
= "0.1.0"
基本使用
use Yufmath;
命令行工具
安装命令行工具:
使用示例:
# 基本计算
# 表达式简化
# 求导
# 积分
# 交互模式
核心功能
精确数值计算
Yufmath 优先使用精确表示,支持:
- 任意精度整数:无精度限制的整数运算
- 任意精度有理数:精确的分数运算
- 任意精度实数:高精度实数计算
- 复数:支持复数的各种运算
- 符号表示:无法精确计算时保持符号形式
use ;
use BigInt;
let yuf = new;
// 大整数运算
let big_num = integer;
let result = yuf.compute?;
// 精确有理数
let fraction = rational; // 22/7 的精确表示
符号计算
支持各种符号数学运算:
let yuf = new;
// 代数简化
let expr = yuf.parse?;
let expanded = yuf.simplify?; // x^2 + 2*x + 1
// 因式分解
let factored = yuf.compute?; // (x - 2)(x + 2)
// 多项式运算
let collected = yuf.compute?; // 2*x^2 + 2*x
微积分
let yuf = new;
// 符号求导
let expr = yuf.parse?;
let derivative = yuf.diff?; // 2*x*cos(x^2) - sin(x)
// 符号积分
let integral = yuf.integrate?; // x^2 + x + C
// 定积分(计划中的功能)
// let definite = yuf.definite_integral(&expr, "x", 0, 1)?;
架构设计
Yufmath 采用模块化设计,主要组件包括:
- 核心模块 (
core/
):表达式、数值类型、运算符定义 - 解析器 (
parser/
):词法分析和语法分析 - 计算引擎 (
engine/
):数学运算和简化算法 - 格式化器 (
formatter/
):多种输出格式支持 - API 接口 (
api/
):Rust 原生 API - 命令行工具 (
cli/
):交互式和批处理模式 - FFI 接口 (
ffi/
):C++ 语言绑定
性能特性
- 智能缓存:多层缓存系统提高重复计算效率
- 惰性求值:延迟计算优化性能
- 并行计算:支持并行处理复杂表达式
- 内存优化:表达式共享和写时复制策略
开发状态
Yufmath 目前处于积极开发阶段。已完成的功能:
- 项目基础架构
- 基础数值系统(开发中)
- 表达式解析器(计划中)
- 计算引擎(计划中)
- 命令行工具(计划中)
贡献
我们欢迎各种形式的贡献!请查看 CONTRIBUTING.md 了解如何参与项目开发。
许可证
本项目采用 MIT 许可证。详情请查看 LICENSE 文件。