Решение систем линейных уравнений методом крамера
Вид материала | Решение |
- Контрольная работа по курсу «Линейной алгебры и математического программирования», 99.84kb.
- Вопросы к экзамену по курсу «Высшая математика часть, 14.58kb.
- Определители 2-го и 3-го порядков: определения и применение к решению систем линейных, 42kb.
- Неравенств и, если «да», то найдите общее решение и частное решение двумя способами:, 11.47kb.
- Решение линейных уравнений Цель урока, 126.51kb.
- Программа решения системы линейных уравнений по методу Гаусса 7 2 Программа решения, 230.48kb.
- Решение систем линейных алгебраических уравнений методом прогонки, 112.31kb.
- Элемен ты линейной и векторной алгебры, 26.56kb.
- Й в виде прямоугольной таблицы элементов кольца или поля, которая представляет собой, 71.89kb.
- 1. Матрица и расширенная матрица системы. Элементарные преобразования матриц. Решение, 8.16kb.
РЕШЕНИЕ СИСТЕМ ЛИНЕЙНЫХ УРАВНЕНИЙ МЕТОДОМ КРАМЕРА.
Пусть дана система:
;
Метод решения системы можно определить формулами:
; ; ;
Следовательно, весь упор в программном средстве должен быть сделан на нахождение определителя третьего порядка. В основе программы лежит правило Сарриуса:
Листинг рабочей программы:
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.
ОКНО ПРОГРАММЫ:
ТЕСТОВЫЙ ПРИМЕР:
Чтобы запустить программу и проверить её работоспособность, воздействуйте на внедрённый объект.