python编程如何求解一元二次方程的复根?(python编写程序求解一元二次方程的根)

网友投稿 687 2022-06-13


一元二次方程是初中时代比较常见而且必修的学业内容,很多青少年编程课程内容都包含一元二次编程,接下来就来和大家分享一下python编程如何求解一元二次方程的复根,让大家能够更好地理解Python,理解一元二次方程。

函数参数如何设计?

def one_variable_quadratic_equation_1(a: float, b: float, c: float) -> Tuple[float]:     """

    一元二次方程求解

    :param a: x二次项系数

    :param b: x一次项系数

    :param c: 常数项

    :return: x1, x2 两个根

    """     pass

如何求解方程?

自然的会想到使用求根公式

那么,我们就用该求根方程来完成该函数的编写, 代码如下:

def one_variable_quadratic_equation_1(a: float, b: float, c: float) -> Tuple[float]:     """

    一元二次方程求解

    :param a: x二次项系数

    :param b: x一次项系数

    :param c: 常数项

    :return: x1, x2 两个根

    """     x1 = (-b + math.sqrt(math.pow(b, 2) - 4 * a * c)) / (2 * a)

    x2 = (-b - math.sqrt(math.pow(b, 2) - 4 * a * c)) / (2 * a)

    return x1, x2

演示我们的成果

完成了我们的一元二次方程求解程序,迫不及待的用在实际的方程运算中。我们先自我演示一下:

方程1

x1: -1.0, x2: -1.0

非常不错,我们得到了正确的结果。

方程2

x1: 1.0, x2: -3.0

非常不错,我们也得到了正确的结果。

方程3

def one_variable_quadratic_equation_3(a: float, b: float, c: float) -> Tuple[float]: """

一元二次方程求解

:param a: x二次项系数

:param b: x一次项系数

:param c: 常数项

:return: x1, x2 两个根

""" delta = math.pow(b, 2) - 4 * a * c

if delta >= 0:

x1 = (-b + math.sqrt(delta)) / (2 * a)

x2 = (-b - math.sqrt(delta)) / (2 * a)

else:

x1 = None x2 = None return x1, x2

经过这个问题的修复,我们更增加了对一元二次方程求解的认知。继续我们的测试。

方程4

新的代码如下:

def one_variable_quadratic_equation_4(a: float, b: float, c: float) -> Tuple[float]: """

一元二次方程求解

:param a: x二次项系数

:param b: x一次项系数

:param c: 常数项

:return: x1, x2 两个根

""" if a != 0:

delta = math.pow(b, 2) - 4 * a * c

if delta >= 0:

x1 = (-b + math.sqrt(delta)) / (2 * a)

x2 = (-b - math.sqrt(delta)) / (2 * a)

else:

x1 = None x2 = None else:

x1 = x2 = -c/b

return x1, x2

经过对这个问题的修复,我们知道了一些特别细微的异常情况,就是要考虑 是否为 0 的情况,这也是考试中常考的点呀。

方程5

奥,我们的程序又崩溃了。为什么会这样? 进行 debug ...

新的代码如下:

def one_variable_quadratic_equation_5(a: float, b: float, c: float) -> Tuple[float]: """

一元二次方程求解

:param a: x二次项系数

:param b: x一次项系数

:param c: 常数项

:return: x1, x2 两个根

""" if a != 0:

delta = math.pow(b, 2) - 4 * a * c

if delta >= 0:

x1 = (-b + math.sqrt(delta)) / (2 * a)

x2 = (-b - math.sqrt(delta)) / (2 * a)

else:

x1 = None x2 = None else:

if b != 0:

x1 = x2 = -c/b

else:

x1 = x2 = None return x1, x2

经过这个问题的修复,我们知道了更深层次的异常,原来 b 也可以等于 0 呀。

方程6

这? 这合适吗?思考下,现在方程的解应该是什么?答案是任意实数呀,而不是没有解。

我们重新修订程序,那问题又来了如何来表示任意实数呢?我们思考下,稍稍进行变通。我们对结果返回两个值,一个用来表示,解的类型,目前为止我们有: 无解,全体实数,有解;另外一个值用来表示具体的解是什么,而全体实数,由于第一个值已经表示全体实数了,所以第二个值我们随意给值就好了,就用 None 吧。

最后的程序:

def one_variable_quadratic_equation_6(a: float, b: float, c: float) -> Tuple[str, float, float]: """

一元二次方程求解

:param a: x二次项系数

:param b: x一次项系数

:param c: 常数项

:return: x1, x2 两个根

""" code = "有根" if a != 0:

delta = math.pow(b, 2) - 4 * a * c

if delta >= 0:

code = "有根" x1 = (-b + math.sqrt(delta)) / (2 * a)

x2 = (-b - math.sqrt(delta)) / (2 * a)

else:

code = "无根" x1 = None x2 = None else:

if b != 0:

code = "一个根" x1 = -c/b

x2 = None else:

if c != 0:

code = "无根" x1 = x2 = None else:

code = "全体实数" x1 = x2 = None return code, x1, x2


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:b站python教程哪个好(b站的python教学哪个好学)
下一篇:如何用c语言编写大数四则运算(用c语言编写简单的四则运算)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~