Для того, чтобы решить геометрическую задачу методом координат, необходима точка пересечения, координаты которой используются при решении. Возникает ситуация, когда требуется искать координаты пересечения двух прямых на плоскости или определить координаты тех же прямых в пространстве. Данная статья рассматривает случаи нахождения координат точек, где пересекаются заданные прямые.
Точка пересечения двух прямых – определение
Необходимо дать определение точкам пересечения двух прямых.
Раздел взаимного расположения прямых на плоскости показывает, что они могут совпадать , быть параллельными, пересекаться в одной общей точке или скрещивающимися. Две прямые, находящиеся в пространстве, называют пересекающимися, если они имеют одну общую точку.
Определение точки пересечения прямых звучит так:
Точка, в которой пересекаются две прямые, называют их точкой пересечения. Иначе говоря, что точка пересекающихся прямых и есть точка пересечения.
Рассмотрим на рисунке, приведенном ниже.
Нахождение координат точки пересечения двух прямых на плоскости
Перед нахождением координат точки пересечения двух прямых, необходимо рассмотреть предлагаемый ниже пример.
Если на плоскости имеется система координат Оху, то задаются две прямые a и b. Прямой a соответствует общее уравнение вида A1x+B1y+C1=0, для прямой b – A2x+B2y+C2=0. Тогда M0(x0, y0) является некоторой точкой плоскости необходимо выявить , будет ли точка М0 являться точкой пересечения этих прямых.
Чтобы решить поставленную задачу, необходимо придерживаться определения. Тогда прямые должны пересекаться в точке, координаты которой являются решением заданных уравнений A1x+B1y+C1=0 и A2x+B2y+C2=0. Значит, координаты точки пересечения подставляются во все заданные уравнения. Если они при подстановке дают верное тождество, тогда M0(x0, y0) считается их точкой пересечения.
Даны две пересекающиеся прямые 5x-2y-16=0 и 2x-5y-19=0. Будет ли точка М0 с координатами (2,-3) являться точкой пересечения.
Решение
Чтобы пересечение прямых было действительным, необходимо, чтобы координаты точки М0 удовлетворяли уравнениям прямых. Это проверяется при помощи их подстановки. Получаем, что
5·2-2·(-3)-16=0⇔0=02·2-5·(-3)-19=0⇔0=0
Оба равенства верные, значит М0 (2, -3) является точкой пересечения заданных прямых.
Изобразим данное решение на координатной прямой рисунка, приведенного ниже.
Ответ: заданная точка с координатами (2,-3) будет являться точкой пересечения заданных прямых.
Пересекутся ли прямые 5x+3y-1=0 и 7x-2y+11=0 в точке M0 (2, -3)?
Решение
Для решения задачи необходимо подставить координаты точки во все уравнения. Получим, что
5·2+3·(-3)-1=0⇔0=07·2-2·(-3)+11=0⇔31=0
Второе равенство не является верным, значит, что заданная точка не принадлежит прямой 7x-2y+11=0. Отсюда имеем, что точка М0 не точка пересечения прямых.
Чертеж наглядно показывает, что М0 – это не точка пересечения прямых. Они имеют общую точку с координатами (-1,2).
Ответ: точка с координатами (2,-3) не является точкой пересечения заданных прямых.
Переходим к нахождению координат точек пересечения двух прямых при помощи заданных уравнений на плоскости.
Задаются две пересекающиеся прямые a и b уравнениями вида A1x+B1y+C1=0 и A2x+B2y+C2=0, расположенных в Оху. При обозначении точки пересечения М0 получим, что следует продолжить поиск координат по уравнениям A1x+B1y+C1=0 и A2x+B2y+C2=0.
Из определения очевидно, что М0 является общей точкой пересечения прямых. В этом случае ее координаты должны удовлетворять уравнениям A1x+B1y+C1=0 и A2x+B2y+C2=0. Иными словами это и есть решение полученной системы A1x+B1y+C1=0A2x+B2y+C2=0.
Значит, для нахождения координат точки пересечения , необходимо все уравнения добавить в систему и решить ее.
Заданы две прямые x-9y+14=0 и 5x-2y-16=0 на плоскости. необходимо найти их пересечение.
Решение
Данные по условию уравнения необходимо собрать в систему, после чего получим x-9y+14=05x-2y-16=0. Чтобы решить его, разрешается первое уравнение относительно x, подставляется выражение во второе:
x-9y+14=05x-2y-16=0⇔x=9y-145x-2y-16=0⇔⇔x=9y-145·9y-14-2y-16=0⇔x=9y-1443y-86=0⇔⇔x=9y-14y=2⇔x=9·2-14y=2⇔x=4y=2
Получившиеся числа являются координатами, которые необходимо было найти.
Ответ: M0 (4, 2) является точкой пересечения прямых x-9y+14=0 и 5x-2y-16=0.
Поиск координат сводится к решению системы линейных уравнений. Если по условию дан другой вид уравнения, тогда следует привести его к нормальному виду.
Определить координаты точек пересечения прямых x-5=y-4-3 и x=4+9·λy=2+λ, λ∈R.
Решение
Для начала необходимо привести уравнения к общему виду. Тогда получаем, что x=4+9·λy=2+λ, λ∈R преобразуется таким образом:
x=4+9·λy=2+λ⇔λ=x-49λ=y-21⇔x-49=y-21⇔⇔1·(x-4)=9·(y-2)⇔x-9y+14=0
После чего беремся за уравнение канонического вида x-5=y-4-3 и преобразуем. Получаем, что
x-5=y-4-3⇔-3·x=-5·y-4⇔3x-5y+20=0
Отсюда имеем, что координаты – это точка пересечения
x-9y+14=03x-5y+20=0⇔x-9y=-143x-5y=-20
Применим метод Крамера для нахождения координат:
∆=1-93-5=1·(-5)-(-9)·3=22∆x=-14-9-20-5=-14·(-5)-(-9)·(-20)=-110⇒x=∆x∆=-11022=-5∆y=1-143-20=1·(-20)-(-14)·3=22⇒y=∆y∆=2222=1
Ответ: M0 (-5, 1).
Имеется еще способ для нахождения координат точки пересечения прямых, находящихся на плоскости. Он применим, когда одна из прямых задается параметрическими уравнениями, имеющими вид x=x1+ax·λy=y1+ay·λ, λ∈R. Тогда вместо значения x подставляется x=x1+ax·λ и y=y1+ay·λ, где получим λ=λ0, соответствующее точке пересечения, имеющей координаты x1+ax·λ0, y1+ay·λ0.
Определить координаты точки пересечения прямой x=4+9·λy=2+λ, λ∈R и x-5=y-4-3.
Решение
Необходимо выполнить подстановку в x-5=y-4-3 выражением x=4+9·λ, y=2+λ, тогда получим:
4+9·λ-5=2+λ-4-3
При решении получаем, что λ=-1. Отсюда следует, что имеется точка пересечения между прямыми x=4+9·λy=2+λ, λ∈R и x-5=y-4-3. Для вычисления координат необходимо подставить выражение λ=-1 в параметрическое уравнение. Тогда получаем, что x=4+9·(-1)y=2+(-1)⇔x=-5y=1.
Ответ: M0 (-5, 1).
Для полного понимания темы, необходимо знать некоторые нюансы.
Предварительно необходимо понять расположение прямых. При их пересечении мы найдем координаты, в других случаях решения существовать не будет. Чтобы не делать эту проверку, можно составлять систему вида A1x+B1y+ C1=0A2x+B2+C2=0 При наличии решения делаем вывод о том, что прямые пересекаются. Если решение отсутствует, то они параллельны. Когда система имеет бесконечное множество решений, тогда говорят, что они совпадают.
Даны прямые x3+y-4=1 и y=43x-4. Определить, имеют ли они общую точку.
Решение
Упрощая заданные уравнения, получаем 13x-14y-1=0 и 43x-y-4=0.
Следует собрать уравнения в систему для последующего решения:
13x-14y-1=013x-y-4=0⇔13x-14y=143x-y=4
Отсюда видно, что уравнения выражаются друг через друга, тогда получим бесконечное множество решений. Тогда уравнения x3+y-4=1 и y=43x-4 определяют одну и ту же прямую. Поэтому нет точек пересечения.
Ответ: заданные уравнения определяют одну и ту же прямую.
Найти координаты точки пересекающихся прямых 2x+(2-3)y+7=0 и 23+2x-7y-1=0.
Решение
По условию возможно такое, прямые не будут пересекаться. Необходимо составить систему уравнений и решать. Для решения необходимо использовать метод Гаусса, так как с его помощью есть возможность проверить уравнение на совместимость. Получаем систему вида:
2x+(2-3)y+7=02(3+2)x-7y-1=0⇔2x+(2-3)y=-72(3+2)x-7y=1⇔⇔2x+2-3y=-72(3+2)x-7y+(2x+(2-3)y)·(-(3+2))=1+-7·(-(3+2))⇔⇔2x+(2-3)y=-70=22-72
Получили неверное равенство, значит система не имеет решений. Делаем вывод, что прямые являются параллельными. Точек пересечения нет.
Второй способ решения.
Для начала нужно определить наличие пересечения прямых.
n1→=(2, 2-3) является нормальным вектором прямой 2x+(2-3)y+7=0, тогда вектор n2→=(2(3+2), -7 – нормальный вектор для прямой 23+2x-7y-1=0.
Необходимо выполнить проверку коллинеарности векторов n1→=(2, 2-3) и n2→=(2(3+2), -7). Получим равенство вида 22(3+2)=2-3-7. Оно верное, потому как 223+2-2-3-7=7+2-3(3+2)7(3+2)=7-77(3+2)=0. Отсюда следует, что векторы коллинеарны. Значит, прямые являются параллельными и не имеют точек пересечения.
Ответ: точек пересечения нет, прямые параллельны.
Найти координаты пересечения заданных прямых 2x-1=0 и y=54x-2.
Решение
Для решения составляем систему уравнений. Получаем
2x-1=054x-y-2=0⇔2x=154x-y=2
Найдем определитель основной матрицы. Для этого 2054-1=2·(-1)-0·54=-2. Так как он не равен нулю, система имеет 1 решение. Отсюда следует, что прямые пересекаются. Решим систему для нахождения координат точек пересечения:
2x=154x-y=2⇔x=1245x-y=2⇔x=1254·12-y=2⇔x=12y=-118
Получили, что точка пересечения заданных прямых имеет координаты M0(12, -118).
Ответ: M0(12, -118).
Нахождения координат точки пересечения двух прямых в пространстве
Таким же образом находятся точки пересечения прямых пространства.
Когда заданы прямые a и b в координатной плоскости Охуz уравнениями пересекающихся плоскостей, то имеется прямая a , которая может быть определена при помощи заданной системы A1x+B1y+C1z+D1=0A2x+B2y+C2z+D1=0 а прямая b – A3x+B3y+C3z+D3=0A4x+B4y+C4z+D4=0.
Когда точка М0 является точкой пересечения прямых, тогда ее координаты должны быть решениями обоих уравнений. Получим линейные уравнения в системе:
A1x+B1y+C1z+D1=0A2x+B2y+C2z+D2=0A3x+B3y+C3z+D3=0A4x+B4y+C4z+D4=0
Рассмотрим подобные задания на примерах.
Найти координаты точки пересечения заданных прямых x-1=0y+2z+3=0 и 3x+2y+3=04x-2z-4=0
Решение
Составляем систему x-1=0y+2z+3=03x+2y+3=04x-2z-4=0 и решим ее. Чтобы найти координаты, необходимо решать через матрицу. Тогда получим основную матрицу вида A=10001232040-2 и расширенную T=1001012-340-24. Определяем ранг матрицы по Гауссу.
Получаем, что
1=1≠0, 1001=1≠0, 100012320=-4≠0, 1001012-3320-340-24=0
Отсюда следует, что ранг расширенной матрицы имеет значение 3. Тогда система уравнений x-1=0y+2z+3=03x+2y+3=04x-27-4=0 в результате дает только одно решение.
Базисный минор имеет определитель 100012320=-4≠0, тогда последнее уравнение не подходит. Получим, что x-1=0y+2z+3=03x+2y+3=04x-2z-4=0⇔x=1y+2z=-33x+2y-3 . Решение системы x=1y+2z=-33x+2y=-3⇔x=1y+2z=-33·1+2y=-3⇔x=1y+2z=-3y=-3⇔⇔x=1-3+2z=-3y=-3⇔x=1z=0y=-3.
Значит, имеем, что точка пересечения x-1=0y+2z+3=0 и 3x+2y+3=04x-2z-4=0 имеет координаты (1, -3, 0).
Ответ: (1, -3, 0).
Система вида A1x+B1y+C1z+D1=0A2x+B2y+C2z+D2=0A3x+B3y+C3z+D3=0A4x+B4y+C4z+D4=0 имеет только одно решение. Значит, прямые a и b пересекаются.
В остальных случаях уравнение не имеет решения, то есть и общих точек тоже. То есть невозможно найти точку с координатами, так как ее нет.
Поэтому система вида A1x+B1y+C1z+D1=0A2x+B2y+C2z+D2=0A3x+B3y+C3z+D3=0A4x+B4y+C4z+D4=0 решается методом Гаусса. При ее несовместимости прямые не являются пересекающимися. Если решений бесконечное множество, то они совпадают.
Можно произвести решение при помощи вычисления основного и расширенного ранга матрицы, после чего применить теорему Кронекера-Капелли. Получим одно, множество или полное отсутствие решений.
Заданы уравнения прямых x+2y-3z-4=02x-y+5=0 и x-3z=03x-2y+2z-1=0. Найти точку пересечения.
Решение
Для начала составим систему уравнений. Получим, что x+2y-3z-4=02x-y+5=0x-3z=03x-2y+2z-1=0 . решаем ее методом Гаусса:
12-342-10-510-303-221~12-340-56-130-20-40-811-11~~12-340-56-1300-125650075-1595~12-340-56-1300-1256500031110
Очевидно, что система не имеет решений, значит прямые не пересекаются. Точки пересечения нет.
Ответ: нет точки пересечения.
Если прямые заданы при помощи кононических или параметрических уравнений, нужно привести к виду уравнений пересекающихся плоскостей, после чего найти координаты.
Заданы две прямые x=-3-λy=-3·λz=-2+3·λ, λ∈R и x2=y-30=z5 в Охуz. Найти точку пересечения.
Решение
Задаем прямые уравнениями двух пересекающихся плоскостей. Получаем, что
x=-3-λy=-3·λz=-2+3·λ⇔λ=x+3-1λ=y-3λ=z+23⇔x+3-1=y-3=z+23⇔⇔x+3-1=y-3x+3-1=z+23⇔3x-y+9=03x+z+11=0x2=y-30=z5⇔y-3=0x2=z5⇔y-3=05x-2z=0
Находим координаты 3x-y+9=03x+z+11=0y-3=05x-2z=0, для этого посчитаем ранги матрицы. Ранг матрицы равен 3, а базисный минор 3-10301010=-3≠0, значит, что из системы необходимо исключить последнее уравнение. Получаем, что
3x-y+9=03x+z+11=0y-3=05x-2z=0⇔3x-y+9=03x+z+11=0y-3=0
Решим систему методом Крамер. Получаем, что x=-2y=3z=-5. Отсюда получаем, что пересечение заданных прямых дает точку с координатами (-2, 3, -5).
Ответ: (-2, 3, -5).
Простой алгоритм определения пересечения двух отрезков
Время на прочтение
4 мин
Количество просмотров 204K
Введение
В былые времена я увлекался компьютерной графикой, как 2х так и 3х мерной, в том числе математическими визуализациями. Что называется just for fun, будучи студентом, написал программу визуализирующую N-мерные фигуры, вращающиеся в любых измерениях, хотя практически меня хватило только на определение точек для 4-D гиперкуба. Но это только присказка. Любовь к геометрии осталась у меня с тех пор и по сей день, и я до сих пор люблю решать интересные задачи интересными способами.
Одна из таких задач попалась мне в 2010 году. Сама задача достаточно тривиальна: необходимо найти, пересекаются ли два 2-D отрезка, и если пересекаются — найти точку их пересечения. Более интересно решение, которое, я считаю, получилось достаточно элегантным, и которое я хочу предложить на суд читателя. На оригинальность алгоритма не претендую (хотя и хотелось бы), но в сети подобных решений я найти не смог.
Задача
Даны два отрезка, каждый из которых задан двумя точками: (v11, v12), (v21, v22). Необходимо определить, пересекаются ли они, и если пересекаются, найти точку их пересечения.
Решение
Для начала необходимо определить, пересекаются ли отрезки. Необходимое и достаточное условие пересечения, которое должно быть соблюдено для обоих отрезков следующее: конечные точки одного из отрезков должны лежать в разных полуплоскостях, если разделить плоскость линией, на которой лежит второй из отрезков. Продемонстрируем это рисунком.
На левом рисунке (1) показаны два отрезка, для обоих из которых условие соблюдено, и отрезки пересекаются. На правом (2) рисунке условие соблюдено для отрезка b, но для отрезка a оно не соблюдается, соответственно отрезки не пересекаются.
Может показаться, что определить, с какой стороны от линии лежит точка — нетривиальная задача, но у страха глаза велики, и всё не так сложно. Мы знаем, что векторное умножение двух векторов даёт нам третий вектор, направление которого зависит от того, положительный или отрицательный угол между первым и вторым вектором, соответственно такая операция антикоммутативна. А так как все вектора лежат на плоскости X-Y, то их векторное произведение (которое обязано быть перпендикулярным перемножаемым векторам) будет иметь ненулевой только компоненту Z, соответственно и отличие произведений векторов будет только в этой компоненте. Причем при изменении порядка перемножения векторов (читай: угла между перемножаемыми векторами) состоять оно будет исключительно в изменении знака этой компоненты.
Поэтому мы можем умножить попарно-векторно вектор разделяющего отрезка на векторы направленные от начала разделяющего отрезка к обеим точкам проверяемого отрезка.
Если компоненты Z обоих произведений будет иметь различный знак, значит один из углов меньше 0 но больше -180, а второй больше 0 и меньше 180, соответственно точки лежат по разные стороны от прямой. Если компоненты Z обоих произведений имеют одинаковый знак, следовательно и лежат они по одну сторону от прямой.
Если один из компонент Z является нулём, значит мы имеем пограничный случай, когда точка лежит аккурат на проверяемой прямой. Оставим пользователю определять, хочет ли он считать это пересечением.
Затем нам необходимо повторить операцию для другого отрезка и прямой, и убедиться в том, что расположение его конечных точек также удовлетворяет условию.
Итак, если всё хорошо и оба отрезка удовлетворяют условию, значит пересечение существует. Давайте найдём его, и в этом нам также поможет векторное произведение.
Так как в векторном произведении мы имеем ненулевой лишь компоненту Z, то его модуль (длина вектора) будет численно равен именно этой компоненте. Давайте посмотрим, как найти точку пересечения.
Длина векторного произведения векторов a и b (как мы выяснили, численно равная его компоненте Z) равна произведению модулей этих векторов на синус угла между ними (|a| |b| sin(ab)). Соответственно, для конфигурации на рисунке мы имеем следующее: |AB x AC| = |AB||AC|sin(α), и |AB x AD| = |AB||AD| sin(β). |AC|sin(α) является перпендикуляром, опущенным из точки C на отрезок AB, а |AD|sin(β) является перпендикуляром, опущенным из точки D на отрезок AB (катетом ADD’). Так как углы γ и δ — вертикальные углы, то они равны, а значит треугольники PCC’ и PDD’ подобны, а соответственно и длины всех их сторон пропорциональны в равном отношении.
Имея Z1 (AB x AC, а значит |AB||AC|sin(α) ) и Z2 (AB x AD, а значит |AB||AD|sin(β) ), мы можем рассчитать CC’/DD’ (которая будет равна Z1/Z2), а также зная что CC’/DD’ = CP/DP легко можно высчитать местоположение точки P. Лично я делаю это следующим образом:
Px = Cx + (Dx-Cx)*|Z1|/|Z2-Z1|;
Py = Cy + (Dy-Cy)*|Z1|/|Z2-Z1|;
Вот и все. Мне кажется что это действительно очень просто, и элегантно. В заключение хочу привести код функции, реализующий данный алгоритм. В функции использован самодельный шаблон vector<typename, int>, который является шаблоном вектора размерностью int с компонентами типа typename. Желающие легко могут подогнать функцию к своим типам векторов.
1 template<typename T>
2 bool are_crossing(vector<T, 2> const &v11, vector<T, 2> const &v12, vector<T, 2> const &v21, vector<T, 2> const &v22, vector<T, 2> *crossing)
3 {
4 vector<T, 3> cut1(v12-v11), cut2(v22-v21);
5 vector<T, 3> prod1, prod2;
6
7 prod1 = cross(cut1 * (v21-v11));
8 prod2 = cross(cut1 * (v22-v11));
9
10 if(sign(prod1[Z]) == sign(prod2[Z]) || (prod1[Z] == 0) || (prod2[Z] == 0)) // Отсекаем также и пограничные случаи
11 return false;
12
13 prod1 = cross(cut2 * (v11-v21));
14 prod2 = cross(cut2 * (v12-v21));
15
16 if(sign(prod1[Z]) == sign(prod2[Z]) || (prod1[Z] == 0) || (prod2[Z] == 0)) // Отсекаем также и пограничные случаи
17 return false;
18
19 if(crossing) { // Проверяем, надо ли определять место пересечения
20 (*crossing)[X] = v11[X] + cut1[X]*fabs(prod1[Z])/fabs(prod2[Z]-prod1[Z]);
21 (*crossing)[Y] = v11[Y] + cut1[Y]*fabs(prod1[Z])/fabs(prod2[Z]-prod1[Z]);
22 }
23
24 return true;
25 }
Координаты точки пересечения графиков функций
Как найти?
- Чтобы найти координаты точки пересечения графиков функций нужно приравнять обе функции друг к другу, перенести в левую часть все члена, содержащие $ x $, а в правую остальные и найти корни, полученного уравнения.
- Второй способ заключается в том, что нужно составить систему уравнений и решить её путём подстановки одной функции в другую
- Третий способ подразумевает графическое построение функций и визуальное определение точки пересечения.
Случай двух линейных функций
Рассмотрим две линейные функции $ f(x) = k_1 x+m_1 $ и $ g(x) = k_2 x + m_2 $. Эти функции называются прямыми. Построить их достаточно легко, нужно взять любые два значения $ x_1 $ и $ x_2 $ и найти $ f(x_1) $ и $ (x_2) $. Затем повторить тоже самое и с функцией $ g(x) $. Далее визуально найти координату точки пересечения графиков функций.
Следует знать, что линейные функции имеют только одну точку пересечения и только тогда, когда $ k_1 neq k_2 $. Иначе, в случае $ k_1=k_2 $ функции параллельны друг другу, так как $ k $ – это коэффициент угла наклона. Если $ k_1 neq k_2 $, но $ m_1=m_2 $, тогда точкой пересечения будет $ M(0;m) $. Это правило желательно запомнить для ускоренного решения задач.
Пример 1 |
Пусть даны $ f(x) = 2x-5 $ и $ g(x)=x+3 $. Найти координаты точки пересечения графиков функций. |
Решение |
Как это сделать? Так как представлены две линейные функции, то первым делом смотрим на коэффициент угла наклона обеих функций $ k_1 = 2 $ и $ k_2 = 1 $. Замечаем, что $ k_1 neq k_2 $, поэтому существует одна точка пересечения. Найдём её с помощью уравнения $ f(x)=g(x) $: $$ 2x-5 = x+3 $$ Переносим слагаемые с $ x $ в левую часть, а остальные в правую: $$ 2x – x = 3+5 $$ $$ x = 8 $$ Получили $ x=8 $ абциссу точки пересечения графиков, а теперь найдём ординату. Для этого подставим $ x = 8 $ в любое из уравнений хоть в $ f(x) $, либо в $ g(x) $: $$ f(8) = 2cdot 8 – 5 = 16 – 5 = 11 $$ Итак, $ M (8;11) $ – является точкой пересечения графиков двух линейных функций. Если не получается решить свою задачу, то присылайте её к нам. Мы предоставим подробное решение онлайн. Вы сможете ознакомиться с ходом вычисления и почерпнуть информацию. Это поможет своевременно получить зачёт у преподавателя! |
Ответ |
$$ M (8;11) $$ |
Пример 2 |
Дано $ f(x)=2x-1 $ и $ g(x) = 2x-4 $. Найти точки пересечения графиков функций. |
Решение |
Как найти? Опять же обращаем внимание на то, что угловые коэффициенты равны $ k_1 = k_2 = 2 $. Это означает, что линейные функции параллельны между собой, поэтому у них нет точек пересечения! |
Ответы |
Графики функций параллельны, нет точек пересечения. |
Случай двух нелинейных функций
Пример 3 |
Найти координаты точки пересечения графиков функций: $ f(x)=x^2-2x+1 $ и $ g(x)=x^2+1 $ |
Решение |
Как быть с двумя нелинейными функциями? Алгоритм простой: приравниваем уравнения друг к другу и находим корни: $$ x^2-2x+1=x^2+1 $$ Разносим по разным сторонам уравнения члены с $ x $ и без него: $$ x^2-2x-x^2=1-1 $$ $$ -2x=0 $$ $$ x=0 $$ Найдена абцисса искомой точки, но её недостаточно. Ещё нехватает ординаты $ y $. Подставляем $ x = 0 $ в любое из двух уравнений условия задачи. Например: $$ f(0)=0^2-2cdot 0 + 1 = 1 $$ $ M (0;1) $ – точка пересечения графиков функций |
Ответ |
$$ M (0;1) $$ |
Не такая тривиальная задача, скажу я вам. Всякий раз, когда возникает необходимость посчитать координату пересечения пары прямых, каждая из которых задана парой точек, снова беру блокнот и вывожу пару формул. И всякий раз – блин, ну это уже когда-то было, опять надо что-то делать с параллельными прямыми, опять появляется пакостная строго вертикальна линия, когда на (x1-x2) никак не разделить и т.д.
Поэтому – в подборку теории и практики, пригодится, сэкономим блокнот, спасем дерево.
Коэффициенты А, B, C
Все помним со школы формулу:
Тоже самое, но с претензией на образование (некоторые индивидуумы утверждают, что существует такая, и только такая, и никакая другая, формулировка):
Те же фаберже, только сбоку.
В теории надо составить и решить систему уравнений для первой и второй линии, где переменными будут X и Y точки пересечения.
Загвоздка в том, что мы не знаем коэффициенты для обеих линий.
В нашем случае известны координаты двух точек, по которым проходит линия. Поэтому мне, как последователю геометрического агностицизма, более привлекательная следующая формула:
Путем несложных операций приходим к следующей записи:
Глядя на вариант в исполнении высшего образования, получаем следующие формулы для нахождения коэффициентов:
Пока все идет отлично, нигде вероятного деления на ноль не встретилось.
Итак, мы можем легко найти два набора коэффициентов для первой и второй прямых. Переходим к системе уравнений.
Система уравнений
Как правило, подобная система уравнений решается путем выражения одной переменной через другую, подстановкой во второе уравнение, получая таким образом уравнение одной переменной. Далее переменная находится, подставляется, решается. Или определяется, что система решения не имеет.
Но нас интересует метод Крамера. Потому что с помощью этого метода можно получить сразу значения для обеих переменных, без дополнительных телодвижений.
Сразу же запишем метод под нашу систему.
Имеем следующую систему:
Определители будут такими:
Исходя из метода, решение выглядит так:
Ага! Вот и возможное деление на ноль, скажете вы. И правильно! В этой, в высшей степени непозволительной ситуации, когда знаменатель равен нулю, решения нет, прямые либо параллельны, либо совпадают (что, впрочем, частный случай параллельности). В коде, естественно, этот момент надо учитывать.
Практика 1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
//******************************************************* // Нахождение точки пересечения прямых (p1,p2) и (p3,p4) // Результат – факт пересечения //******************************************************* function CrossLines(const p1,p2,p3,p4: TxPoint; var res: TxPoint): Boolean; const Prec = 0.0001; var a1, a2: Extended; b1, b2: Extended; c1, c2: Extended; v: Extended; begin a1 := p2.y – p1.y; a2 := p4.y – p3.y; b1 := p1.x – p2.x; b2 := p3.x – p4.x; v := a1*b2 – a2*b1; Result := (abs(v) > Prec); if Result then begin c1 := p2.x*p1.y – p1.x*p2.y; c2 := p4.x*p3.y – p3.x*p4.y; res.X := –(c1*b2 – c2*b1)/v; res.Y := –(a1*c2 – a2*c1)/v; end; end; |
Частные случаи
- Прямые параллельны: ∆ab = 0
- (A1B2 – B1A2 = 0);
- Прямые совпадают: ∆ab = ∆X = ∆Y = 0
- (A1B2 – B1A2 = 0) И (A1C2 — A2C1 = 0) И (C1B2 -B1C2 = 0);
- Прямые перпендикулярны:
- (A1 A2 + B1 B2 = 0).
Принадлежность точки отрезку
В общем случае, чтобы определить принадлежность точки отрезку, надо установить две вещи:
- Точка принадлежит прямой, проходящей через конечные точки отрезка. Для этого достаточно подставить значение X и Y в уравнение прямой и проверить получившееся равенство. В нашем случае, этот пункт уже выполнен, т.к. точка пересечения априори принадлежит обеим прямым.
- Проверить факт нахождения точки между концами отрезка.
Займемся пунктом 2. Данный факт можно установить двумя способами:
- Логически, т.е. (x1 <= x <= x2) ИЛИ (x1 >= x >= x2). На случай «вертикальности» линии добавить проверку на Y:
- (y1 <= y <= y2) ИЛИ (y1 >= y >= y2).
- Арифметически. Сумма отрезков |x-x1| + |x-x2| должна быть равна длине отрезка |x1-x2|. Аналогично, на случай «вертикальности» , добавить проверку:
- |y-y1| + |y-y2| = |y1-y2|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
//***************************************************** // Проверка факта нахождения точки res между // концами отрезка (p1,p2). // Решение с помощью условных операторов и // коэффициентов A=(y2-y1) B=(x1-x2). // Выступают в качестве параметров, чтобы не тратить // время на их подсчет, т.к. в вызывающей стороне // они уже посчитаны //***************************************************** function CheckCrossPoint(const p1, p2, res: TxPoint; const A,B: Extended): Boolean; begin Result := (((B<0) and (p1.X < res.X) and (p2.X > res.X)) or ((B>0) and (p1.X > res.X) and (p2.X < res.X)) or ((A<0) and (p1.y > res.Y) and (p2.Y < res.Y)) or ((A>0) and (p1.y < res.Y) and (p2.Y > res.Y))); end; //***************************************************** // Проверить факт нахождения точки res между // концами отрезка (p1,p2) // Арифметическое решение без коэффициентов //***************************************************** function CheckCrossPoint(const p1, p2, res: TxPoint): Boolean; begin Result := (abs(p2.x–p1.x)>= abs(p2.x–res.x) + abs(p1.x–res.x)) and (abs(p2.y–p1.y)>= abs(p2.y–res.y) + abs(p1.y–res.y)); end; |
Практика показывает, что арифметический способ быстрее примерно в 3 раза. Когда-то я считал, что операции сравнения самые быстрые. Это давно уже не так.
Задача нахождения принадлежности точки P(x,y) отрезку, заданного двумя точками с координатами P1(x1, y1) и P2(x2, y2) подробно рассмотрена в отдельной статье.
Угол пересечения прямых
Угол пересечения прямых — это угол пересечения направляющих векторов. Т.е., взяв уже знакомые ранее точки p1 и p2, получим направляющий вектор V(p1,p2), и аналогично второй вектор M(p3,p4). В теории мы должны вычислить достаточно «затратную» функцию, с корнями, квадратами, дробями и арккосинусом.
Давайте не будем останавливаться на ней, она долгая, нудная и в нашем случае ненужная. Рассмотрим вектор:
α — угол наклона вектора к оси X, который можно найти, как:
α = arctan (A1 / B1)
Где расстояния:
A1 = (y1 — y2)
B1 = (x2 — x1)
Что-то знакомое? Да это ни что иное, как коэффициенты в уравнении прямой от образованных фанатов. Может они и правы в своем испепеляющем фанатизме…
Одним словом, коэффициенты (расстояния) у нас уже есть по обеим прямым.
Судя по рисунку, угол между векторами, это сумма углов наклона векторов к оси X. Ммм… не совсем так, на самом деле это разность.
По рисунку явно видно, что угол между векторам это γ = (β — α).
В предыдущем примере все правильно, просто знаки углов разные, т.к. находятся по разные стороны от оси X, а формула работает та же.
От теории к практике
Теперь в плане практического применения. Мне нужно точно знать, откуда, куда и в каком направлении этот угол. В теории, углом между прямыми считается наименьший из пары γ и (180-γ). Так вот, нам это не надо. Какой угол получится – такой нам и нужен.
Поэтому, под углом между векторами понимаем угол от вектора V(p1,p2) к вектору M(p3,p4). Если знак угла – отрицательный, понимаем, что он против часовой стрелки, иначе – по часовой стрелке.
Следует заметить, что, зная коэффициенты, для нахождения угла пересечения, координаты уже не нужны. Листинг таков:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
//********************************************************** // Посчитать угол пересечения векторов по коэфф-ам А и B //********************************************************** function CalcCrossAngle(const a1,b1: Extended; const a2,b2: Extended): Extended; var c1, c2: Extended; begin c1 := ArcTan2(a1,b1); c2 := ArcTan2(a2,b2); Result := c2–c1; if Result < –pi then Result := 2*pi + Result; if Result > pi then Result := Result – 2*pi; end; |
Тут ситуация с вертикальной прямой, т.е. когда теоретически происходит деление на ноль, явно не обрабатывается. Она корректно обрабатывается функцией ArcTan2, которая вернет в этом случае и знак, и 90 градусов.
Практика 2
В дополнение к функции нахождения точки пересечения, напишем «продвинутую» функцию, которая находит эту точку, определяет нахождение на каждом из отрезков, и определяет угол между направляющими векторами. Или же определяет, что прямые параллельны/совпадают.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
//********************************************************** // Тип пересечения прямых (p1,p2) и (p3,p4) //********************************************************** type TxCrossLineResult = ( xclrEqual = –32// эквивалентны ,xclrParallel = –16// параллельны ,xclrOk = 0 // как минимум пересечение есть ,xclrFirst = 1 // попадает в первый отрезок ,xclrSecond = 2 // попадает во второй отрезок ,xclrBoth = 3 // попадает в оба ,xclrPerpend = 4 // перпендикулярны // можно найти по маске через AND, но для полноты картины ,xclrFirstP = 5 // перпендикулярны и попадает в первый ,xclrSecondP = 6 // перпендикулярны и попадает в второй ,xclrBothP = 7 // перпендикулярны и попадает в оба ); //********************************************************** // Нахождение точки пересечения прямых (p1,p2) и (p3,p4) // Определяет параллельность, совпадение, // перпендикулярность, пересечение. // Определяет, каким отрезкам принадлежит. // Находит угол(рад.) от (p1,p2) к (p3,p4): // отрицательное значение – против часовой // положительное – по часовой //********************************************************** function CrossLines(const p1,p2,p3,p4: TxPoint; var res: TxPoint; var Angle: Extended): TxCrossLineResult; const Prec = 0.0001; var a1, a2: Extended; b1, b2: Extended; c1, c2: Extended; v: Extended; begin Angle := 0; a1 := p2.y – p1.y; a2 := p4.y – p3.y; b1 := p1.x – p2.x; b2 := p3.x – p4.x; c1 := p2.x*p1.y – p1.x*p2.y; c2 := p4.x*p3.y – p3.x*p4.y; v := a1*b2 – a2*b1; if abs(v) > Prec then begin Result := xclrOk; res.X := –(c1*b2 – c2*b1)/v; res.Y := –(a1*c2 – a2*c1)/v; if CheckCrossPoint(p1,p2,res) then Result := TxCrossLineResult(Integer(Result) + Integer(xclrFirst)); if CheckCrossPoint(p3,p4,res) then Result := TxCrossLineResult(Integer(Result) + Integer(xclrSecond)); if (abs(a1*a2 + b1*b2) < Prec) then Result := TxCrossLineResult(Integer(Result) + Integer(xclrPerpend)); Angle := CalcCrossAngle(a1,b1,a2,b2); end else begin Result := xclrParallel; if ((abs(c1*b2 – c2*b1) < Prec) and (abs(a1*c2 – a2*c1) < Prec)) then Result := xclrEqual; end; end; |
Исходники
Небольшие комментарии по интерфейсу.
Скачать (219 Кб): Исходники (Delphi XE 7-10)
Скачать (1.14 Мб): Исполняемый файл
При запуске генерируется случайным образом 4 точки, по две на прямую. Точки и отрезки можно перетаскивать мышкой. Также, слева присутствует панель, на которой можно ввести координаты точек или коэффициенты уравнения прямой. При нажатии «Enter» или когда элемент ввода теряет фокус, происходит перерасчет и перерисовка.
Внизу есть 4 кнопки переключения режимов отображения. Начиная со второй, помимо координат точки пересечений в верхнем левом углу будет отображаться текущий угол пересечения между направляющими векторами.
Если точка пересечений попадает в какой-либо из отрезков, соответствующий заголовок линии отрезка станет жирным. На рисунке это зеленая линия 2.
По умолчанию, рабочее поле системы координат имеет размерность [-10..10], которую можно изменить ползунком в нижнем правом углу.
Download Article
Download Article
When straight lines intersect on a two-dimensional graph, they meet at only one point,[1]
described by a single set of – and -coordinates. Because both lines pass through that point, you know that the – and – coordinates must satisfy both equations. With a couple extra techniques, you can find the intersections of parabolas and other quadratic curves using similar logic.
-
1
-
2
Advertisement
-
3
-
4
-
5
Check your work. It’s a good idea to plug your -value into the other equation and see if you get the same result. If you get a different solution for , go back and check your work for mistakes.[6]
-
6
-
7
Deal with unusual results. Some equations make it impossible to solve for . This doesn’t always mean you made a mistake. There are two ways a pair of lines can lead to a special solution:
Advertisement
-
1
Recognize quadratic equations. In a quadratic equation, one or more variables is squared ( or ), and there are no higher powers. The lines these equations represent are curved, so they can intersect a straight line at 0, 1, or 2 points. This section will teach you how to find the 0, 1, or 2 solutions to your problem.
-
2
Write the equations in terms of y. If necessary, rewrite each equation so y is alone on one side.
-
3
Combine the two equations to cancel out the y. Once you’ve set both equations equal to y, you know the two sides without a y are equal to each other.
-
4
Arrange the new equation so one side is equal to zero. Use standard algebraic techniques to get all the terms on one side. This will set the problem up so we can solve it in the next step.
-
5
-
6
Keep an eye out for two solutions for x. If you work too quickly, you might find one solution to the problem and not realize there’s a second one. Here’s how to find the two x-values for lines that intersect at two points:
-
7
Solve problems with one or zero solutions. Two lines that barely touch only have one intersection, and two lines that never touch have zero. Here’s how to recognize these:
- One solution: The problems factor into two identical factors ((x-1)(x-1) = 0). When plugged into the quadratic formula, the square root term is . You only need to solve one equation.
- No real solution: There are no factors that satisfy the requirements (summing to the middle term). When plugged into the quadratic formula, you get a negative number under the square root sign (such as ). Write “no solution” as your answer.
-
8
Plug your x-values back into either original equation. Once you have the x-value of your intersection, plug it back into one of the equations you started with. Solve for y to find the y-value. If you have a second x-value, repeat for this as well.
-
9
Write the point coordinates. Now write your answer in coordinate form, with the x-value and y-value of the intersection points. If you have two answers, make sure you match the correct x-value to each y-value.
Advertisement
Practice Problems and Answers
Add New Question
-
Question
What happens if the x’s cancel out?
Mario Banuelos is an Assistant Professor of Mathematics at California State University, Fresno. With over eight years of teaching experience, Mario specializes in mathematical biology, optimization, statistical models for genome evolution, and data science. Mario holds a BA in Mathematics from California State University, Fresno, and a Ph.D. in Applied Mathematics from the University of California, Merced. Mario has taught at both the high school and collegiate levels.
Assistant Professor of Mathematics
Expert Answer
-
Question
F(x)=2^2=12x+10 , g(x)=38
I suspect that you copied this problem down wrong. I’ll deal with what you wrote first, and then I’ll talk about what I think you may have meant.
As written, the first function says F(x)=2^2=12x+10. In other words, this is a simple one variable equation that simplifies to 4=12x+10. Then subtract 10 from both sides to get -6=12x. Finally, divide both sides by 12 to get -1/2 = x. You now have two different functions, each with a single variable. F(x): x=-1/2, and G(x): x=38. Any function that has only a single variable like this, x=__, is going to be a vertical straight line at that value. As a result, these two lines will never intersect, and there is no single solution for F(x) and G(x) simultaneously.
That is not a very interesting solution, which makes me think you copied it wrong. I think that what you probably meant is F(x)=x^2 + 12x + 10. I think you wrote 2^2 instead of x^2, and then you changed a + symbol into an = symbol in the middle of the function. (The + and = are the same button on most keyboards.) This becomes a more interesting problem.
You could now work on factoring the first function, but you don’t need to do that much work. If you notice, the second function, G(x), is already solved. It is the single value, G(x)=38. This means that the graph of that function is a straight vertical line. At every point on the line, x=38. So to solve the system, just insert the value 38 for x in the first equation: F(x)=38^2+12(38)+10. This equals 1444+456+10, which is F(x)=1910. So the solution where those two graphs cross is x=38, y=1910. You can write the coordinate pair as (38,1910).
-
Question
When the lines intersect at (3,6), what could represent the two lines?
The lines could be x = 3 and y = 6.
See more answers
Ask a Question
200 characters left
Include your email address to get a message when this question is answered.
Submit
Advertisement
Video
-
Equations for a circle or ellipse have an term and a term. To find the intersection of a circle and a straight line, solve for x in the linear equation.[10]
Substitute the solution for x in the circle equation, and you’ll have an easier quadratic equation. These problems can have 0, 1, or 2 solutions, as described in the method above. -
A circle and a parabola (or other quadratic) can have 0, 1, 2, 3, or 4 solutions. Find the variable that is squared in both equations — let’s say it’s x2. Solve for and substitute the answer for the in the other equation. Solve for y to get 0, 1, or 2 solutions. Plug each solution back into the original quadratic equation and solve for x. Each of these can have 0, 1, or 2 solutions.
Advertisement
About This Article
Article SummaryX
To algebraically find the intersection of two straight lines, write the equation for each line with y on the left side. Next, write down the right sides of the equation so that they are equal to each other and solve for x. Write down one of the two equations again, substituting the previous answer in place of x, and solve for y. These answers will give you the x and y coordinates of the intersection. To learn how to find the intersection when working with quadratic equations, keep reading!
Did this summary help you?
Thanks to all authors for creating a page that has been read 1,137,538 times.