Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 9, 2018 13:34:13

ADEIIT
Зарегистрирован: 2018-10-09
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Решение для квадратного уравнения

def solve_quad(b, c):
D = b**2-4*c
x1 = (- (b)) + D**0.5)/2
x2 = (- (b)) - D**0.5)/2
print (x1,x2)
return x1,x2
from numpy import allclose
variants = [{'b': 4.0, ‘c’: 3.0},
{'b': 2.0, ‘c’: 1.0},
{'b': 0.5, ‘c’: 4.0},
{'b': 1e10, ‘c’: 3.0},
{'b': -1e10, ‘c’: 4.0},]
for var in variants:
x1, x2 = solve_quad(**var)
print(allclose(x1*x2, var))
вывод

-1.0 -3.0
True
-1.0 -1.0
True
(-0.2499999999999999+1.984313483298443j) (-0.2500000000000001-1.984313483298443j)
True
0.0 -10000000000.0
False
0.0 -10000000000.0
False


как дискриминант которая большая величина приблизить (вне размерности питона) приблизить чтобы посчитал 2 последних b и с

Офлайн

#2 Окт. 10, 2018 01:08:49

romankrv
От:
Зарегистрирован: 2008-05-23
Сообщения: 513
Репутация: +  0  -
Профиль   Отправить e-mail  

Решение для квадратного уравнения

my solution

 # импортируем модуль, содержащий функцию для
# извлечения квадратного корня
import math
 
# вводятся нижние и верхние границы для
# коэффициентов a, b, c
a1 = int(input('a1: '))
a2 = int(input('a2: '))
b1 = int(input('b1: '))
b2 = int(input('b2: '))
c1 = int(input('c1: '))
c2 = int(input('c2: '))
 
# создаются объекты-диапазоны
# +1 позволяет включить в диапазон верхнюю границу
a = range(a1, a2 + 1)
b = range(b1, b2 + 1)
c = range(c1, c2 + 1)
 
# перебираются все возможные сочетания коэффициентов
# i - текущий элемент из диапазона a
# j - текущий элемент из диапазона b
# k - текущий элемент из диапазона c
for i in a:
    if i == 0:
        # если i равен 0, то уравнение не квадратное, а линейное
        # поэтому решать уравнение не надо,
        # вместо этого выполняется переход к следующей итерации цикла
        continue
    for j in b:
        for k in c:
            # выводятся текущие значения коэффициентов a, b, c
            print(i, j, k, end=' ')
            # вычисляется дискриминант
            D = j * j - 4 * i * k
            if D >= 0:
                # если дискриминант больше нуля или равен ему,
                # то вычисляются корни квадратного уравнения
                x1 = (-j - math.sqrt(D)) / (2 * i)
                x2 = (-j + math.sqrt(D)) / (2 * i)
                # выводятся корни, округленные до двух знаков после точки
                print('Yes', round(x1, 2), round(x2, 2))
            else:
                # если дискриминант меньше нуля, то корней нет
                print('No')

Офлайн

#3 Окт. 10, 2018 01:37:01

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9727
Репутация: +  843  -
Профиль   Отправить e-mail  

Решение для квадратного уравнения

romankrv
 # если дискриминант меньше нуля, то корней нет
В смысле нет? Есть корни, принадлежащие множеству комплексных чисел, - комплексные корни. Даже в средней школе говорят “действительных корней нет”, а не вообще корней нет. Когда в вуз поступишь, там тебе расскажут, что, оказывается, есть ещё поле комплексных чисел, которое включает в себя поле действителных чисел.

Вообще, квадратное уравнение имеет шесть ветвей решения. И когда у тебя получается линейное уравнение (a = 0), его точно так же надо решать дальше, потому что это частный случай квадратного уравнения.



Отредактировано py.user.next (Окт. 10, 2018 01:37:21)

Офлайн

#4 Окт. 10, 2018 10:40:08

ADEIIT
Зарегистрирован: 2018-10-09
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Решение для квадратного уравнения

romankrv
my solution
во первых корни есть
“True
(-0.2499999999999999+1.984313483298443j) (-0.2500000000000001-1.984313483298443j)”
во вторых надо с этим списком сделать

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version