Решить систему линейных уравнений при известных 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")
→ Ссылка