Вывести уравнение прямой по координатам двух точек

Задача

По введенным пользователем координатам двух точек вывести уравнение прямой, проходящей через эти точки.

Пояснение к задаче и алгоритм решения

Общее уравнение прямой имеет вид y = kx + b. Для какой-то конкретной прямой в уравнении коэффициенты k и b заменяются на числа, например, y = 4x - 2. Задача сводится именно к нахождению этих коэффициентов.

Так как координаты точки это значения x и y, то мы имеем два уравнения. Пусть, например, координаты точки А(3;2), а координаты B(-1;-1). Получаем уравнения:
2 = k*3 + b,
-1 = k*(-1) + b.

Решая полученную систему уравнений находим значения k и b:
b = 2 - 3k
-1 = -k + 2 - 3k
4k = 3
k = 3/4 = 0.75
b = 2 - 3 * 0.75 = 2 - 2.25 = -0.25

Таким образом, получается уравнение конкретной прямой, проходящей через указанные точки: y = 0.75x - 0.25.

Вывод общих выражений для вычисления b и k:
| y1 = kx1 + b
| y2 = kx2 + b
b = y2 - kx2
y1 = kx1 + y2 - kx2
k = (y1 - y2) / (x1 - x2)

Алгоритм решения данной задаче на языке программирования будет таков:

  1. Получить значения координат первой точки и присвоить их переменным, например x1 и y1.
  2. Получить значения координат (x2, y2) второй точки.
  3. Вычислить значение k по формуле k = (y1 - y2) / (x1 - x2).
  4. Вычислить значение b по формуле b = y2 - k * x2.
  5. Вывести на экран полученное уравнение.

Исходный код на языке программирования Pascal

var    
        x1,y1,x2,y2: real;
        k, b: real;
 
begin
        write('A(x1;y1): '); readln(x1, y1);
        write('B(x2;y2): '); readln(x2, y2);
 
        k := (y1 - y2) / (x1 - x2);
        b := y2 - k * x2;
 
        writeln('y = ',k:0:2,'x + ',b:0:2);
end.

Пример(ы) выполнения программы на языке Pascal

A(x1;y1):
1.2
5.6
B(x2;y2):
-3.45 8.2
y = -0.56x + 6.27

Исходный код на языке программирования C

#include <stdio.h>
 
main() {
    float x1, y1, x2, y2, k, b;
 
    printf("A(x1;y1): ");
    scanf("%f%f", &x1,&y1);
    printf("A(x2;y2): ");
    scanf("%f%f", &x2,&y2);
 
    k = (y1 - y2) / (x1 - x2);
        b = y2 - k * x2;
 
    printf("Уравнение прямой: y = %.2fx + %.2f\n", k, b);
}

Пример(ы) выполнения программы на языке C

A(x1;y1): 5.67 -1.45
A(x2;y2): -3.12 4.00
Уравнение прямой: y = -0.62x + 2.07

Исходный код на языке программирования Python

print("Координаты точки A(x1;y1):")
x1 = float(input("\tx1 = "))
y1 = float(input("\ty1 = "))
 
print("Координаты точки B(x2;y2):")
x2 = float(input("\tx2 = "))
y2 = float(input("\ty2 = "))
 
print("Уравнение прямой, проходящей через эти точки:")
k = (y1 - y2) / (x1 - x2)
b = y2 - k*x2
print(" y = %.2f*x + %.2f" % (k, b))

Пример(ы) выполнения программы на языке Python

Координаты точки A(x1;y1):
        x1 = 4.3
        y1 = -1.2
Координаты точки B(x2;y2):
        x2 = -8.5
        y2 = 4
Уравнение прямой, проходящей через эти точки:
 y = -0.41*x + 0.55

Исходный код на языке программирования КуМир

алг уравнение_прямой
нач
  вещ x1, y1, x2, y2, k, b
  вывод "Координаты точки A(x1;y1): "
  ввод x1, y1
  вывод "Координаты точки B(x2;y2): "
  ввод x2, y2
  k := (y1 - y2) / (x1 - x2)
  b := y2 - k * x2
  вывод "Уравнение прямой: y = " + вещ_в_лит(k) + "x + " + вещ_в_лит(b)
кон

Пример(ы) выполнения программы на языке КуМир

Координаты точки A(x1;y1): 4 9
Координаты точки B(x2;y2): -1 -3
Уравнение прямой: y = 2.4x + -0.6

Исходный код на языке программирования Basic

input "x1 = ", x1
input "y1 = ", y1
input "x2 = ", x2
input "y2 = ", y2
 
k = (y1 - y2) / (x1 - x2)
b = y2 - k * x2
 
decimal 2
print "y = " + k + "x + " + b

Пример(ы) выполнения программы на языке Basic

x1 = 7.45
y1 = -1
x2 = -3.4
y2 = 3
y = -0.37x + 1.75

Тема

Линейные алгоритмы

Уровень сложности

Средний

Дата публикации