# IJS - Interactive Java Symja
![License](https://img.shields.io/badge/license-GPL--3.0-blue.svg) ![Platform](https://img.shields.io/badge/platform-Android-green.svg) ![Java](https://img.shields.io/badge/Java-11-orange.svg) 一个基于 [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)