написать программу и математическую модель для нахождения точки пересечения прямых ax+b=0...

+406 голосов
6.3m просмотров

написать программу и математическую модель для нахождения точки пересечения прямых ax+b=0 и cx+d=0!!!!!!!!!!! ХЕЛП!!!! РЕАЛЬНО ХЕЛП, САМА НИКАК НЕ МОГУ ДОДУМАААААААААААТЬСЯЯЯЯЯЯЯЯЯЯЯЯЯЯ ОАОАОАОАО


Информатика | 6.3m просмотров
Дан 1 ответ
+168 голосов

Эти прямые, записанные как функции f(x):

f1(x) = ax + b

f2(x) = cx + d

В точке пересечения прямых значения функций равны. Поэтому, приравняем их друг другу и решим получившееся уравнение:

ax + b = cx + d

ax - cx = d - b

(a - c)*x = d - b

x = (d - b) / (a - c)

Так находится координата икс точки пересечения. Далее находится игрек простой подстановкой найденного значения икс в любую из двух исходных функций (пускай в первую функцию).

Также, возможны частные случаи, которые надо предусмотреть в программе:

1) Если a = c но b ≠ d. Такие прямые параллельны друг другу, и не имеют точек пересечения. При попытке решения уравнения (см.выше) иксы сократятся, и получится всегда (при любом икс) неверное равенство вида 0 = b - d.

2)  Если a = c и b = d. То есть, были введены одинаковые уравнения прямых (задана дважды одна и та же прямая, т.е. все точки этих уравнений совпадают). При попытке решения уравнения (см.выше) иксы сократятся, и b, d -тоже, и получится всегда (при любом икс) верное равенство вида 0 = 0.

Сама программа (на Паскале):

var

x, y, a, b, c, d: real;

begin

Writeln('Ввод коэффициентов уравнений двух прямых:');

Write('a= ');

Read(a);

Write('b= ');

Read(b);

Write('c= ');

Read(c);

Write('d= ');

Read(d);

if a = c then

begin

if b = d then

Writeln('Задана дважды одна и та же прямая. Все точки совпадают.')

else

Writeln('Заданы параллельные прямые. Точек пересечения нет.');

exit

end;

x := (d - b) / (a - c);

y := a * x + b;

Writeln('Координаты точки пересечения прямых:');

Writeln('x= ', x);

Writeln('y= ', y);

end.

(5.3k баллов)