1. Рішення алгебраїчних рівнянь методом виділення коренів
.1 Короткі теоретичні відомості
1.Пріращенія і приймаються досить великими числами
. Змінні квадратного тричлена приймаються рівними,.
. Перші елементи допоміжних векторів:,.
. До тих пір, поки і (- точність розрахунків) виконувати обчислення за такою схемою (зручно скористатися циклом while):
; для;; для;;;;.
5.Якщо, то коріння будуть дійсними, інакше - комплексно сполученими. Необхідно передбачити розрахунок і виведення таких коренів: при дійсних коренях
,;
при комплексно сполучених коренях
,
6.Если (тут N - порядок рівняння), то; для; і переходимо до пункту 1. Інакше здійснюємо висновок отриманих значень x і завершення роботи програми. br/>
1.2 Лістинг програми
unit Unit1;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, Grids, Buttons, StdCtrls, ExtCtrls; _Form1 = class (TForm) _Label1: TLabel; _Button1: TButton; _Edit1 : TEdit; _Edit2: TEdit; _Edit3: TEdit; _Edit4: TEdit; _Edit5: TEdit; _Edit6: TEdit; _Edit7: TEdit; _BitBtn1: TBitBtn; _StringGrid1: TStringGrid;: TImage; Kovalenko_Button1Click (Sender: TObject);
{Private declarations}
{Public declarations}; mas = array [1 .. 7] of real; _Form1: TKovalenko_Form1;, B, C, xRe, xIm: mas; n, i: integer; p, q, dp, dq, d: real; e = 0.001;
{$ R *. dfm} TKovalenko_Form1.Kovalenko_Button1Click (Sender: xRe '; _StringGrid1.Cells [1,0]: =' StrToFloat (Kovalenko_Edit1.Text); [2]: = StrToFloat (Kovalenko_Edit2.text); [3]: = StrToFloat (Kovalenko_Edit3.text); [4]: ​​= StrToFloat (Kovalenko_Edit4.text); [5]: = StrToFloat ( Kovalenko_Edit5.text); [6]: = StrToFloat (Kovalenko_Edit6.text); [7]: = StrToFloat (Kovalenko_Edit7.text);: = 6;
: dp: = 10000; dq: = 10000; [1]: = a [1]; c [1]: = b [1];: = a [2]; q: = a [3]; (abs (dp)> e) and (abs (dq)> e) do [2]: = a [2]-p * b [1]; i: = 3 to n +1 do [i]: = a [i]-p * b [i-1]-q * b [i-2]; [2]: = b [2]-p * c [1]; i: = 3 to n-1 q: = q + dq;; (p * p/4)-q> 0 then [1]: =-p/2 + sqrt (p * p/4-q); xIm [1]: = 0; [ 2]: = -p/2-sqrt (p * p/4-q); xIm [2]: = 0; [1]: = sqrt (abs (p * p/4-q)); xRe [1 ]: =-p/2; [2]: =-sqrt (abs (p * p/4-q)); xRe [2]: =-p/2;; _StringGrid1.Cells [0, Kovalenko_StringGrid1.RowCount-
1]: = FloatToStrF (xRe [1], ffGeneral, 3,3); _StringGrid1.Cells [1, Kovalenko_StringGrid1.RowCount-
ToStrF (xRe [2], ffGeneral, 3,3);
then [1]: = 1; i: = 2 to n-1 do [i]: = b [i];: = n-2; 1;;.
1.3 Блок-схема
В
В
В
В
1.4 Результати
В
Рисунок 1
Рівняння: X