如何在Python中分步展示线性方程的化简与求解过程?
如何在Python中分步展示线性方程的化简与求解过程?
嗨,这个需求太贴合学习场景啦!其实不用找额外的库,SymPy本身就能帮我们实现这种「像在笔记本上一步步推导」的效果,完全模拟课堂上的化简步骤。下面我就用你的方程做一个极简示例,咱们一步步来~
前置准备
如果还没装SymPy,先在终端跑这条命令安装:
pip install sympy
分步推导代码(带课堂式解释)
from sympy import symbols, expand, collect, Eq, pprint, init_printing # 初始化打印格式,让输出更贴近手写笔记风格 init_printing(use_latex=False) # 1. 定义所有符号变量(就像我们在笔记本上先写清楚未知数和参数) x, a, b, c, d, e, f, g = symbols('x a b c d e f g') # 2. 写出原始方程 original_eq = Eq( ((x + b)*a)/(c*d) + ((x - b)*e)/(f*g), 0 ) print("=== 原始方程 ===") pprint(original_eq) # 第一步:消去分母(两边同乘分母的乘积c*d*f*g) print("\n=== 第一步:消去分母 ===") step1 = Eq( original_eq.lhs * c*d*f*g, original_eq.rhs * c*d*f*g ) pprint(step1) # 就像手动解方程时,两边同时乘所有分母的乘积,把分数方程转成整式方程,方便后续计算 # 第二步:展开所有括号 print("\n=== 第二步:展开括号 ===") step2 = Eq( expand(step1.lhs), step1.rhs ) pprint(step2) # 把每一项的括号都展开,这样就能清晰区分含x的项和常数项了 # 第三步:合并同类项(把所有含x的项、常数项分别合并) print("\n=== 第三步:合并同类项 ===") collected_terms = collect(step2.lhs, x) step3 = Eq( collected_terms, 0 ) pprint(step3) # 把含x的项的系数合并到一起,常数项也合并,方程就变成了标准的「(x系数)*x + 常数项 = 0」形式 # 第四步:移项求解x print("\n=== 第四步:移项求解 ===") # 先拆分出x的系数和常数项 x_coeff = collected_terms.coeff(x) constant_part = collected_terms.subs(x, 0) # 移项后得到 x_coeff * x = -constant_part step4 = Eq( x_coeff * x, -constant_part ) pprint(step4) # 最终解出x final_solution = -constant_part / x_coeff print("\n=== 最终结果 ===") pprint(f"x = {final_solution}")
额外小提示
如果你的环境支持LaTeX,可以把init_printing(use_latex=False)改成init_printing(use_latex=True),输出的公式会更接近课本上的印刷格式;如果喜欢纯文本的手写感,保持默认的use_latex=False就好。
你看,整个过程完全还原了课堂上的推导逻辑,每一步的操作和结果都清晰可见,比直接调用solve()得到结果更适合理解方程的化简过程。如果是其他线性方程,只需要修改原始方程的定义,剩下的步骤逻辑基本可以复用哦~




