← Назад к геометрии

Пересечение двух прямых

Нахождение точки пересечения прямых, заданных уравнениями a₁x + b₁y + c₁ = 0 и a₂x + b₂y + c₂ = 0

🐍 Python
a1, b1, c1, a2, b2, c2 = map(int, input().split())

def f(ax, ay, bx, by):
    return ax * by - ay * bx

sg = f(a1, b1, a2, b2)

y = -f(a1, c1, a2, c2) / sg
x = -f(c1, b1, c2, b2) / sg

print(x, y)
⚙️ C++
#include <bits/stdc++.h>
using namespace std;

double f(double ax, double ay, double bx, double by) {
    return ax * by - ay * bx;
}

int main() {
    double a1, b1, c1, a2, b2, c2;
    cin >> a1 >> b1 >> c1 >> a2 >> b2 >> c2;
    
    double sg = f(a1, b1, a2, b2);
    
    double y = -f(a1, c1, a2, c2) / sg;
    double x = -f(c1, b1, c2, b2) / sg;
    
    cout << x << " " << y << endl;
    
    return 0;
}

Формула пересечения прямых

Для прямых, заданных уравнениями:

a₁x + b₁y + c₁ = 0
a₂x + b₂y + c₂ = 0

Точка пересечения вычисляется по формулам Крамера:

x = -det(c₁ b₁; c₂ b₂) / det(a₁ b₁; a₂ b₂)
y = -det(a₁ c₁; a₂ c₂) / det(a₁ b₁; a₂ b₂)
Внимание: Если определитель det(a₁ b₁; a₂ b₂) = 0, то прямые параллельны или совпадают. В этом случае решения нет (или бесконечно много).

Формат ввода и вывода

Ввод: a₁ b₁ c₁ a₂ b₂ c₂ — коэффициенты уравнений

Вывод: x y — координаты точки пересечения

Пример:

1 -1 0 1 1 -2

Прямые: x - y = 0 и x + y - 2 = 0 → пересечение в (1, 1)

Вывод: 1.0 1.0

Попробовать онлайн

Результат появится здесь...