Нахождение точки пересечения двух кусочных функций - PullRequest
0 голосов
/ 05 декабря 2018

Решение этой проблемы .Я пытаюсь (в Python2) получить пересечение двух кусочных функций, которые представлены в виде массивов: a=[[x1,y1],[x2,y2],...], аналогично для б.Кусочная функция определяется прямыми, соединяющими точки на двумерном графике.То, что я хочу найти, это координата X их пересечения.Так что я имею в виду следующее.Во-первых, я выбираю первые две точки вверх (массив a) и вычисляю градиент и y-точку пересечения прямой, соединяющей их.Затем я перебираю цикл вниз (массив b) и проверяю, находится ли точка пересечения и находится ли она в пределах диапазона точек.Если это так, то он распечатывает это.

found = False
for i in range(1, len(up)):
    a = float((up[i][1]-up[i-1][1]))/(up[i][0]-up[i-1][0])
    b = up[i][1]-a*up[i][0]
    for j in range(1, len(down)):
        c = float((down[j][1]-down[j-1][1]))/(down[j][0]-down[j-1][0])
        d = down[j][1]-c*down[j][0]
        x =(d-b)/(a-c)
        if up[i-1][0]<=x<=up[i][0] and down[j-1][0]<=x<=down[j][0]:
            print x
            found = True
            break
if found: break

Кажется, это работает с каждым тестовым примером, который они дали, и с каждым тестовым примером, который я могу придумать.Однако в тестовом примере № 5 (они держат его в секрете) он сталкивается с ошибкой во время выполнения.Что может быть причиной этой ошибки / есть ли лучший способ проверить точки пересечения?

...