Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
CURS_PR.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
386 Кб
Скачать
☆

1. Теоретические основы разработки.

1.1. Описание предметной области

Кубическое уравнение - это уравнение вида ax3+bx2+cx+d = 0,где a,b,c,d - вещественные числа.

Решением кубического уравнения является такое число Xp, которое обращает уравнение в верное равенство. Согласно основной теореме алгебры, кубическое уравнение имеет три корня. Это могут быть либо три действительных числа, либо одно действительное и два комплексно-сопряженных числа.

Так уравнение X3-2X2-5X+6=0 имеет три различных действительных корня:

X1= 1 (13-2*12-5*1+6= 0)

X2= -2 ((-2) 3-2*(-2) 2-5*(-2)+6= 0)

X3= 3 (33-2*32-5*3+6=0);

Уравнение X3+3X2-4= 0 имеет также три действительных корня:

X1= X2= -2 ((-2)3 +3*(-2) 2-4=0)

X3= 1 (13+3*12-4=0);

А уравнение X3-1=0 имеет один действительный корень

X1= 1 (13-1= 0)

и два комплексно-сопряженных корня

X2= (-1+i√3)/2

и

X3= (-1-i√3)/2

Часто интерес представляют только действительные корни.

Изучение способов решения кубических уравнений входит в программу курса математики многих учебных заведений. При этом преподаватель, проверяя решения студентов, должен подставлять полученные значения корней в уравнение и проверять правильность результата, что является трудоемкой и утомительной операцией. Разрабатываемая программа позволит быстро получить правильные ответы и, таким образом, облегчит труд преподавателя. Кроме того, данная программа может использоваться при выполнении различных инженерных и экономических расчетов, где требуется решение кубических уравнений.

1.2. Анализ методов решения.

Решение кубических уравнений может быть реализовано следующими способами:

  1. Ручным: этот способ является трудоемким и требует больших затрат времени.

  2. Автоматизированным: исходные данные вводятся вручную, а результат рассчитывается программой на компьютере.

  3. Автоматическим: исходные данные автоматически считываются с внешнего устройства (например, с файла на диске) и обрабатываются программой.

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

При этом решать уравнения можно следующими методами:

1) Подбор первого корня X1 уравнения среди множителей свободного члена d; затем кубический многочлен делится на множитель X-X1, соответствующий этому корню, и решается получившееся квадратное уравнение.

Рассмотрим пример:

В уравнении X3+3X2-4=0 множителями свободного члена являются числа 1, -1, 2, 4, -4. Последовательно подставляя их в уравнение, выясним, что 1 является его корнем. Итак, X1 =1.

Выполним деление:

X3+3X2–4 │X-1

│─────

X3 –X2 │X2+4X+4

─────

4X2-4

4X2-4X

─────

4X-4

4X-4

────

0

Решая квадратное уравнение X2 +4X+4=0, получим X2= X3= -2.

Данный метод неудобен тем, что позволяет найти первый корень, только если он целый, а также тем, что не слишком легко запрограммировать деление кубического многочлена на одночлен.

2) Приведение уравнения к виду X3 = mX+n или X3 +mX= n или X3 +n= mX, где m и n - положительные числа, и решение получившегося уравнения по формулам Тартальи.

Рассмотрим пример:

Уравнение X3+3X2–4=0 можно преобразовать следующим образом:

X3+3X2-4=(X3+3X2*1+3X*1+1)-3X-1-4= (X+1)3 -3X-5 =0

(X+1)3 =3(X+1)+2

Сделав замену переменной t= X+1, получим t3 = 3t+2.

Согласно формуле Тартальи, корень t=U+3√V+3√V, где U и V - решение системы

U+V= n

UV= (m/3)3

Т. к. m= 3, а n= 2, получим

U+V= 2

UV= (3/3)3

откуда U= 1; V= 1

т. к. 3√1= 1 или -1/2+i√3/2 или –1/2-i√3/2 , то

t=1+1=2 или t=(-1/2+i√3/2)+(-1/2-i√3/2)= -1

Т. к. X= t-1, то получим корни 2-1= 1 и -1-1= -2

Данный метод неудобен тем, что требует работы с комплексными числами; кроме того, не слишком легко запрограммировать приведение уравнения к виду, пригодному для использования формул Тартальи.

3) Использование приближенных методов, таких как метод дихотомии, метод хорд, метод касательных, комбинированный метод хорд и касательных. Для использования любого из этих методов вначале необходимо отделить корни, то есть найти такой интервал (Xl, Xr), на котором имеется только один корень.

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

пусть f(X)=aX3+bX2+cX+d

тогда f '(X)=3aX2+2bX+c

Решая уравнение f '(X)= 0, получим:

3aX2+2bX+c=0 (*)

Данное уравнение может:

Не иметь корней. В этом случае кубическая функция монотонно возрастает или убывает на всем множестве действительных чисел и, следовательно, имеет только один корень (рис. 1а).

Иметь один корень. В этом случае кубическая функция также монотонна на всей числовой оси и имеет только один корень (рис. 1б).

Иметь два корня. В этом случае кубическая функция имеет три интервала монотонности.

(-∞; Xl] ; [Xl; Xr] ; [Xr; +∞),

где Xl, Xr - решение уравнения (*), причем Xl< Xr (рис. 1в)

На каждом из этих интервалов может либо быть один корень (если функция принимает значения разных знаков на концах интервала), либо не быть корней.

Рассмотрим пример:

Для уравнения X3+3X2-4= 0

f '(X)=3X2+6X

Решая уравнение 3X2+6X=0, получим

3X(X+2)= 0

Xl= -2; Xr= 0

Рассмотрим интервал (-∞; -2]

при X→-∞ X3+3X2-4→-∞

при X= -2 (-2)3 +3*(-2)2 -4= 0

Следовательно, на этом интервале 1 корень X1= -2

Рассмотрим интервал [-2; 0]

при X= -2 (-2)3 +3(-2) 2-4= 0

при X= 0 03+3*02-4= -4

На этом интервале 1 корень X1= -2

Рассмотрим интервал [0; +∞)

при X= 0 03+3*02-4= -4

при X→∞ X3+3X2-4→∞

т. е. на концах интервала функция имеет значения разных знаков, следовательно, на этом интервале должен быть корень. Сузим интервал, взяв вместо +∞ число 10

(т.к. 103 +3*102 -4> 0) и будем искать корень методом дихотомии.

1шаг: Xl= 0; f(Xl)= -4

Xr= 10; f(Xr)= 1294

найдем X= (Xl+Xr)/2= 5

f(X)= 53 +3*52 -4= 194

т. к. f(X)> 0, то берем интервал [Xl, X] (рис. 2) Xr= X= 5

2 шаг: X= (Xl+Xr)/2= 2.5

f(X)= 2.53 +3*2.52 -4= 4.375

f(X)> 0 => Xr= X= 2.5

продолжая вычисления, можно найти корень с любой заданной точностью.

Данный метод требует большого количества вычислений, зато он прост в программировании, поэтому реализовывать будем именно его.

Таким образом, для решения кубического уравнения необходимо:

1) решить уравнение 3ax2 +2bx+c= 0 (*)

2) если оно не имеет корней или имеет один корень, выбрать в качестве интервала поиска интервал (-∞; +∞), где в качестве ∞ можно использовать максимальное представимое в ЭВМ число.

3) Если уравнение (*) имеет два корня, использовать три интервала поиска: (-∞, Xl] , [Xl, Xr] и [Xr, +∞),

где Xl, Xr - корни уравнения (*), причем Xl< Xr

4) На каждом интервале поиска необходимо:

4.1) Определить наличие корня. Корень есть, если на границах интервала функция f(x)= ax3+bx2+cx+d имеет разные знаки.

4.2) Если корень есть, найти его значение методом дихотомии по следующему алгоритму:

- вычислить X= (Xl+Xr)/2, где Xl и Xr - левая и правая границы интервала

- если f(X)-f(Xl)< 0, то принять Xr= X, иначе принять Xl= X

- повторять вычисления до тех пор, пока не получим

|f(X)|<eps где eps- заданная точность

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]