Metadata-Version: 2.4
Name: CalculusCalculator
Version: 1.6.3
Summary: A powerful GUI-based calculus calculator for symbolic mathematics, derivatives, integrals, and more.
Author-email: LiMingkang <limingkang12345@163.com>
License: MIT
Project-URL: Homepage, https://github.com/limingkang12345/CalculusCalculator
Project-URL: Bug Reports, https://github.com/limingkang12345/CalculusCalculator/issues
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Intended Audience :: Education
Classifier: Topic :: Scientific/Engineering :: Mathematics
Requires-Python: >=3.8
Description-Content-Type: text/markdown
Requires-Dist: PySide6>=6.9.1
Requires-Dist: sympy>=1.14.0
Requires-Dist: matplotlib>=3.10.9
Requires-Dist: PyQtDarkTheme-fork>=2.3.6
Requires-Dist: latex2sympy2>=1.9.1
Requires-Dist: lazy_loader>=0.4

# CalculusCalculator 微积分计算器

**CalculusCalculator** 是一个基于 SymPy 和 PySide6 的图形化微积分计算工具，支持求导、积分、函数性质分析、表达式变形、方程（组）与不等式（组）求解、微分方程求解、符号计算、向量运算、解三角形、函数绘图、**平面/立体几何定义、计算与绘图**等功能，并提供了存档/读档及 Web 版本。

[![Python](https://img.shields.io/badge/Python-3.8%2B-blue)](https://www.python.org/)
[![PySide6](https://img.shields.io/badge/PySide6-6.9.1-green)](https://pypi.org/project/PySide6/)
[![SymPy](https://img.shields.io/badge/SymPy-1.14.0-orange)](https://www.sympy.org/)

---

## 基本信息

- **项目地址**：[GitHub - limingkang12345/CalculusCalculator](https://github.com/limingkang12345/CalculusCalculator)
- **网页版**：[https://limingkang.pythonanywhere.com](https://limingkang.pythonanywhere.com)
- **最新版本**：v1.6.3
- **开发语言**：Python 3.8+
- **核心库**：SymPy（符号计算）、PySide6（GUI 框架）、Matplotlib（几何绘图）
- **功能概览**：
  - 显函数 / 隐函数求导（支持代入求值）
  - 不定积分 / 定积分
  - 函数值域、单调区间、奇偶性、周期、最值
  - 表达式化简、展开、因式分解、通分、部分分式、三角恒等变换、对数变换、换元等 13 种方法
  - 方程、不等式、方程组、不等式组的求解
  - 常微分方程求解
  - 符号计算：三种计算引擎（Python 内置 / Mpmath 高精度 / SymPy 符号），支持 LaTeX 渲染与源码复制
  - 自定义函数列表（`fs` 字典），支持函数调用传参 `f(3)` 及嵌套调用 `f(g(2))`
  - 分母有理化：求导、积分、方程求解等结果自动执行有理化
  - **向量运算**（v1.5.0）：定义二维向量，支持加法、减法、点积、夹角计算及向量属性显示
  - **解三角形**（v1.5.0）：支持 ASA、AAS、SAS、SSA、SSS 等多种三角形条件求解
  - **函数绘图**（v1.5.0）：基于 Matplotlib 绘制函数图像，支持自定义定义域
  - **平面几何**（v1.5.1）：定义点/直线/线段/圆/三角形/多边形，支持位置关系构造（中垂线、角平分线、中线、高线、内切圆、旁切圆等），复选框筛选绘图
  - **立体几何**（v1.5.1）：定义三维点/直线/线段/平面，支持平行/垂直构造、垂足计算、斜二测画法，复选框筛选 3D 绘图
  - **几何计算**（v1.5.2）：平面几何 32 种运算（两点距离、中点、共线判断、直线/圆/三角形/多边形属性、向量计算、变换等）、立体几何 22 种运算（三维点/线/面关系、四面体体积、斜二测投影/面积变换等）
  - **回车快捷键**（v1.5.2）：各页面主要文本输入框支持回车键触发对应按钮功能
  - 工程存档/读档（JSON 格式），支持保存所有几何对象
  - **LaTeX 代码直接输入**（v1.6.1）：在表达式前添加 `$` 标识，可直接输入 LaTeX 代码，系统自动解析为 SymPy 表达式

## v1.6.3 更新内容

1. **设置选项卡**：新增"设置"选项卡，并将主题样式设置项移入设置选项卡
2. **语言设置**：新增"语言"设置项，支持英语界面
3. **帮助文档**：新增内置"帮助文档"，提供用户文档与 API 文档
4. **修复积分**：修复不能进行不定积分和定积分的问题
5. **资源优化**：去掉 `resources_rc.py` 中打包的 MathJax 库，并缩小 ico 体积

---

## v1.6.2 更新内容

1. **更换公式显示组件**：数学公式显示组件由旧组件更换为 `QGraphicsView`，大幅减小程序打包体积
2. **重构项目结构**：增强项目规范性
3. **启动加速**：使用 `lazy_loader`，加快程序启动速度
4. **修复样式**：修复暗色主题下帮助文档内容样式错误的问题

---

## v1.6 更新内容

1. **窗口布局更新**：所有窗口部件的位置现在会根据窗口大小自适应变化
2. **现代化 UI**：使用 PyQtDarkTheme-fork 样式库，实现现代化扁平 UI
3. **界面主题**：新增"界面主题"菜单项，支持切换浅色与深色主题
4. 额外提供了 Nuitka 编译版本（Compiled）

---

## v1.6.1 更新内容

1. **LaTeX 代码输入支持**：支持直接输入 LaTeX 代码，需在 LaTeX 代码前添加 `$` 标识，系统自动将 LaTeX 转换为对应的 SymPy 表达式
2. **帮助页面性能优化**：帮助页面的静态文档显示组件由 `QWebEngineView` 改为 `QTextBrowser`，显著提升加载性能
3. 更新帮助文档与 README

---

## v1.5.2 更新内容

1. **几何计算**：新增"平面计算"和"立体计算"页面，使用已定义对象进行几何运算——平面 32 种（距离/中点/共线/直线方程/交点/夹角/圆/三角形/多边形/向量/变换）、立体 22 种（三维距离/投影/共面/线面关系/四面体体积/斜二测画法面积变换）
2. **回车快捷键**：为所有有配套按钮的文本输入框增加回车触发计算/保存功能
3. **菜单栏调整**：新增"计算"菜单项，其下归类"计算""平面计算""立体计算"
4. **帮助页面优化**：帮助窗口现在随主窗口缩放自适应调整大小

---

## v1.5.1 更新内容

1. **平面几何**：新增平面几何对象定义（点/直线/线段/圆/三角形/多边形），支持 19 种位置关系构造方法（中垂线、角平分线、平行线、垂线、中线、高线、中位线、内切圆、旁切圆等）
2. **立体几何**：新增立体几何对象定义（三维点/直线/线段/平面），支持平行/垂直构造、垂足计算、斜二测画法面积缩放
3. **几何绘图**：平面几何与立体几何均可通过复选框筛选要绘制的对象，基于 Matplotlib 渲染
4. 更正平面几何与立体几何定义页面的下拉框参数提示
5. 修复几何绘图中的字体渲染、直线符号匹配、存档/读档类型兼容等问题

---

## v1.5.0 更新内容

1. 新增**向量**功能，支持定义二维向量并执行简单的向量运算（加法、减法、点积、夹角、模、方向角、单位向量）
2. 新增**解三角形**功能，支持 ASA、AAS、SAS、SSA、SSS 等多种三角形条件求解
3. 新增**绘图**功能，支持绘制单个函数的图像
4. 更改菜单栏布局，"新建"更名为"功能"，并对功能进行归类
5. 修复函数名被错误识别的问题（定义函数 t 后会将 sqrt 的 t 误替换为函数 t）

---

## v1.4.4 更新内容

1. **计算选项卡**：新增计算选项卡，支持高精度和符号运算及 LaTeX 代码生成
2. **函数调用**：定义的函数现在可以 `函数名(自变量值)` 形式直接调用，支持嵌套函数输入
3. **分母有理化**：大部分计算结果现在会自动执行分母有理化
4. **不等式解集**：不等式组的解现在以集合或区间的形式返回
5. **存档增强**：方程组和不等式组现在也会被写入存档
6. **UI 微调**：微调界面以适配新版系统环境
7. **修复**：修复求解方程组时多解导致报错的问题
8. 更新帮助文档

---

## v1.4.3 更新内容

1. **存档功能**：新增存档功能，可通过 JSON 保存或读取存档
2. **性能修复**：修复启动后初次新建选项卡可能引发卡顿的问题
3. 使用 WinRAR 创建更完整的安装程序，并使用 7z 创建更小的压缩包

---

## v1.4.2 更新内容

- 修复代数式在输入时被自动化简，及在求解问题时不自动化简的问题

---

## v1.4.1 更新内容

1. **重构 UI**：用户可以像操作浏览器一样增减功能标签页
2. **首页改版**：更换首页样式
3. **菜单栏**：新增菜单栏，并在"关于"中添加 GitHub 链接与网页版链接
4. **修复**：修复方程组结果不能正常显示的 bug
5. **架构变动**：UI 相关内容移至 `ui` 目录下
6. **体积优化**：缩小打包后程序体积

---

## 亮点分析

1. **功能全面**  
   覆盖了微积分、代数、方程求解、几何计算中的常见需求，从基础的化简求导到隐函数、微分方程、平面立体几何一应俱全。

2. **可视化界面**  
   基于 PySide6 构建多标签页界面，每个功能独立窗口，计算结果以 LaTeX 形式在 `QGraphicsView`（SVG）中实时渲染，帮助文档使用 `QTextBrowser` 显示。

3. **自定义函数**  
   用户可以定义 `f(x)`、`g(t)` 等函数，并在后续计算中通过 `f(3)`、`f(g(2))` 等形式直接调用，极大提升了灵活性和复用性。

4. **分母有理化**  
   计算结果如含根号分母，自动执行有理化（如 `1/sqrt(2)` → `sqrt(2)/2`），使表达式更符合数学规范。

5. **多引擎计算**  
   新增的"计算"选项卡提供三种引擎：Python 内置适用于简单数值计算，Mpmath 适用于高精度计算，SymPy 适用于符号运算与 LaTeX 生成。

6. **存档与恢复**  
   可以将当前所有标签页的输入、自定义函数列表、标签页序号、几何对象等保存为 JSON 文件，下次打开时自动恢复现场。

7. **跨平台打包**  
   提供了 `cx_Freeze` 的打包配置（`setup.py`），可以生成 Windows 可执行文件，便于分发。

8. **向量运算**（v1.5.0 新增）  
   支持定义二维向量，查看向量的模、方向角、单位向量等属性，并可进行向量加法、减法、点积、夹角计算。

9. **解三角形**（v1.5.0 新增）  
   输入三角形的已知角度和边长条件，系统自动识别 ASA、AAS、SAS、SSA、SSS 等情形并求解，支持多解情况。

10. **函数绘图**（v1.5.0 新增）  
    基于 Matplotlib 绘制单个函数的图像，支持自定义定义域，自动处理间断点断线。

11. **平面/立体几何**（v1.5.1 新增）  
    支持平面几何 19 种构造和立体几何 12 种构造，并通过复选框筛选绘图，基于 Matplotlib 渲染 2D/3D 图像。

12. **几何计算**（v1.5.2 新增）  
    在已定义几何对象的基础上，提供平面几何 32 种和立体几何 22 种运算，涵盖距离、中点、投影、面积、体积、向量、斜二测画法面积变换等。

13. **回车快捷键**（v1.5.2 新增）  
    各页面主要输入框支持回车触发对应按钮，无需鼠标点击，提升操作效率。

14. **Web 版补充**  
    除了桌面客户端，还提供了在线网页版（基于 PythonAnywhere），方便快速体验。

15. **LaTeX 代码直接输入**（v1.6.1 新增）  
    在表达式前添加 `$` 标识即可直接输入 LaTeX 代码（如 `$\frac{x}{2}`），系统自动将 LaTeX 解析为 SymPy 表达式进行计算。

---

## 部署使用

### 环境准备

- Python 3.8 或更高版本
- 推荐使用虚拟环境

### 安装依赖

```bash
pip install -r requirements.txt
```

`requirements.txt` 内容：

- PySide6==6.9.1
- sympy==1.14.0
- numpy
- matplotlib

### 运行桌面版

```bash
python run.py
```

### 使用网页版

直接访问 https://limingkang.pythonanywhere.com 即可在线使用，无需安装。

### 打包教程

项目使用 cx_Freeze 将 Python 脚本打包为独立的 Windows 可执行文件。

安装打包依赖：

```bash
pip install cx_Freeze
```

在根目录执行打包命令：

```bash
python setup.py build
```

打包完成后，可执行文件位于 build/exe.win-amd64-3.x/ 目录下（具体名称取决于系统和 Python 版本）。

---

## 缺点简述

- 性能限制：对于极其复杂的符号表达式，SymPy 计算可能会较慢或内存占用较高。
- 表达式解析宽容度：依赖 SymPy 的 sympify，用户输入需基本符合 Python/SymPy 语法，对不规范的表达式可能报错。
- 打包体积：cx_Freeze 打包后的程序体积较大（约 100+ MB），因为包含了整个 Python 环境和依赖库。
- Web 版功能：在线版本受限于 PythonAnywhere 的资源，可能无法处理过大的计算任务。

---

## 附：文件结构说明

```
CalculusCalculator/
├── run.py               # 程序入口
├── setup.py             # cx_Freeze 打包脚本
├── requirements.txt     # Python 依赖列表
├── update.txt           # 版本更新日志
├── mkdocs.yml           # 文档站（MkDocs）配置
├── README.md            # 项目说明
├── resources_rc.py      # 编译后的资源文件
├── core/                # 核心模块
│   ├── sympify.py       # 表达式安全转换、函数调用预处理、LaTeX 解析
│   └── render.py        # 公式渲染（SVG / QGraphicsView）
├── functions/           # 各计算功能实现
│   ├── derivative.py    # 显/隐函数求导
│   ├── integral.py      # 积分计算
│   ├── functions.py     # 函数性质分析
│   ├── simplification.py # 表达式变形（13 种方法）
│   ├── solvers.py       # 方程/不等式/微分方程/解三角形求解
│   ├── planes.py        # 平面几何计算与构造 API
│   ├── solids.py        # 立体几何计算与构造 API（含斜二测画法）
│   ├── paint2D.py       # 平面几何绘图渲染
│   ├── paint3D.py       # 立体几何 3D 绘图渲染
│   └── saves.py         # JSON 存档/读档
├── ui/                  # 界面层（PySide6）
│   ├── __init__.py      # 各选项卡逻辑实现汇总
│   ├── main.py          # 主窗口逻辑
│   ├── i18n.py          # 语言 / 主题读写与切换
│   ├── ui_main.py       # 主窗口布局（自动生成）
│   ├── <功能>.py         # 各功能页逻辑，如 dingyi / qiudao / jifen / bianxing /
│   │                    #   fangcheng / fangchengzu / budengshi / budengshizu / jisuan /
│   │                    #   shouye / dingyixiangliang / huitu_hanshu / jiesanjiaoxing /
│   │                    #   dingyi_pj / huitu_pj / dingyi_lj / huitu_lj / pjjisuan /
│   │                    #   ljjisuan / help / shezhi 等
│   └── ui_*.py          # 各功能页布局（自动生成）
├── i18n/                # 翻译源文件
│   ├── zh_CN.ts         # 中文翻译源
│   └── en_US.ts         # 英文翻译源
└── docs/                # 文档源码（MkDocs 构建）
    ├── index.md         # 首页
    ├── about.md         # 关于 / 版本历史
    ├── guide/           # 用户指南（quickstart / installation / configuration）
    └── api/             # API 参考（core/、modules/）
```

## 许可证

本项目采用 MIT 许可证。

## 作者

LiMingkang

- GitHub: [limingkang12345](https://github.com/limingkang12345)
- 网页版: [https://limingkang.pythonanywhere.com](https://limingkang.pythonanywhere.com)
- PYPI: [https://pypi.org/project/CalculusCalculator/](https://pypi.org/project/CalculusCalculator/)

欢迎 Star、Issue 和 Pull Request！
