Python

Выяснить, сколько точек пересечения имеют прямая

Выяснить, сколько точек пересечения имеют прямая y = kx + b и гипербола y = a/x. вывести координаты этих точек. значения k, b, a ввести
Не более двух:
 a/x = kx + b
a = kx² + bx
D = b² + 4ka
b² < -4ka или k = b = 0 - нет точек пересечения
b² = -4ka или (k = 0 и b ≠ 0) - одна точка (касания)
b² > -4ka - две точки пересечения

x₁ = (-b + √D) / (2k) y₁ = (b + √D) / 2
x₂ = (-b - √D) / (2k) y₂ = (b - √D) / 2
А вот так это можно посчитать:
 from math import sqrt
k, b, a = map(float, input("Введите k b a через пробел: ").split())
D = b * b + 4 * k * a
if D < 0 or k == 0 == b:
print("Нет точек пересечения")
elif k == 0:
print("Одна точка пересечения: (%.4f, %.4f)" % (a / b, b))
elif D == 0:
print("Одна точка пересечения: (%.4f, %.4f)" % (-b / (2 * k), b / 2))
else: # D > 0
d = sqrt(D)
print("Две точки пересечения: (%.4f, %.4f) и (%.4f, %.4f)" % ((-b + d) / (2 * k), (b + d) / 2, (-b - d) / (2 * k), (b - d) / 2))
Талгат Амангелдиулы
Талгат Амангелдиулы
54 053
Лучший ответ
Для гиперболы a≠0.
kx + b = a/x <=> kx²+bx-a=0 (x≠0)
Если k=0, тогда если b=0, то нет пересечений, а если b≠0, то одно пересечение (при х=a/b).
Если k≠0, тогда D=b²+4ak. При D>0 два пересечения, при D<0 нет пересечений, а при D=0 одно пересечение.
Полный исходник писать долго, поэтому давайте лучше сами! Вот на всякий случай в качестве примера скрин с кодом для решения квадратного уравнения, который тут никто ещё правильно и не напишет:
Andrey Ivanov
Andrey Ivanov
66 572