首页 > 解决方案 > Python:计算二次方程的正根

问题描述

我正在学习 MIT 上的 Python 教程,但其中一个练习有问题。练习是,

使用 IPython 提示计算:

以下方程的正根: 34x2 + 68x - 510 = 0 回忆:给定 ax2 + bx + c = 0 ,则 x = (-b +sqrt(b*b - 4ac))/(2*a)

我已进入

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

在即兴的,我得到

回溯(最近一次通话最后):

文件“”,第 1 行,在 (-68)+(math.sqrt((68**2)-(434510)))

ValueError:数学域错误

在单独计算时,我发现平方根内的值是负数。我应该添加一些额外的功能来启用负根计算,还是我的陈述有其他问题?

有人可以帮我吗?

注意:课程页面上的解决方案建议制作

(b**2-4ac)

在计算根之前为正。这不会在数学上不准确吗?

标签: pythonpython-3.x

解决方案


我也在做课程。
问题来自“入门”,所以应该不难。
它应该与课程材料有关。


因此,这就是我所拥有的:

IDLE 1.2.4      
>>> import math
>>> a=34
>>> b=68
>>> c=-510
>>> d = ( -b + math.sqrt ( b*b - 4*a*c))/(2 * a)
>>> print d
3.0

推荐阅读