You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MIT Python教程习题求助:计算二次方程正根遇math域错误

解决IPython中二次方程正根计算的报错问题

嘿,我来帮你搞定这个二次方程计算的问题!你遇到的ValueError: math domain error其实是个很常见的小失误导致的,咱们一步步理清楚:

问题根源

你输入的计算式里,判别式部分写错了符号!原方程是34x² + 68x - 510 = 0,对应二次方程标准形式ax² + bx + c = 0的话,c的值是-510,不是510。

你写的判别式是68**2 - 4*34*510,但正确的应该是68**2 - 4*34*(-510)——少了c前面的负号,导致根号里的结果变成了负数,而math.sqrt()函数不能处理负数,所以直接抛出了域错误。

正确的计算方法

首先确保你已经导入了math模块(IPython里如果没导入的话先执行import math),然后用正确的公式计算:

分步计算(更清晰)

import math
# 定义方程系数
a = 34
b = 68
c = -510
# 计算判别式
discriminant = b**2 - 4 * a * c
# 代入正根公式计算
positive_root = (-b + math.sqrt(discriminant)) / (2 * a)
# 查看结果
positive_root

一行直接计算

import math
(-68 + math.sqrt(68**2 - 4*34*(-510))) / (2*34)

运行后你会得到结果3.0,代入原方程验证:34*(3)^2 + 68*3 -510 = 306 + 204 -510 = 0,完全正确!

内容的提问来源于stack exchange,提问作者Shashank Venugopal Koppuravuri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:41:17