首页 > 解决方案 > 我需要解一个二次方程

问题描述

编写一个函数solve_quadratic,当系数作为参数给出时,它以一对(2元组)的形式返回一个通用二次方程的两个解。

它正在返回小数并显示错误?

import math
 
def solve_quadratic(a, b, c):


    d = int(b*b) - int(4*a*c)

    sol1 = (-b-math.sqrt(d))/(2*a)
    sol2 = (-b+math.sqrt(d))/(2*a)

    tup = sol1, sol2;

    print(tup)


    return tup



def main():

    solve_quadratic(1, -3, 2)
    solve_quadratic(1, 2, 1)

if __name__ == "__main__":
    main()

标签: pythontuplesdecimalquadratic

解决方案


该错误是由 的计算引起的d,不应将值截断为ints。

def solve_quadratic(a, b, c):
    d = (b*b) - (4*a*c)
    sol1 = (-b-math.sqrt(d))/(2*a) 
    sol2 = (-b+math.sqrt(d))/(2*a)
    tup = sol1, sol2;
    print(tup)
    return tup

您的代码适用于 (1, -3, 2) 和 (1, 2, 1) 的原因是因为这些输入是sb*b并且没有截断/舍入/精度损失。4*a*cint

https://en.wikipedia.org/wiki/Quadratic_equation#Quadratic_formula_and_its_derivation


推荐阅读