如何求解线性方程?sympy求解出勤达标方程遇异常结果求助
问题分析与解决
核心问题
1. 公式书写错误
你推导的公式括号位置有误,原写法:
required_percentage=(attended+x/conducted+x)*100
会被解析为 attended + (x/conducted) + x,完全偏离出勤率的计算逻辑。正确的出勤率公式应该是:
required_percentage = ((attended + x) / (conducted + x)) * 100
其中:
attended:已参加课程数conducted:已开设总课程数x:需要额外参加的课程数
2. SymPy代码逻辑错误
你的代码没有构建正确的方程:
- 你写的
(({attended}+x)/({conducted}+x))*100/{required}只是一个表达式,而非等式(SymPy默认求解表达式等于0的情况,这就是你得到[-4]错误结果的原因) - 正确做法是构建等式:
((attended + x)/(conducted + x)) * 100 == required_percentage
修正后的代码示例
假设你手动计算时使用的参数是:attended=30,conducted=50,required_percentage=75(代入后手动计算得x=30),修正后的代码如下:
import sympy from sympy.abc import x # 代入你的实际参数值 attended = 30 conducted = 50 required_percentage = 75 # 构建正确的方程 equation = sympy.Eq(((attended + x) / (conducted + x)) * 100, required_percentage) # 求解x result = sympy.solve(equation, x) print(result) # 输出: [30]
验证结果
将x=30代入公式:
((30+30)/(50+30))*100 = (60/80)*100 = 75%
和预期出勤率一致,结果正确。
内容的提问来源于stack exchange,提问作者Raghaw Panpaliya
相关产品推荐
相关产品推荐

