Решение систем линейных уравнений методом крамера

Вид материалаРешение
Подобный материал:
РЕШЕНИЕ СИСТЕМ ЛИНЕЙНЫХ УРАВНЕНИЙ МЕТОДОМ КРАМЕРА.


Пусть дана система:

;


Метод решения системы можно определить формулами:

; ; ;

Следовательно, весь упор в программном средстве должен быть сделан на нахождение определителя третьего порядка. В основе программы лежит правило Сарриуса:




Листинг рабочей программы:

program Project2;

uses

windows,messages,classes,forms,controls,dialogs,

stdctrls,extctrls,grids,sysutils,variants,graphics;


{$R *.res}

type a=class

f:tform;

p:tpanel;

gr:tstringgrid;

b:tbutton;

l:tlabel;

constructor create;

procedure a1(Sender: TObject; ACol, ARow: Integer;

Rect: TRect; State: TGridDrawState);

procedure opr(sender:tobject);

end;

constructor a.create;

begin

inherited create;

application.CreateForm(tform,f);

f.BorderStyle:=bssingle;

f.BorderIcons:=[bisystemmenu,biminimize];

f.Position:=poscreencenter;

f.Width:=500;

f.Height:=450;

f.Color:=$450734;

p:=tpanel.Create(f);

p.Parent:=f;

p.Left:=50;

p.Top:=50;

p.Width:=400;

p.Height:=300;

gr:=tstringgrid.Create(f);

gr.Parent:=p;

gr.Align:=alclient;

gr.ColCount:=4;

gr.RowCount:=4;

gr.DefaultColWidth:=97;

gr.DefaultRowHeight:=72;

gr.FixedColor:=clgreen;

gr.OnDrawCell:=a1;

gr.Options:=[goediting,gohorzline,govertline,gofixedhorzline,gofixedvertline];

b:=tbutton.Create(f);

b.Parent:=f;

b.Left:=50;

b.Top:=360;

b.Caption:='считать';

b.OnClick:=opr;

l:=tlabel.Create(f);

l.Parent:=f;

l.left:=200;

l.Top:=360;

l.Font.Color:=clred;

l.Font.Size:=14;

l.Caption:='результат:';

showmessage('перед расчётом заполниьте числами все клетки');

showmessage('иначе будет сгенерирована системная ошибка');

application.Run;

end;

procedure a.a1(Sender: TObject; ACol: Integer; ARow: Integer; Rect: TRect; State: TGridDrawState);

begin

gr.Font.Color:=clred;

gr.Font.Size:=35;

if (acol>0)and (acol<=3)and (arow=0) then

gr.canvas.TextOut(rect.Left+40,rect.Top,inttostr(acol));

if (acol=0)and (arow>0)and (arow<=3) then

gr.canvas.TextOut(rect.Left+40,rect.Top,inttostr(arow));

end;

procedure a.opr(sender: TObject);

var s,a,b,c:real;n:integer;

begin

val(gr.Cells[1,1],a,n);val(gr.Cells[2,2],b,n);val(gr.Cells[3,3],c,n);

s:=a*b*c;

val(gr.Cells[1,2],a,n);val(gr.Cells[2,3],b,n);val(gr.Cells[3,1],c,n);

s:=s+a*b*c;

val(gr.Cells[2,1],a,n);val(gr.Cells[3,2],b,n);val(gr.Cells[1,3],c,n);

s:=s+a*b*c;

val(gr.Cells[3,1],a,n);val(gr.Cells[2,2],b,n);val(gr.cells[1,3],c,n);

s:=s-a*b*c;

val(gr.Cells[2,1],a,n);val(gr.Cells[1,2],b,n);val(gr.Cells[3,3],c,n);

s:=s-a*b*c;

val(gr.Cells[1,1],a,n);val(gr.Cells[2,3],b,n);val(gr.Cells[3,2],c,n);

s:=s-a*b*c;

l.Caption:='результат:'+floattostr(s);

end;

var a1:a;


begin

a1:=a.create;

end.


ОКНО ПРОГРАММЫ:




ТЕСТОВЫЙ ПРИМЕР:





Чтобы запустить программу и проверить её работоспособность, воздействуйте на внедрённый объект.