Помощь в написании студенческих работ
Антистрессовый сервис

Программная реализация. 
Разработка программных средств для решения СЛАУ методом прогонки

РефератПомощь в написанииУзнать стоимостьмоей работы

Диагональ e (та что повыше d). Диагональ c (та что пониже d). Установим длины массивов}. Нажатие на «вычислить». Y: array of Real; // результат. If Abs (d)>Abs (c)+abs (e) then k:=k+1; Главная диагональ (d): Procedure btn1Click (Sender: TObject); Lbz. Caption:='Z = ' + floattostr (Y); Lby. Caption:='Y = ' + floattostr (Y); Lbx. Caption:='X = ' + floattostr (Y); Заполним массивы}. Вывод результата… Читать ещё >

Программная реализация. Разработка программных средств для решения СЛАУ методом прогонки (реферат, курсовая, диплом, контрольная)

Блок-схема

Текст программы

unit Unit1;

interface.

uses.

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,.

Dialogs, StdCtrls;

type.

TForm1 = class (TForm).

edtB1: TEdit;

lbl2: TLabel;

edtE1: TEdit;

lbl3: TLabel;

edtD1: TEdit;

edtE2: TEdit;

lbl4: TLabel;

edtB2: TEdit;

lbl5: TLabel;

edtD2: TEdit;

edtC2: TEdit;

lbl6: TLabel;

lbl7: TLabel;

edtD3: TEdit;

lbl8: TLabel;

edtB3: TEdit;

lbl9: TLabel;

edtC3: TEdit;

btn1: TButton;

lbl1: TLabel;

lbx: TLabel;

lby: TLabel;

lbz: TLabel;

procedure btn1Click (Sender: TObject);

private.

{ Private declarations }.

public.

{ Public declarations }.

end;

var.

Form1: TForm1;

implementation.

{$R *.dfm}.

// нажатие на «вычислить» .

procedure TForm1.

btn1Click (Sender: TObject);

const.

n=3; // размерность массивов и матриц.

var.

C, D, E: array of Real; //матрица уравнений.

B: array of Real; // чему равны уравнения (первая часть).

Y: array of Real; // результат.

I, k: Integer; // для циклов, перебора.

ALF, BET: array of Real; // Alpha и Beta для предв. вычислений.

znam: Real;

begin.

{установим длины массивов}.

SetLength (C, n);

SetLength (D, n);

SetLength (E, n);

SetLength (B, n);

SetLength (Y, n);

SetLength (ALF, n);

SetLength (BET, n);

{заполним массивы}.

//главная диагональ (d):

d[0]: =strtofloat (edtD1.text);

d[1]: =strtofloat (edtD2.text);

d[2]: =strtofloat (edtD3.text);

//диагональ c (та что пониже d).

c[0]: =0;

c[1]: =strtofloat (edtC2.text);

c[2]: =strtofloat (edtC3.text);

//диагональ e (та что повыше d).

e[0]: =strtofloat (edtE1.text);

e[1]: =strtofloat (edtE2.text);

e[2]: =0;

//заполняем чему равны наши выражения.

b[0]: =strtofloat (edtB1.text);

b[1]: =strtofloat (edtB2.text);

b[2]: =strtofloat (edtB3.text);

//проверим, можно ли считать этим способом:

k:=0;

for i:=0 to n-1 do.

if Abs (d[i])>Abs (c[i])+abs (e[i]) then k:=k+1;

if k=0 then begin.

ShowMessage ('Данный способ не применим, т.к. условие диагонального преобладания матрицы не выполняется :(');

Exit;

end;

{вычисление вспомогательных величин}.

ALF[0]: = -(E[0]/D[0]);

BET[0]: = B[0]/D[0];

{прямой ход}.

for I:= 1 to n — 1 do.

begin.

znam := d[i] + c[i]*ALF[i-1];

ALF[i]: = -(e[i]/znam);

BET[i]: = (-c[i]*BET[i-1]+b[i])/znam;

end;

{обратный ход, нахождение корней}.

Y[n-1]: =(b[n-1]-c[n-1]*BET[n-2])/(d[n-1]+c[n-1]*ALF[n-2]);

for I:= n — 2 downto 0 do.

Y[i]: =Y[i+1]*ALF[i]+BET[i];

//вывод результата.

lbx.Caption:='X = ' + floattostr (Y[0]);

lby.Caption:='Y = ' + floattostr (Y[1]);

lbz.Caption:='Z = ' + floattostr (Y[2]);

end;

end.

Тестовый пример

В качестве тестового примера возьмем :

Программная реализация. Разработка программных средств для решения СЛАУ методом прогонки.
Программная реализация. Разработка программных средств для решения СЛАУ методом прогонки.
Программная реализация. Разработка программных средств для решения СЛАУ методом прогонки.

При ручном подсчете корни равны: x=-3 y=-7 z=-15.

Результат работы программы.

Рисунок 1. Результат работы программы.

Решение задачи с помощью ЭВМ

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

Результат работы программы (метод прогонки).

Рисунок 2. Результат работы программы (метод прогонки).

Показать весь текст
Заполнить форму текущей работой