English | 中文
一个 100% 本地运行 的开源小工具,帮你在学线性代数时"不仅算出结果,还能看懂过程"。
所有矩阵运算使用 SymPy 精确有理数,所以 1/3 永远不会变成 0.333。
三个版本共用同一个 core/ 引擎,结果完全一致,按你的使用场景挑一个就行:
| 版本 | 适合场景 | 怎么用 |
|---|---|---|
| 🖥 桌面版 | 平时写作业,想双击就开 | 下载 Releases 里的安装包,免装 Python、免联网 |
| 🌐 网页版 | 已经装着 Python,想改代码 | python web/app.py,自动开浏览器 |
| ☁️ 在线预览版 | 想在同学电脑 / 手机上演示 | 打开 https://la-helper.app.workbuddy.host,浏览器里跑真 Python |
- 界面与推导步骤都能中英切换(不只是按钮 —— 每一步说明、每一条报错、讲义推荐标题都跟着界面语言走)
- 矩阵输入 / 展示、转置、加减、标量乘
- 矩阵乘法(自动维度校验,输入上限 16×16)
- 方阵求逆(Gauss-Jordan,带步骤)
- 左逆 / 右逆(满列秩 / 满行秩时给出;不满秩时说明原因)
- Moore-Penrose 伪逆(通用)
- LU 分解(含部分主元,PA = LU,带步骤)
- 增广矩阵求解([A|b] → RREF,判定唯一解 / 无解 / 无穷多解 + 零空间基)
-
REF 行阶梯形 与 Gauss-Jordan RREF 最简行阶梯形可视化导学:逐行展示标准初等行变换(如
$R_2 \leftarrow R_2 - 2R_1$ ),每步带中间矩阵快照、主元与改动行高亮,支持单步播放 -
特征值 / 特征向量 与 特征多项式因式分解:逐步展示特征矩阵
$A - \lambda I$ 、展开特征多项式$p(\lambda) = \det(A - \lambda I) = 0$ 、因式分解、代数重数 (AM)、特征子空间方程求解、几何重数 (GM) 与特征向量基 -
矩阵对角化
$A = P D P^{-1}$ :自动判定对角化条件(几何重数与代数重数对比),构造特征向量阵$P$ 、特征值对角阵$D$ 与$P^{-1}$ ,并在特征值亏损时说明原因 - 行列式、秩、伴随矩阵(余子式展开与行变换双算法)
- 所有运算可开关"显示步骤"、可切换小数显示
- 导出 PDF 步骤(网页版 / 在线预览版):算完点「导出 PDF」,在打印对话框里把目标选成 「存储为 PDF」,就得到一张只有结果 + 推导步骤的浅色 A4 文档 —— 排版自动转成浅色、 输入区与页脚一律不打印、步骤和矩阵不会被分页切断。不依赖任何第三方库,离线也能用
- 单步播放 / 主元高亮(网页版 / 在线预览版):逐步模式下主元格描框、被改的行淡色高亮, 支持自动播放与手动单步;导出 PDF 始终是完整推导(详见下方「单步播放与主元高亮」)
- 从图片导入矩阵(桌面版 + 网页版 / 在线预览版):拍一张矩阵照片(或截图),用 Google Gemini 视觉模型识别成数字,自动填进编辑网格,自己再核对一下即可(识别错了也能手动改)
- 每个运算都有示例,一键载入(三端都有):选好运算点「载入示例」,矩阵自动填好并 直接算给你看 —— 不用先自己想该填什么数、再翻下拉框、再选左右操作数。 另有三个一键上手场景(为什么这个矩阵没有逆 / 用余子式算行列式 / 解一个方程组)
- 算完推荐对应讲义(网页版 / 在线预览版在结果下方,桌面版给一个跳转按钮): 「想知道为什么?读这篇」—— 直接链到讲义页里最相关的那一篇, 把「算」和「懂」缝在一起
-
记住本机的进度(三端都有):矩阵、运算、开关、表达式都存在本机,
关掉窗口明天回来还在,不用从头再填。设置里可以一键清空。
桌面端存在
~/.la_helper_settings.json(本来就因为存 API Key 而是 0600), 网页端存在localStorage;都只在本机,不上传、不同步、没有账号
① 操作下拉框(主路径,三端都有)——选「操作 + 左操作数 + 右操作数」,点计算。
② 表达式快捷键(三端都有)——一行写完,回车即算:
inv(A) * B - C det(A * B) 3 * inv(A) A^2 A^-1
点开界面里的「快捷键指南」有完整对照表(每一行都标了它对应的下拉框操作)。
支持 + - *、/ 标量、^n、inv det rank ref T/transpose pinv
lu solve eigen(后三个结果不止一项,只能单独使用)。
表达式不是另写一套算法:两条路都经
engine.dispatch走同一个底层实现, 所以结果连计算步骤都逐字节相同。
| 能力 | 网页版 / 在线预览版 | 桌面版 |
|---|---|---|
| 改行列不丢数据 | ✅ | ✅ |
| 命名矩阵库(增删改名) | ✅ | ✅ |
| 表达式快捷键 | ✅ | ✅ |
| 旁边的小字预览 | ✅ | ✅ |
| 粘贴识别(一长串数字自动成矩阵) | ✅ | ✅ |
单格快速改错(聚焦全选 / Esc 撤销) |
✅ | — |
| 从图片导入(Gemini 视觉识别) | ✅ | ✅ |
-
命名矩阵:默认 A、B、C、D 四个空槽,可新增 / 改名 / 删除, 算式里直接用名字调用。
-
改行列不丢数据:把 3×3 改成 3×4,已填的 9 个数字原样保留(多出的格留空,少掉的丢弃)。
-
粘贴导入:从 Excel 或任何文本里直接
Ctrl+V。- 带换行的表格 → 按它的原始形状导入;
- 一串空格分隔的数字 → 按你已经设好的「行」数自动换算出列数(3 行 + 12 个数 → 3×4);
- 单个数字 → 只填当前这一格。
-
旁边的小字预览同步显示引擎实际会用到的数字,空格自动补的
0用灰字标出, 一眼能看出哪些格子还没填。 -
单格快速改错:点进格子自动全选,直接输入即替换;按
Esc撤销这一格的改动。 回车 / 方向键在格间按行优先移动。 -
单元格留空按 0 计算。
-
从图片导入矩阵(桌面版 / 网页版都支持):点「从图片导入」,选一张矩阵照片或截图, 工具用 Google Gemini 视觉模型(免费 tier,
aistudio.google.com拿 key)把它识别成数字, 自动填进当前正在编辑的网格。识别完请务必核对——模型偶尔会看错某个数字,填进网格后你随时能改。- API Key 只存在你本机:桌面端写在
~/.la_helper_settings.json,网页端存在浏览器localStorage,都不上传任何服务器,仅在请求 Google 时直接发给 Gemini。 - 解析用的是和桌面端同一份 Python 代码(
core.photo.parse_matrix_response), 所以两端识别结果一致;模型返回无法解析时,界面会把原始文本显示出来方便你手动抄。
- API Key 只存在你本机:桌面端写在
勾选「显示步骤」算出一个多步推导的结果后,步骤列表上方会出现一行播放控件 (只有一步的结果没什么可播的,不会出现):
- 默认仍是全部展开——只想通读推导的话,什么都不用点
- ▶ 播放:折叠成一次一步,约 1 秒前进一步,走到最后自动停;再点一次从头重播
- ⏮ ◀ ▶|:回到第一步 / 上一步 / 下一步,随时手动走;计数器显示「第几步 / 共几步」
- 逐步模式下,当前步的主元格会描框、这一步改动的行会淡色高亮——一眼看出 「这步谁是被消元的、主元在哪」
- **「显示全部步骤」**退出逐步模式,回到完整列表,高亮随之关闭
- 导出 PDF 不受播放状态影响:无论停在第几步,导出的永远是完整推导
原生窗口程序,不开浏览器、不连网、不需要装 Python。
到 Releases 页面下载对应你系统的压缩包:
| 你的系统 | 文件 | 首次打开 |
|---|---|---|
| macOS(Apple 芯片 / M 系列) | LA-Helper-macOS-arm64.zip |
解压后右键 → 打开(安装包未做签名,直接双击会被 Gatekeeper 拦) |
| Windows 10 / 11(64 位) | LA-Helper-Windows-x64.zip |
解压后双击 LA Helper.exe;SmartScreen 提示时点「更多信息 → 仍要运行」 |
Intel 芯片的 Mac 用户请直接用下面的「从源码运行」,或自行执行
bash desktop/build_mac.sh。
pip install sympy
python desktop/app.pybash desktop/build_mac.sh # macOS → dist/LA Helper.app
.\desktop\build_win.ps1 # Windows (PowerShell) → dist\LA Helper\LA Helper.exeWindows 的 .exe 无法在 macOS 上交叉编译,必须在一台 Windows 上执行脚本。
如果你没有 Windows 机器,直接推一个 v* 标签,本仓库的
Release 流水线 会在 GitHub 上自动构建两个平台的安装包。
pip install -r requirements.txt
python web/app.py # 自动打开浏览器到 http://127.0.0.1:8000无需联网、无需账号。可选参数:--port 8123、--no-browser、--verbose。
端口被占用时会自动顺延到下一个可用端口。
单元格只接受整数、小数、分数(1/3、-2、0.5、1e-3)。
不认识的字符会直接报错提示,不会静默当变量处理,也不会执行任何表达式
(例如 9**9**9 这类会让服务卡死的输入会被拒绝)。
la-helper/
├── core/ # 纯算法层(精确有理数,零 GUI / Web 依赖,全可单测)
│ # engine.py 是唯一分发入口;expr.py 是表达式解析器
├── web/ # 网页版:app.py 起服务 + index.html / app.js
├── desktop/ # 桌面版:tkinter GUI + 两个平台的打包脚本
├── tools/ # build_preview.py:把 core/ 打包成 Pyodide 静态预览
└── tests/ # pytest,TDD 红绿重构
- 算法与界面解耦:
core只算,web/desktop只展示。 - 数值默认精确分数,勾选"小数显示"可切换为 4 位小数近似。
pip install -r requirements-dev.txt
pytest覆盖:core 各模块、core.engine 契约、core.expr 表达式(含与下拉框路径的等价性断言、
以及 9**9**9 这类输入的拒绝用例)、输入安全 / 奇异矩阵 / 符号矩阵 / 大矩阵等回归用例。
网页版只监听 127.0.0.1,不是面向公网的服务:不要把它暴露到局域网或反向代理之后。
矩阵计算全部在本地进程 / 浏览器沙箱内完成,计算过程不发送任何数据。
三个例外,前两个由你主动触发、也都能完全避免:
-
从图片导入。 点「从图片导入」时,会把那张图片直接发给你自己配置的 Gemini(Google)API 去识别。API Key 只存在本机、只随该请求经
x-goog-api-key请求头发给 Google,不经过任何第三方服务器,也不会写进 URL。 -
AI Help(网页版)。 在 AI Help 页提问时,你输入的问题(外加一段固定的人设 提示词)会经
Authorization请求头直连模型服务商的接口,不经过任何中转服务器。 默认优先发往 SiliconFlow(Qwen 免费模型) 的api.siliconflow.cn;若该平台 不可用,会自动回退到你或页面内置的 GLM(智谱) Key,直连open.bigmodel.cn。 Key 只存在你本机浏览器的localStorage。关于内置的公共 Key: 页面预置了一个所有人共用的 SiliconFlow 免费 Key (Qwen 模型),这样你不用注册就能直接问;GLM 那边也留了一个公共回退 Key。 它们是「公用」的,所以有几条代价:
- 额度是共享的 —— 别人用多了你可能会遇到 429,页面会提示你稍等重试或换自己的 Key;
- 这些 Key 可能随时被回收,也有可能因为网站不支持(如 CORS 预检失败)而突然抱错;
- 任何人都能从页面源码里拿走它们去用,所以随时可能被滥用。
对应的做法:你在「更换 Key」里填自己的免费 Key 后, 一直优先用你自己的,公共 Key 的存在完全不影响你;公共 Key 失效时页面会 明确提示并引导你去填自己的,不会静默失败。
这些 Key 就在前端代码里(纯静态页直连模型 API,Key 必然可见)。它们只是 「省掉注册这一步」的便利,不是安全边界 —— 介意共享额度就自己填一个。
-
使用人数统计(仅网页版页脚)。 页面底部会显示一个「使用人数」总数,由一个免费的 第三方计数器(Abacus)提供。打开网页时只发送一次匿名访问计数——不含矩阵内容、提问 或任何个人信息,也不使用 cookie;本机已计过数的浏览器之后只读取总数,不再重复上报。 桌面版不含此项;取不到数字时页脚整行不显示。
不想联网就别点前两个按钮,其余功能依旧完全离线(页脚计数失败时只是不显示)。
- 更多分解(QR / SVD)、Gram-Schmidt、最小二乘
- 步骤结构化(每步带矩阵快照与当前主元,支持单步播放 / 高亮)—— 网页版已有播放器与主元高亮;桌面端的播放控件还没做
- 矩阵从图片导入(Gemini 视觉识别,桌面 + 网页)
- 每个运算都有示例 + 一键载入(桌面 + 网页)
- 算完推荐对应讲义(「想知道为什么?读这篇」)
- 记住本机进度(桌面 + 网页)
- 算式深链进 URL(
#op=det&m=…),一条链接 = 一道题,可直接发给别人 - REF 可选"部分主元"策略,默认贴近课本演示
