Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   *Теория* | Нахождение коэффициентов полного уравнения 4 степени (http://forum.oszone.net/showthread.php?t=71564)

mrcnn 19-09-2006 13:56 486733

*Теория* | Нахождение коэффициентов полного уравнения 4 степени
 
Как найти коэффициенты A,B,C,D полного уравнения 4 степени x^4 + A * x^3 + B * x^2 + C* x^1 + D = 0 если известны корни x1,x2,x3,x4 ?

Искал в инете, нашел статью www.n-t.ru/tp/ns/oam.htm как найти коэффициенты для _неполного_ уравнения 4 степени, однако в этой статье по поводу полного уравнения написана всего 1 строка, и я не понимаю, как найти коэффициент A и как получить для полного уравнения формулы подобные (3) (4) (5), которые мне нужны для реализации алгоритма. Подскажите, пожалуйста.


XPEHOMETP 19-09-2006 16:30 486819

Там же в статье в самом низу написано:
Цитата:

Полное уравнение четвертой степени X4 + KX3 + TX2 + PX + Q = 0 сводится уравнению (1) путем замены переменной X на переменную Y = X + K/4
C другой стороны, если УЖЕ ИЗВЕСТНЫ все корни кубического уравнения x1,x2,x3,x4, то это означает, что справедливо равенство:

(Х-x1)(Х-x2)(Х-x3)(Х-x4)=0

Тупо перемножаем, раскрывая скобки, сравниваем с записью x^4 + A * x^3 + B * x^2 + C* x^1 + D = 0, находим коэффициенты.

mrcnn 19-09-2006 17:20 486843

XPEHOMETP
Спасибо. Ты натолкнул меня на хорошие мысли. Тупо перемножать (Х-x1)(Х-x2)(Х-x3)(Х-x4) программе слишком сложно, нужны были формулы.

Тема закрыта (можно удалить).

ivank 19-09-2006 21:40 486934

mrcnn
Может я чего-то не понимаю, но что мешает подставить в исходное уравнение четыре корня? Получить систему из линейных 4-ёх уравнений с 4-мя неизвестными. Которая элементарно решается методом гаусса, либо ещё как-нибудь.

pva 21-09-2006 09:58 487544

для ленивых:
1. есть учебники за 11 класс школы, в которых все формулы есть
2. есть мат.пакеты, которые перемножат всё, что нужно
Код:

In[1] = CForm[Simplify@CoefficientList[ExpandAll[(x - x1)(x - x2)(x - x3)(x - x4)], x]]
Out[1] = List(x1*x2*x3*x4,-(x2*x3*x4) - x1*(x3*x4 + x2*(x3 + x4)),
  x3*x4 + x2*(x3 + x4) + x1*(x2 + x3 + x4),
  -x1 - x2 - x3 - x4,1)


mrcnn 21-09-2006 13:58 487698

Спасибо за ответы. ivank, идея с матрицами интересная, но мне пока что будет трудно ее реализовать.

Я решил пойти по наиболее легкому пути, рассмотрев только частный случай

Код:

Dim x1,x2,x3,x4,a,b,c,d

x1=CDbl(inputbox("x1=?"))
x2=CDbl(inputbox("x2=?"))
x3=CDbl(inputbox("x3=?"))
x4=CDbl(inputbox("x4=?"))

d=x1*x2*x3*x4
MsgBox(d)

c=(x1*x2*x3+x1*x2*x4+x1*x3*x4+x2*x3*x4)*(-1)
MsgBox(c)

b=x1*x2+x1*x3+x1*x4+x2*x3+x2*x4+x3*x4
MsgBox(b)

a=(x1+x2+x3+x4)*(-1)
MsgBox(a)



Время: 12:55.

Время: 12:55.
© OSzone.net 2001-