Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Курсовые проекты » Прямий метод обертання вікового визначника

Реферат Прямий метод обертання вікового визначника





egin

// Якщо нічого не допомогло

flag: = false;

Break;

end;

// Обнулення всіх матриць

Zero (M); Zero (Mob); Zero (bac);

// Побудова матриць М

for j: = 0 to Length (a [i]) -1 do

begin

Mob [j, j]: = 1;

Mob [i, j]: = a [i +1, j];

M [j, j]: = 1;

M [i, j]: =-Mob [i, j]/a [i +1, i];

if i = j then M [i, j]: = 1/a [i +1, i];

end;

// Множення матриці А на М

Multiple (a, M, bac);// A * M

Multiple (Mob, bac, a);// M ^ (-1) * (A * M)

END;

// Обробка випадку 2.2, якщо треба

if not flag then

begin

M: = nil;

Mob: = nil;

// Знаходимо матрицю С і виводимо її коефіцієнти

SetLength (bac, 1, length (a)-i-1);

for j: = i +1 to length (a) -1 do bac [0, j-i-1]: = a [i, j];// Матриця C

Result: = '(' + FloatToStrF (bac [0,0], ffFixed, 10,3);

for i: = 1 to Length (bac) -1 do

Result: = Result + ',' + FloatToStrF (bac [0, i], ffFixed, 10,3);

Result: = Result + '),';

// "Урізуємо" матрицю А до стану B, см. 2.2 пункт алгоритму

SetLength (a, i +1, i +1);

// Викликаємо рекурсивно процедуру

Result: = Result + FindDet (a);

end

else begin

Result: = '(' + FloatToStrF (a [0,0], ffFixed, 10,3);

for i: = 1 to Length (a) -1 do

Result: = Result + ',' + FloatToStrF (a [0, i], ffFixed, 10,3);

Result: = Result + ')';

end;

bac: = nil;

end;

procedure TForm1.bbPlusClick (Sender: TObject);

begin

sgInData.ColCount: = sgInData.ColCount +1;

sgInData.RowCount: = sgInData.RowCount +1;

if sgInData.ColCount = 11 then ShowMessage ('Attention! Отримані результати мають малу точність');

end;

procedure TForm1.bbMinusClick (Sender: TObject);

begin

if sgInData.ColCount <3 then Exit;

sgInData.ColCount: = sgInData.ColCount-1;

sgInData.RowCount: = sgInData.RowCount-1;

end;

procedure TForm1.bbOpenClick (Sender: TObject);

Var k: real;

f: textfile;

a, i, j: integer;

begin

OpenDialog1.Filter: = 'Всі файли (*. *) | *. * | Файли. Txt (*. Txt) | *. TXT ';

OpenDialog1.Title: = 'Вибір файлу для цієї проги ';

OpenDialog1.FilterIndex: = 2;

if OpenDialog1.Execute then

begin

AssignFile (f, OpenDialog1.FileName);

Reset (f);

end

else Exit;

ReadLn (f, a);

sgInData.ColCount: = a;

sgIndata.RowCount: = a;

for i: = 0 to a-1 do

begin

for j: = 0 to a-1 do

begin

Read (f, k);

sgIndata.Cells [j, i]: = FloattoStr (k);

end;

ReadLn (f);

end;

CloseFile (f);

end;

procedure TForm1.bbFindClick (Sender: TObject);

Var a: matrix;

i, j: integer;

begin

try

SetLength (a, sgInData.ColCount, sgInData.RowCount);

for i: = 0 to sgInData.RowCount-1 do

for j: = 0 to sgInData.RowCount-1 do a [i, j]: = StrToFloat (sgInData.Cells [j, i]);

except

begin

a: = nil;

ShowMessage ('STOP! Неправильний введення, перевірте вхідні дані ');

Exit;

end;

end;

OutData.Clear;

OutData.Lines.Add ('Коефіцієнти характеристичного рівняння ');

OutData.Lines.Add (FindDet (a));

a: = nil;

end;

procedure TForm1.Multiple (a, b: Matrix; var rez: Matrix);

var i, k, j: word;

Begin

for i: = 0 to Length (a [1]) -1 do

for k: = 0 to Length (a [1]) -1 do

begin

// Оновлення зайнятих матриць

rez [i, k]: = 0;

for j: = 0 to Length (a [1]) -1 do rez [i, k]: = rez [i, k] + a [i, j] * b [j, k];

end;

end;

function TForm1.Remove (var rez: Matrix; i: integer): boolean;

Var j, k: integer;

E, bac: Matrix;

begin

Result: = false;

for k: = 0 to i-1 do// Шукаємо ненульовий елемент ліворуч

if rez [i +1, k] <> 0 then

begin

Result: = true;

Break;

end;

if not Result then Exit;

SetLength (E, Length (rez [1]), Length (rez [1]));

SetLength (bac, Length (rez [1]), Length (rez [1]));

for j: = 0 to Length (rez [1]) -1 do E [j, j]: = 1;

for j: = 0 to Length (rez [1]) -1 do

begin

// Міняємо два рядки місцями в матриці E

E [i, j]: =-E [i, j]-E [k, j];

E [k, j]: =-E [i, j]-E [k, j];

E [i, j]: =-E [i, j]-E [k, j];

end;

Multiple (rez, E, bac);// A * M

Multiple (E, bac, rez);// M ^ ...


Назад | сторінка 3 з 4 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: Creation of control system by a personnel how to begin with a zero
  • Реферат на тему: The American Flag
  • Реферат на тему: Воден в шарувато матрицю
  • Реферат на тему: Procedure of preparation business-plan
  • Реферат на тему: Групи матриць