Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архив1 / docx55 / Рамки и курсовая.docx
Скачиваний:
35
Добавлен:
01.08.2013
Размер:
89.9 Кб
Скачать

3 Программная документация

3.1 требование к программе

Системные требования: Процессор: Intel Pentium 233 МГц и выше. Операционная система: Microsoft Windows XP, Windows 2000, Windows 98. Оперативная память: 64 Мбайт (рекомендуется 128 Мбайт). Пространство на жестком диске: 124-450 Мбайт. Монитор: SVGA или выше

3.1.1 Вызов и загрузка

Скачиваем программу slau.exe. на рабочий стол или в другую любую папку и запускаем.

3.1.2 Входные данные

Размерность слау, уравнения слау

3.1.3 Выходные данные

коэффициенты x и пошаговое решение Слау

3.2 тестирование программы

Для тестирования программы разработчик решил несколько СЛАУ вручную, а потом ввел в программу такие же коэффициенты как и для ручного просчета.

4 Эксплуатационная документация

4.1 Требования к техническим средствам

Для эксплуатации программы «Решение СЛАУ методом Гаусса» необходим компьютер конфигурации не ниже следующей: процессор Pentium I – 300 МГц или совместимый с ним, RAM 64 MB, свободное место на жестком диске не менее 50 MB, видеоадаптер, поддерживающий режим VGA 800х600х16 цветов, двухкнопочная мышь. Операционная система WINDOWS NT, WINDOWS 2000, WINDOWS XP, WINDOWS 2003

процессор Pentium II – 500 МГц или совместимый с ним, RAM 128 МВ, свободное место на жестком диске около 100 MB для пересылки больших файлов, видеоадаптер, поддерживающий режим SVGA 1024 х 768 х 16b цветов, двухкнопочная мышь.

4.2 Описание задачи

Целью работы является написание программного продукта для решения систем линейных уравнений. Метод Гаусса. Программный продукт должен выводить на экран по шаговое решение и давать возможность решать системы линейных уравнений.

5 Заключение

В данной курсовой работе был реализован метод простой итерации для решения систем линейных алгебраических уравнений в виде двух программ, каждая из которых использует свой собственный способ перехода от системы вида F(x)=x к системе вида x=(x).

Вообще говоря, метод простой итерации не отличается повышенной сходимостью (может вообще не сойтись), но если он сходится, то этот метод обычно имеет высокую точность счета и достаточно высокую скорость сходимости. Следует отметить, что все вышеперечисленное зависит от самой исходной системы Ax=b и способа перехода к системе вида x=(x). Если метод не сходится, значит не соблюдаются условия сходимости метода или используется неудачный переход к системе x=(x).

Список использованной литературы

1.         Васильев Ф.П. Численные методы решения экстремальных задач. [Текст] / Ф.П. Васильев - М.: Наука, 2010. C.415.

2.         Калиткин Н.Н. Численные методы. [Электронный ресурс] / Н.Н. Калиткин. - М.: Питер, 2009. С.504.

3.         Нил Дж. Рубенкинг Язык программирования Delphi для "чайников". Введение в Borland Delphi 2006 = Delphi for Dummies. — М.: «Диалектика», 2009. — С. 336..

4.         Метод Гаусса [Электронный ресурс] - Режим доступа: http://www.wikipedia.org/wiki/Метод_Гаусса.

5.         Архангельский А. Я. Программирование в Delphi. Издание 2-е, переработанное и дополненное. - М.: ЗОА «Издательство БИНОМ», 2010г.

Приложение А

unit slau;

interface

uses

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

Dialogs, StdCtrls, Grids, ExtCtrls;

type

real=extended;

TForm1 = class(TForm)

razmer: TLabeledEdit;

eps: TLabeledEdit;

StringGrid1: TStringGrid;

StringGrid2: TStringGrid;

Memo1: TMemo;

Button1: TButton;

Button2: TButton;

Button3: TButton;

pribl: TLabeledEdit;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

n:integer;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

var i,j,i2,j2:integer;

begin

try

n:=abs(strtoint(razmer.Text));

if n>0 then

begin

WITH StringGrid1 do

begin

colcount:=n+1;

rowcount:=n+1;

for i:=1 to ColCount do

for j:=1 to RowCount do

if i=j then cells[j,i]:='1' else cells[j,i]:='0';

visible:=true;

end;

end

else close;

except exit;

end;

form1.StringGrid2.Visible:=true;

with stringgrid2 do

begin

rowcount:=n+1;

colcount:=0;

for i2:=0 to colcount do

for j2:=1 to Rowcount do

cells [i2,j2]:='1'; end;

button1.Enabled:=false;

eps.Enabled:=true;

razmer.Enabled:=false;

button2.Enabled:=true;

pribl.Enabled:=true;

end;

procedure TForm1.Button2Click(Sender: TObject);

var m:array of array of real;

b,x,x0:array of real;

i,j,k:integer;

s,eps1:real;

q:boolean;

begin

eps1:=strtofloat(eps.Text);

SetLength(m,n,n);

SetLength(b,n);

SetLength(x,n);

SetLength(x0,n);

for i:=1 to n do

for j:=1 to n do

m[i-1,j-1]:=StrToFloat(StringGrid1.Cells[i,j]);

for i:=1 to n do b[i-1]:=StrToFloat(StringGrid2.Cells[0,i]);

for i:=1 to n do x0[i-1]:=StrToFloat(pribl.Text);

j:=0; q:=False;

try

repeat

for i:=1 to n do begin

s:=0;

for k:=1 to n do if i<>k then s:=s+m[k-1,i-1]*x0[k-1];

x[i-1]:=(b[i-1]-s)/m[i-1,i-1]; end;

for i:=1 to n do

begin

if abs(x[i-1]-x0[i-1])>eps1 then q:=False else q:=True;

x0[i-1]:=x[i-1]; end;

inc(j);

until q;

except showmessage('Ошибка вычислений!');

end;

memo1.Clear;

memo1.Lines.Add('Итераций: '+inttostr(j));

if not q then memo1.Lines.Add('Заданная точность не достигнута');

for i:=1 to n do begin memo1.Lines.add('x['+inttostr(i)+'] = '+floattostrf(x0[i-1],ffFixed,12,6));

end;

finalize(m); finalize(b); finalize(x); finalize(x0);

button2.Enabled:=false;

end;

procedure TForm1.Button3Click(Sender: TObject);

begin

Memo1.Clear;

StringGrid1.Visible:=false;

StringGrid2.Visible:=false;

razmer.Text:='';

eps.Text:='';

pribl.Text:='';

razmer.Enabled:=true;

eps.Enabled:=false;

Button1.Enabled:=true;

Button2.Enabled:=false;

pribl.Enabled:=false;

end;

end.

Соседние файлы в папке docx55