zhukov000

Numerically Stable Method for Solving Quadratic Equations

Jan 15th, 2022
593
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.84 KB | None | 0 0
  1. from numpy import allclose
  2. from cmath import sqrt
  3.  
  4. def solve_quad(b, c):
  5.     """Решает квадратное уравнение, x**2 + bx + c = 0.
  6.    
  7.    Parameteres
  8.    ----------
  9.    b, c : float
  10.       Коэффициенты
  11.      
  12.    Returns
  13.    -------
  14.    x1, x2 : float or complex
  15.       Корни.
  16.    """
  17.     if b >= 0:
  18.         x1 = (-b - sqrt(b ** 2 - 4 * c)) / 2
  19.         x2 = 2 * c / (-b - sqrt(b ** 2 - 4 * c))
  20.     else:
  21.         x1 = 2 * c / (-b + sqrt(b ** 2 - 4 * c))
  22.         x2 = (- b + sqrt(b ** 2 - 4 * c)) / 2
  23.     return x1, x2
  24.  
  25. variants = [{'b': 4.0, 'c': 3.0},
  26.             {'b': 2.0, 'c': 1.0},
  27.             {'b': 0.5, 'c': 4.0},
  28.             {'b': 1e10, 'c': 3.0},
  29.             {'b': -1e10, 'c': 4.0},]
  30.  
  31. for var in variants:
  32.     x1, x2 = solve_quad(**var)
  33.     print(allclose(x1*x2, var['c']))
  34.  
Advertisement
Add Comment
Please, Sign In to add comment