插件是 JSON 格式的配置文件,包含以下字段:
{
"id": "plugin_id",
"name": "插件名称",
"description": "插件描述",
"icon": "📐",
"command": "cmd",
"inputs": [
{
"name": "input1",
"label": "输入标签",
"defaultValue": "0",
"placeholder": "提示文本"
}
],
"jsCode": "function calculate(inputs, Symja) { ... }"
}
id - 插件唯一标识符name - 插件显示名称description - 插件功能描述icon - 插件图标(emoji)command - 快捷命令(可选),用于命令行执行inputs - 输入参数数组
name - 参数名称(代码中访问)label - 参数标签(显示给用户)defaultValue - 默认值(可选)placeholder - 提示文本(可选)jsCode - 插件计算代码{
"id": "circle_area",
"name": "圆面积计算器",
"description": "计算圆的面积",
"icon": "⭕",
"command": "circle",
"inputs": [
{
"name": "radius",
"label": "半径",
"defaultValue": "1",
"placeholder": "输入半径"
}
],
"jsCode": "function calculate(inputs, Symja) {\n const r = inputs.radius;\n if (!r || parseFloat(r) <= 0) {\n throw new Error('半径必须是正数');\n }\n Symja.print(`计算半径为 ${r} 的圆面积`);\n return `Pi*${r}^2`;\n}"
}
使用方式:
circle[5] 直接计算半径为 5 的圆面积% 可引用上次结果,如 % /. Pi->3.14{
"id": "derivative_calculator",
"name": "导数计算器",
"description": "计算函数的导数",
"icon": "📈",
"command": "deriv",
"inputs": [
{
"name": "function",
"label": "函数表达式",
"defaultValue": "x^2 + 3*x",
"placeholder": "例如: x^2 + 3*x"
},
{
"name": "variable",
"label": "变量",
"defaultValue": "x",
"placeholder": "例如: x"
}
],
"jsCode": "function calculate(inputs, Symja) {\n const func = inputs.function;\n const variable = inputs.variable;\n if (!func || !variable) {\n throw new Error('请输入函数和变量');\n }\n Symja.print(`对 ${func} 关于 ${variable} 求导`);\n return Symja.differentiate(func, variable);\n}"
}
使用方式:
deriv[x^3, x] 计算 x³ 的导数deriv[{x^2, x^3}, x] 列表作为一个参数输入自动转换
inputs.xxx 进行计算Symja.print() 输出
Symja.print('计算中...')返回值要求
'x^2'、'Pi*r^2')% 在后续计算中引用命令执行语法
command 字段后,可用 command[arg1, arg2] 直接执行command[{1,2}, {3,4}] 有 2 个参数command[{{1,2},{3,4}}] 矩阵作为 1 个参数自动补全
function calculate(inputs, Symja) {
// 1. 获取输入(已自动转换为可运算类型)
const param1 = inputs.param1;
// 2. 输入验证
if (!param1) {
throw new Error('请输入参数');
}
// 3. 输出说明信息(可选)
Symja.print('正在计算...');
// 4. 执行计算
const result = Symja.eval(`SomeFunction[${param1}]`);
// 5. 返回可运算的 Symja 表达式
return result;
}
function calculate(inputs, Symja) { ... }Symja.print() 输出说明,不影响返回值throw new Error() 抛出错误| API | 说明 | 示例 |
|---|---|---|
inputs.xxx |
获取输入参数(已自动转换) | inputs.radius |
Symja.print(msg) |
输出说明文本 | Symja.print('计算中...') |
return expr |
返回可运算表达式 | return 'Pi*r^2' |
| API | 说明 | 示例 |
|---|---|---|
Symja.eval(expr) |
执行任意 Symja 表达式 | Symja.eval('2+2') |
| API | 说明 | 示例 |
|---|---|---|
differentiate(expr, var) |
求导数 | Symja.differentiate('x^2', 'x') |
integrate(expr, var) |
求不定积分 | Symja.integrate('x^2', 'x') |
limit(expr, var, point, dir) |
求极限 | Symja.limit('Sin[x]/x', 'x', '0') |
series(expr, var, point, order) |
泰勒级数 | Symja.series('Exp[x]', 'x', '0', '5') |
| API | 说明 | 示例 |
|---|---|---|
solve(eq, var) |
解方程 | Symja.solve('x^2-4==0', 'x') |
simplify(expr) |
化简 | Symja.simplify('(x^2-1)/(x-1)') |
expand(expr) |
展开 | Symja.expand('(x+1)^3') |
factor(expr) |
因式分解 | Symja.factor('x^2-4') |
apart(expr, var) |
部分分式 | Symja.apart('1/(x^2-1)', 'x') |
together(expr) |
通分 | Symja.together('1/x + 1/y') |
trigSimplify(expr) |
三角化简 | Symja.trigSimplify('Sin[x]^2+Cos[x]^2') |
| API | 说明 | 示例 |
|---|---|---|
sum(expr, var, start, end) |
求和 | Symja.sum('i^2', 'i', '1', '10') |
product(expr, var, start, end) |
求积 | Symja.product('i', 'i', '1', '5') |
| API | 说明 | 示例 |
|---|---|---|
matrix.det(matrix) |
行列式 | Symja.matrix.det('{{1,2},{3,4}}') |
matrix.inverse(matrix) |
逆矩阵 | Symja.matrix.inverse('{{1,2},{3,4}}') |
matrix.transpose(matrix) |
转置 | Symja.matrix.transpose('{{1,2},{3,4}}') |
matrix.eigenvalues(matrix) |
特征值 | Symja.matrix.eigenvalues('{{1,2},{3,4}}') |
matrix.rank(matrix) |
矩阵秩 | Symja.matrix.rank('{{1,2},{3,4}}') |
| API | 说明 | 示例 |
|---|---|---|
gcd(a, b) |
最大公约数 | Symja.gcd('12', '18') |
lcm(a, b) |
最小公倍数 | Symja.lcm('12', '18') |
factorInteger(n) |
质因数分解 | Symja.factorInteger('60') |
isPrime(n) |
判断素数 | Symja.isPrime('17') |
| API | 说明 | 示例 |
|---|---|---|
fibonacci(n) |
斐波那契数 | Symja.fibonacci('10') |
binomial(n, k) |
组合数 C(n,k) | Symja.binomial('5', '2') |
| API | 说明 | 示例 |
|---|---|---|
numeric(expr, precision) |
高精度数值计算 | Symja.numeric('Pi', '50') |
| API | 说明 | 示例 |
|---|---|---|
toTeX(expr) |
转换为 LaTeX | Symja.toTeX('x^2 + 2*x + 1') |
renderLatex(latex) |
渲染 LaTeX | Symja.renderLatex('\\frac{1}{2}') |
插件文件保存在:
/storage/emulated/0/Android/data/com.nonvioce.ijs/files/plugins/
可以直接在该目录创建 .json 文件来添加插件。