Решить систему линейных уравнений при известных x и y
Есть две точки с известными координатами.
Нужна формула прямой, на которой лежат эти точки. Данный вопрос решается системой линейных уравнений. Много примеров такого решения от numpy
либо scipy
при известных k
и b
и неизвестных x
и y
, но у меня ситуация противоположная. Формула прямой, напомню y = kx + b
.
Искал, но не нашёл готовое решение. Есть ли такое?
Ответы (2 шт):
Автор решения: MBo
→ Ссылка
Подставили координаты первой точки, записали уравнение, подставили координаты второй, записали ещё одно. Решили относительно неизвестных k, b
.
Особый вид уравнений позволяет это сделать чуть проще, чем для произвольной системы.
y1 = k*x1 + b
y2 = k*x2 + b
вычтем
y1-y2 = k*(x1-x2)
k = (y1-y2) / (x1-x2)
и теперь
b = y1 - (y1-y2) / (x1-x2) * x1
Автор решения: Fox Fox
→ Ссылка
Готовый консольный скрипт (сохраните в файл .py и запустите)
import os
print("-" * 50 + "\nУравнение прямой, проходящей через две заданные точки:\n" + "-" * 50)
def line_equation(x1, y1, x2, y2):
if x1 == x2: return f"x = {x1}" # Вертикальная линия
elif y1 == y2: return f"y = {y1}" # Горизонтальная линия
else:
slope = (y2 - y1) / (x2 - x1)
intercept = y1 - slope * x1
return f"y = {slope}x + {intercept}"
# Пример использования:
x1, y1 = -1, 2
x2, y2 = 4, 3
print("Точки:", f"A({x1}, {y1}) и B({x2}, {y2})")
print("Уравнение:", line_equation(x1, y1, x2, y2))
print("\nНажмите любую клавишу для продолжения...")
os.system("pause > nul" if os.name == "nt" else "read > /dev/null")