проверьте, соответствуют ли линии или нет, и примените функцию numpy соответственно - PullRequest
0 голосов
/ 16 марта 2020

Я пытаюсь написать функцию, которая сообщает место встречи, если оно существует, и в противном случае находит точку, которая является ближайшей к обеим линиям. Итак, если линии встречаются, примените 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 ().

1 Ответ

0 голосов
/ 16 марта 2020

Опечатка в вызове функции.

(x, y), exact = almost_meeting_lines(a1, b1, a1, b2)

должно быть

(x, y), exact = almost_meeting_lines(a1, b1, a2, b2)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...