C/C++

. Разветвляющийся процесс. Пересечение линий и решение уравнений.

Определить, пересекаются ли линии y=ax3+bx2+cx+d и y=kx+m. Если пересекаются, найти точки пересечения
Avram Alibrov
Avram Alibrov
122
Тут слишком много писать всего - даже одних ветвлений достаточно много получается. Вот уравнение в общем виде к данному заданию:
ax³ + bx² + (c-k)x + d-m = 0.
При a=0 это кубическое уравнение вырождается в квадратное, а если ещё и b=0, тогда в линейное и т.д. У кубических уравнений всегда есть хотя бы один вещественный корень, а у квадратных может и не быть ни одного. Кроме того коэффициенты скорее всего задаются не абсолютно точно, если они, например, не целые, а тогда и задача может оказаться некорректной. А делать это задание с целыми числами a, b, c, d, k, m - хоть вроде и неплохая идея (так как в этом случае тут всё чётко выходит), только вот решение получится лишь частичным...
Георгий Хачатрян
Георгий Хачатрян
66 572
Лучший ответ
y=ax3+bx2+cx+d - это не линия, это кубическая гипербола. Кто-то, видать, тебя обманул.
Пересекаться это счастье будет при любом a<>0. А при a=0 мы имеем кучу вырожденных случаев, в общем сводящихся к решению квадратного уравнения.
Ну а решать кубическое уравнение - увольте-с, википедия вам в помощь...
Ленар Саттаров
Ленар Саттаров
59 050
Для определения пересечения линий необходимо приравнять уравнения линий друг к другу и решить полученное уравнение относительно x.

y = ax^3 + bx^2 + cx + d

y = kx + m

ax^3 + bx^2 + cx + d = kx + m

ax^3 + bx^2 + (c - k)x + (d - m) = 0

Данное уравнение является кубическим уравнением относительно x.

Если мы найдем значение x, мы сможем подставить его в уравнение y = kx + m, чтобы найти соответствующее значение y.

Для решения кубического уравнения можно воспользоваться формулой Кардано:

x = [(q + (q^2 + r^3)^0.5)^(1/3) + (q - (q^2 + r^3)^0.5)^(1/3)] - b/3a

где

q = (3ac - b^2)/(9a^2)

r = (9abc - 27a^2d - 2b^3)/(54a^3)

Если вычисленное значение x подставить в уравнение y = kx + m, мы найдем соответствующее значение y.

Если при решении уравнения мы получим три значения x, то это означает, что линия пересекает линию y=kx+m в трех точках. Если мы получим два значения x, то линии пересекаются в двух точках. Если же мы получим только одно значение x, то линии касаются друг друга в этой точке.

Заметим, что при решении кубического уравнения могут получаться комплексные корни, что означает, что линии не пересекаются в действительных числах.
Valensio Hast
Valensio Hast
25 526