Приложение
program Project1;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2};
{$R *.RES}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Application.Run;
end.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Grids, OleServer, Access2000;
type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
Label1: TLabel;
Button2: TButton;
GroupBox1: TGroupBox;
StringGrid1: TStringGrid;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Edit1Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
i,j,x: integer;
implementation
uses Unit2;
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
x:=strtoint(edit1.Text);
stringgrid1.ColCount:=x+1;
stringgrid1.Rowcount:=x+1;
stringgrid1.Refresh;
for i:=1 to x do
begin
stringgrid1.cells[0,i]:='S'+inttostr(i);
stringgrid1.cells[i,0]:='S'+inttostr(i);
stringgrid1.cells[i,i]:='*****';
end;
for i:=1 to x do
for j:=1 to x do
if i<>j
then stringgrid1.cells[i,j]:=inttostr(0);
end;
procedure TForm1.Button2Click(Sender: TObject);
var
formul:string;
begin
form1.visible:=false;
form2.visible:=true;
for i:=1 to x do
begin
formul:='dP'+inttostr(i)+'/dT=';
for j:=1 to x do
begin
if stringgrid1.cells[j,i]='1'
then formul:=formul+'-'+'λ'+inttostr(i)+inttostr(j)+'P'+inttostr(i);
if stringgrid1.cells[i,j]='1'
then formul:=formul+'+'+'λ'+inttostr(j)+inttostr(i)+'P'+inttostr(j);
end;
if formul<>'dP'+inttostr(i)+'/dT='
then form2.ListBox1.Items.Append(formul);
end;
end;
procedure TForm1.Edit1Change(Sender: TObject);
var
q:string;
begin
x:=0;
q:=edit1.Text;
for i:=1 to 100 do
if q=inttostr(i)
then
begin
x:=1;
break;
end;
if x<>1
then form1.Edit1.Text:='0';
end;
end.
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls;
type
TForm2 = class(TForm)
ListBox1: TListBox;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
uses Unit1;
{$R *.DFM}
procedure TForm2.Button1Click(Sender: TObject);
begin
form1.close;
form2.close;
end;
procedure TForm2.Button2Click(Sender: TObject);
begin
form2.ListBox1.Items.Clear;
form2.visible:=false;
form1.visible:=true;
end;
end.
Руководство пользователя
Программа, которая была разработана в ходе выполнения курсовой работы, позволяет с помощью метода Крамера и с помощью расширенной матрицы решить систему линейных уравнений.
Минимальные системные требования для работы программы:
- OS MS-DOS или Windows
- 5 МБ на жестком диске
- 8 МБ оперативной памяти
Для запуска программы Kramer необходимо запустить находящуюся на дискете программу Kramer.exe.
В ответ на запрос программы: «"Vvedite koefisienti pri neizvestnih x1,x2,x3 v 1-om,2-om,3-em yravneniax"» необходимо ввести матрицу коэффициентов при неизвестных. Числа вводятся через пробел или Enter. Для ввода десятичных чисел целая часть отделяется от дробной точкой. После ввода всех девяти чисел (в случае ввода их через пробел) для дальнейшей работы программы необходимо нажать клавишу Enter. В ответ на запрос программы: "Vvedite cvobodnii chleni v 1-om,2-om,3-em yravneniax"» необходимо ввести матрицу-столбец свободных членов. После ввода всех 3 чисел (в случае ввода их через пробел) для дальнейшей работы программы необходимо нажать клавишу Enter. Полученное решение системы уравнений методом Крамера включает в себя систему линейных уравнений, расширенную матрицу, результаты нахождения определителя матриц и конечные решения.
Заключение
В представленной работе рассматривается метод Крамера решения квадратных систем уравнений со многими неизвестными. В основе этого метода лежат элементарные преобразования, осуществляемые над коэффициентами системы, записанными в специальные таблицы – определители и матрицы. В работе, нами был программно реализован метод Крамера для решения системы линейных алгебраических уравнений. Мы использовали необходимое условие существования решения, т.е. не равенство нулю главного определителя системы.Отличительная черта этого метода заключается в неоднократном вычислении определителя матрицы. С вычислительной точки зрения это трудоемкая операция с ростом количества элементов. В работе была рассмотрена система 3-го порядка, а определители вычислялись непосредственно.
Однако это не снижает ценность работы, так как переход к решению СЛАУ с неизвестным количеством уравнений осуществляется изменением метода, вычисляющий определитель матрицы.
