Я пытаюсь написать функцию, которая сообщает место встречи, если оно существует, и в противном случае находит точку, которая является ближайшей к обеим линиям. Итак, если линии встречаются, примените np.linalg.solve, в противном случае np.linalg.lstsq.
def almost_meeting_lines(a1, b1, a2, b2):
a = np.array([[-a1,1],[-a2,1]])
b = np.array([b1,b2])
if a1==a2:
(x,y) = np.linalg.lstsq(a,b,rcond=None)[0]
else:
(x,y)= np.linalg.solve(a,b)
return (x,y),a1==a2
a1=1
a2=2
b1=2
b2=-2
(x, y), exact = almost_meeting_lines(a1, b1, a1, b2)
print(exact)
if exact:
print(f"Lines meet at x={x} and y={y}")
else:
print(f"Closest point at x={x} and y={y}")
Проблема, с которой я сталкиваюсь, заключается в том, что функция всегда возвращает true, a1 (наклон линии1) равен a2 (наклон линии2) или нет И всегда применяет np.linalg.solve ().