📜  python中的二次方程的根(1)

📅  最后修改于: 2023-12-03 15:19:27.975000             🧑  作者: Mango

Python中的二次方程的根

二次方程是形如 $ax^2+bx+c=0$ 的方程,其中 $a\neq 0$。求解二次方程的根有多种方法,Python中也提供了多种实现方式。本文将介绍Python中求解二次方程根的方法和实现思路。

一般解法

解二次方程的一般解法是使用求根公式:

$$x_{1,2}=\frac{-b\pm\sqrt{b^2-4ac}}{2a}$$

其中 $b^2-4ac$ 也称为判别式,可以表示二次方程的根的情况,当 $b^2-4ac>0$ 时,方程有两个不相等的实根;当 $b^2-4ac=0$ 时,方程有两个相等的实根;当 $b^2-4ac<0$ 时,方程没有实根,但可以有复数根。

import math

def quadratic_equation(a, b, c):
    delta = b ** 2 - 4 * a * c
    if delta < 0:
        return None
    elif delta == 0:
        x1 = x2 = -b / (2 * a)
        return x1, x2
    else:
        sqrt_delta = math.sqrt(delta)
        x1 = (-b + sqrt_delta) / (2 * a)
        x2 = (-b - sqrt_delta) / (2 * a)
        return x1, x2

上述程序中,首先计算二次方程的判别式,然后根据判别式的值进行分类讨论,最后求出方程的根。

numpy库中的解法

NumPy是Python常用的科学计算库,其中提供了针对二次方程求根的方法。

import numpy as np

def quadratic_equation(a, b, c):
    return np.roots([a, b, c])

上述程序直接使用了NumPy中的 np.roots 方法,它会自动判断方程有几个根以及每个根的值。需要注意的是,该方法的返回值是一个numpy数组,数组中的元素对应方程的根。

Sympy库中的解法

SymPy是Python中常用的数学符号计算库,其中提供了针对二次方程求根的方法。与NumPy不同的是,SymPy的计算结果是符号形式的,然后可以通过将符号替换成数字来获得具体的结果。

from sympy import Symbol, solve

def quadratic_equation(a, b, c):
    x = Symbol('x')
    expr = a * x ** 2 + b * x + c
    roots = solve(expr, x)
    return roots[0], roots[1]

上述程序中,首先定义符号变量 x,然后使用SymPy的 solve 方法求解对应的符号方程,最后使用 roots 方法获取方程的根。需要注意的是,该方法的返回值也是数组形式的,需要取出元素才能获得具体的根。

总结

本文介绍了Python中求解二次方程根的三种方法,其中一般解法的原理是使用求根公式,而NumPy和SymPy库则提供了更加便捷的方式来计算根的值。根据不同的需求,可以选择适合的方法来求解二次方程的根。