# IJS - Interactive Java Symja



一个基于 [Symja](https://github.com/axkr/symja_android_library) 的 Android 符号计算应用
提供类似 Mathematica 的交互式数学计算体验
[功能特性](#-功能特性) • [快速开始](#-快速开始) • [插件系统](#-插件系统) • [构建说明](#-构建说明)
---
## ✨ 功能特性
### 🧮 符号计算引擎
基于强大的 Symja 库,支持:
- **微积分**:求导、积分、极限、级数展开
- **代数**:方程求解、因式分解、化简、展开
- **矩阵**:行列式、逆矩阵、特征值、秩
- **数论**:素数、因数分解、最大公约数
- **特殊函数**:Gamma、Beta、Bessel 等
### 🎨 LaTeX 渲染
- 使用 KaTeX 实时渲染数学公式
- 支持 `TeXForm` 自动转换和显示
- 可复制 LaTeX 源码
### 🔌 插件系统
- 支持 JavaScript 自定义插件
- 完整的 Symja API 访问
- 插件导入/导出/分享
- 命令快捷方式支持
### 🎨 Canvas 绘图
- `Plot[f,{x,a,b}]` 函数图像绘制
- `ParametricPlot` 参数方程绘图
- `ListPlot` 散点图
- 双指缩放、拖拽平移、双击重置
- 多函数自动配色 + 图例
- 等比例坐标轴(圆不变椭圆)
- 💾 一键保存到系统相册
### 🌐 MCP 服务器
- 内置 Model Context Protocol 服务器
- 15 个 MCP 工具 + 2 个资源
- 支持 Claude Desktop 等 AI 客户端接入
- MCP 命令实时同步到控制台
- 端口 8734,设置面板可控开关
- 详见 [MCP_SERVER.md](MCP_SERVER.md)
### 💡 智能交互
- 自动补全函数名和命令
- ↑↓ 键浏览历史记录(持久化存储)
- 变量管理和 `%` 引用
- Jupyter 风格的执行计数器
- 设置面板:字体大小、MCP 开关
---
## 🚀 快速开始
### 基础计算
```mathematica
2 + 2 // 算术运算
Sqrt[2] // 平方根
E^(I*Pi) // 欧拉公式
% // 引用上一次输出
```
### 微积分
```mathematica
D[x^3, x] // 求导
Integrate[x^2, {x, 0, 1}] // 定积分
Limit[Sin[x]/x, x -> 0] // 极限
Series[Exp[x], {x, 0, 5}] // 泰勒展开
```
### 代数
```mathematica
Solve[x^2 - 5*x + 6 == 0, x] // 解方程
Expand[(x+1)^3] // 展开
Factor[x^2 - 4] // 因式分解
Simplify[Sin[x]^2+Cos[x]^2] // 化简
```
### 矩阵
```mathematica
Det[{{1,2},{3,4}}] // 行列式
Inverse[{{1,2},{3,4}}] // 逆矩阵
Eigenvalues[{{1,2},{3,4}}] // 特征值
```
### 绘图
```mathematica
Plot[Sin[x], {x, 0, 2*Pi}] // 函数图像
ParametricPlot[{2*Cos[t], 2*Sin[t]}, {t,0,2*Pi}] // 圆
ListPlot[{{1,1},{2,4},{3,9}}] // 散点
```
### LaTeX 渲染
```mathematica
TeXForm[Integrate[x^2, x]] // 自动渲染为数学公式
TeXForm[Sum[1/n^2, {n, 1, Infinity}]]
```
### 特殊命令
```
help 显示帮助
clear 清空输出
vars 显示已定义变量
plugins 打开插件管理
history 显示命令历史
```
---
## 🔌 插件系统
### 插件结构
插件是 JSON 格式文件,支持自定义数学计算功能:
```json
{
"id": "circle_area",
"name": "圆面积计算器",
"icon": "⭕",
"command": "circle",
"inputs": [
{
"name": "radius",
"label": "半径",
"defaultValue": "1"
}
],
"jsCode": "function calculate(inputs, Symja) {\n Symja.print('计算圆面积');\n return `Pi*${inputs.radius}^2`;\n}"
}
```
### 使用插件
```mathematica
circle[5] // 执行插件命令
```
### Symja API
插件可访问完整的 Symja API:
```javascript
// 基础
Symja.eval(expr)
Symja.print(message)
// 微积分
Symja.differentiate(expr, var)
Symja.integrate(expr, var)
// 代数
Symja.solve(equation, var)
Symja.simplify(expr)
Symja.expand(expr)
// 矩阵
Symja.matrix.det(matrix)
Symja.matrix.inverse(matrix)
// 数论
Symja.gcd(a, b)
Symja.isPrime(n)
```
### 插件管理
在控制台输入 `plugins` 打开插件管理面板:
- **插件列表**:查看已安装插件
- **开发文档**:查看 API 文档和示例
- **导入/分享**:导入、导出、删除插件
插件文件存储在:
```
/storage/emulated/0/Android/data/com.nonvioce.ijs/files/plugins/
```
---
## 🔧 技术栈
- **Android**:原生 Android 应用(Java 11, API 24-34)
- **Symja 3.1.0**:符号计算引擎
- **NanoHTTPd 2.3.1**:嵌入式 HTTP 服务器(MCP)
- **Rhino 1.7.15**:JavaScript 引擎(插件执行)
- **WebView + JavaScript**:交互式控制台 + Canvas 绘图
- **KaTeX 0.16.9**:LaTeX 渲染
---
## 📦 构建说明
### 前置要求
- Android Studio (最新版本)
- JDK 11+
- Android SDK (API 24+)
### 构建步骤
1. 克隆仓库
```bash
git clone https://github.com/yourusername/ijs.git
cd ijs
```
2. 使用 Android Studio 打开项目
3. 同步 Gradle 依赖
4. 构建 APK
```bash
./gradlew assembleDebug
```
### 主要依赖
```kotlin
implementation("org.matheclipse:matheclipse-core:3.1.0")
implementation("androidx.appcompat:appcompat:1.6.1")
implementation("com.google.android.material:material:1.11.0")
```
---
## 📚 关于 Symja
本项目使用 [Symja](https://github.com/axkr/symja_android_library) 作为符号计算引擎。
Symja 是一个用纯 Java 实现的计算机代数系统(CAS),灵感来自 Wolfram Language,支持:
- 任意精度整数、有理数和复数
- 多项式、列表函数和关联
- 微分、积分、方程求解、线性代数
- 通用的项重写系统和模式匹配
- Rubi 符号积分规则
### 许可证
- `matheclipse-core`:LGPL-3.0
- `matheclipse-gpl`:GPL-3.0
- `matheclipse-io`:GPL-3.0
---
## 🤝 贡献
欢迎贡献代码、报告问题或提出建议!
1. Fork 本仓库
2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)
3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
4. 推送到分支 (`git push origin feature/AmazingFeature`)
5. 开启 Pull Request
详见 [CONTRIBUTING.md](CONTRIBUTING.md)
---
## 📄 许可证
本项目采用 GPL-3.0 许可证 - 详见 [LICENSE](LICENSE) 文件
---
## 🙏 致谢
- [Symja](https://github.com/axkr/symja_android_library) - 符号计算引擎
- [KaTeX](https://katex.org/) - LaTeX 渲染引擎
- [Mathematica](https://www.wolfram.com/mathematica/) - 设计灵感
---
## 📞 联系方式
- 提交 [Issue](https://github.com/yourusername/ijs/issues)
- 邮箱:nonvioce@qq.com
---
**如果这个项目对你有帮助,请给它一个 ⭐️!**
Made with ❤️ by [nonvioce](https://github.com/yourusername)