EquationSolver 方程求解器
一个使用 C++17 和原生 Windows API 编写的中文图形界面程序。可直接输入原方程,程序会自动解析题型并给出过程。
功能
- 一元一次方程
ax + b = c
- 二元一次方程组(克拉默法则)
- 一元二次方程(含重根和复数根)
- 二元二次方程组(结式消元法、加减消元法和代入法,求全部实数解)
- 一元三次方程(有理根定理、因式分解、综合除法及卡尔达诺精确公式)
- 一元四次方程(双二次换元、因式分解、综合除法及费拉里精确公式)
- 三元一次方程组(高斯消元法)
- 一元一次不等式(支持
<、≤、>、≥)
- 分式方程(自动列定义域、去分母并验根)
- 直接输入原式,支持括号、省略乘号、负数指数幂、分数指数幂、阶乘和数值分数
- 未知数支持任意英文字母(常数
e 除外);方程组按字母首次出现顺序自动识别两个或三个未知数,并在结果、过程和图像坐标轴中保留原字母
pi(或 π)作为圆周率常数,e 作为自然常数,i 作为虚数单位(i² = -1),均不计入未知数数量
- 含
i 的一元一次、二次方程和二元/三元一次方程组可在复数范围内求解;复数不支持大小不等式
sin、cos、tan、cot 支持弧度制和角度制,可在题型旁切换;基本三角方程给出含 k ∈ ℤ 的周期通解,并支持绘图
- 支持半角
! 和全角 ! 阶乘,例如 x+5!=125;阶乘参数须为不超过 170 的非负整数
- 括号严格遵循
{ [ ( ) ] } 的由大到小嵌套顺序;【】 等同中括号,同种括号不能互相嵌套,并兼容全角 []、{}
- 支持
x^-2、x^(1/2)、x^(-2/3) 等指数格式;分数指数方程使用换元法并检查定义域
- 支持
8+x^(2/3)+x=5.3 这类换元后的一般高次方程;换元后为三次或四次时保留精确代数根式,更高次数使用导数分区和二分法并代回验证
- 代数方程的结果优先保留最简分数和化简后的根式;不可约三次、四次方程也不会退回小数答案
- 过程与结果中的整数幂使用 Unicode 上标显示;奇次幂的 Cardano 结果会把整体负号提出,并把根号分数分别约成最简形式
- 三次方程保留卡尔达诺根式或三个实根的精确余弦形式,四次方程保留费拉里嵌套根式
- 非有限精确结果的近似值统一保留三位小数;可化为有限小数的分数显示完整有效数位
- 克拉默法则、高斯消元及线性验算过程中的循环小数会恢复为最简分数
- 大整数系数使用安全的 64 位精确转换,避免因旧范围上限退回小数近似
- 使用
"296" 输入平方根,使用 "3"296" 输入三次根
- 英文直引号
"、中文弯引号 “ ” 和全角引号 " 可混合输入,程序会自动统一识别
- 被开方数支持分数,例如
"1/2" 和 "3"1/8"
- 使用
|表达式| 输入绝对值,例如 |x|=3、|2x-1|=5
- 绝对值分情况后得到三次或四次方程时同样保留卡尔达诺或费拉里精确根式
- 根号下可使用数值绝对值,例如
"3"|-2|" 会按 ∛|-2| = ∛2 精确处理
- 过程中的“输入原式”会把双引号根式语法转换为标准根号排版
- 含根式系数的对称分式方程使用精确参数与嵌套根式求解,不退回小数根
- 二元、三元方程组展示加减消元法和代入消元法
- 自动识别无解、无穷多解和退化情况
- 中文显示逐步推导过程;综合除法、卡尔达诺、三倍角、费拉里、因式分解和二元二次消元等多种解法均展示实际中间式与回代验算
- 分数采用上下排版,根式采用抗锯齿平滑路径并随被开方内容高度伸展,嵌套分数也由外层根号完整包围
- 过程区使用窄轨道、三角箭头和圆角滑块的自绘滚动条
- 方程输入区不显示滚动条;只读输入说明区继续使用与求解过程相同的自绘垂直滚动条
- 右上角可一键切换白天模式和黑暗模式
- 主题开关采用圆角滑动开关,界面控件统一圆角
- 支持简体中文、English、繁體中文三种界面语言
- 题型、语言和角度单位使用主题化自绘选择框:蓝色焦点边框、放大的平滑方向箭头、选中项高亮,以及与输入说明一致的自绘滚动条
- 多种解法使用圆形编号分页切换,避免过程堆叠过长
- 启动时根据显示器工作区和 Windows DPI 自动缩放窗口、字体、间距及辅助窗口;切换显示器或修改分辨率后会重新适配
- 结果区会随窗口宽度自动扩展,过程文本采用紧凑行距
- 求解结果摘要禁止滚动:短答案单行显示,普通长答案自动换成两行,三次/四次精确长根式自动增高以完整显示
- 精确答案含分数或根号时显示数值行:有限小数用等号并保留全部有效位,循环小数和根式用约等号保留三位
- 有实数解的一元方程可绘制等号两侧曲线并标出全部实根;二元一次及二元二次方程组可在同一坐标系绘制两条曲线并标出全部实数交点
- “求解日志”窗口持久保存最近 100 次成功求解,记录时间、题型和输入原式;悬停记录显示圆角蓝框,点击整条记录即可回填输入框
- 摘要框按数学排版后的真实宽度伸缩;双根过长时会在
x₂ 前换行并自动增高
- 内置多尺寸 Windows 应用图标
- 输入校验、题目预览和内置示例
编译方法
当前 build.cmd 默认使用 D:\Program Files\Qt\Tools\mingw1310_64 中的 Qt MinGW 13.1 编译器,双击即可测试并构建。
也可以在“Developer PowerShell for VS 2022”中运行:
cmake -S . -B build -G "Visual Studio 17 2022" -A x64
cmake --build build --config Release
ctest --test-dir build -C Release --output-on-failure
生成的程序位于:
build\Release\EquationSolver.exe
代码风格
- C/C++ 使用项目根目录的
.clang-format:4 空格缩进、110 列宽和统一的大括号规则。
- 通用文本编辑规则记录在
.editorconfig,统一 UTF-8、CRLF 与文件末尾换行。
- 源文件按“模块职责、数据表示、解析阶段、专用算法、公共入口”标注说明性注释。
- 重新排版可执行:
clang-format -i --style=file src/*.cpp src/*.h tests/*.cpp。
使用说明
- 保持“自动识别”,或在顶部下拉框指定题型。
- 在文本框中直接输入原式,例如
324x^2+984=1555/2。
- 方程组每个方程输入一行,也可用分号分隔。
- 分式方程可输入
1/(x-1)+1/(x+1)=1。
- 负数指数和分数指数可输入
x^-2=4、x^(1/2)=3 或 x^(-1/2)=2。
- 平方输入为
x^2,平方根输入为 "100",三次根输入为 "3"100"。
- 三次、四次方程可输入
x^3-6x^2+11x-61=0、x^4+x-1=0;结果保留精确根式,并在下方另列三位近似值。
- 二元二次方程组每个方程输入一行,例如
x^2+y^2=5 与 x-y=1。
- 点击“开始求解”,右侧会显示结果和完整过程。
程序使用 Unicode 中文界面,适用于 Windows 10/11。
下载地址:https://wwaza.lanzouq.com/izMa73zmv2mb
密码:52pj
项目地址:https://github.com/shenxing2024/EquationSolver |