Слау методом гауса для численных методов

Автор работы: Пользователь скрыл имя, 03 Декабря 2012 в 18:44, курсовая работа

Описание работы

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

Содержание работы

Введение
1. Постановка задачи
1.1 Цель разработки
1.2 Область применения
1.3 Актуальность разработки ПП
1.4 Входные данные
1.5 Выходные данные
1.6 Схема информационных потоков
2. Решение систем линейных алгебраических уравнений методом гаусса
2.1 Основные понятия
2.2 Метод Гаусса. Исключение неизвестных
2.3 Однородная СЛАУ
3. Алгоритм решения задачи
3.1 Водные данные
3.3 Входные данные
3.4 Алгоритм
4. Проектирование интерфейса
5. Описание программной реализации
5.1 Функционально-логическая схема программы
5.2 Описание процедур и функций
5.3 Описание структур и форматов
6. Комплект поставки и порядок установки
7. Тестирование программы
Выводы
Список использованных источников
Приложение А
Приложение Б

Файлы: 1 файл

Курсовая и рамки.doc.docx

— 593.66 Кб (Скачать файл)

end;

procedure Spravka;

var n: char; {номер страницы}

begin

menuSpravki;

gotoxy (1,1);

LoadFile ('A: Spravka1. txt');

repeat

n: =readkey; until n in ['1',#27] ;

case n of

'1': begin

end;

end;

end;

procedure Teoria;

var n: char; {номер страницы}

begin

menuTeorii;

gotoxy (1,1);

writeln ('страница 1');

LoadFile ('A: Text1. txt');

repeat

repeat n: =readkey; until n in ['0'. '6',#27] ;

case n of

'1': begin

menuTeorii;

gotoxy (1,1);

writeln ('страница 1');

LoadFile ('A: Text1. txt');

end;

'2': begin

menuTeorii;

gotoxy (1,1);

writeln ('страница 2');

LoadFile ('A: Text2. txt');

end;

'3': begin

Men

uTeorii;

gotoxy (1,1);

writeln ('страница 3');

LoadFile ('A: Text3. txt');

end;

'4': begin

menuTeorii;

gotoxy (1,1);

writeln ('страница 4');

LoadFile ('A: Text4. txt');

end;

'5': begin

menuTeorii;

gotoxy (1,1);

writeln ('страница 5');

LoadFile ('A: Text5. txt');

end;

'6': begin

menuTeorii;

gotoxy (1,1);

writeln ('страница 6');

LoadFile ('A: Text6. txt');

end;

'0': begin

Spravka;

gotoxy (1,1);

LoadFile ('A: Spravka1. txt');

end;

end;

until n=#27;

end;

procedure grafic (a1,b1,c1,a2,b2,c2,xc,yc: real);

var

minx,maxx,miny,maxy: real;

mx,my: real;

x1,y1,x2,y2: integer;

x0,y0: integer;

grDriver: Integer;

grMode: Integer;

ErrCode: Integer;

begin

grDriver: = Detect;

InitGraph (grDriver, grMode,'c: \bps\bin\egavga. bgi');

ErrCode: = GraphResult;

if ErrCode = grOk then

begin

minx: =xc-2*xc;

maxx: =xc+2*xc;

miny: =yc-2*yc;

maxy: =yc+2*yc;

mx: =getmaxx;

mx: =mx/ (maxx-minx);

my: =getmaxy/ (maxy-miny);

y0: =round (abs (xc) *mx);

x0: =round (abs (yc) *my);

setcolor (white);

line (x0,0,x0,getmaxy);

line (0,y0,getmaxx,y0);

setcolor (red);

x1: =x0+round (minx*mx);

y1: =y0-round ( (c1-a1*minx) /b1*my);

x2: =x0+round (maxx*mx);

y2: =y0-round ( (c1-a1*maxx) /b1*my);

line (x1,y1,x2,y2);

setcolor (yellow);

x1: =x0+round (minx*mx);

y1: =y0-round ( (c2-a2*minx) /b2*my);

x2: =x0+round (maxx*mx);

y2: =y0-round ( (c2-a2*maxx) /b2*my);

line (x1,y1,x2,y2);

Readkey;

CloseGraph;

end

else

Writeln ('Ошибка работы с графикой: ', GraphErrorMsg (ErrCode));

end;

{$S-}

procedure vvod (var x: real; var code: integer);

var s: string;

begin

readln (s);

val (s,x,code);

if code<>0 then

writeln ('Ошибка, повторите ввод');

end;

procedure vvod1 (var n: integer);

var s: string;

code: integer;

begin

repeat

write ('Введите количество элементов матрицы');

readln (s);

val (s,n,code);

if (code<>0) or (N<0) or (N>Nmax) then

writeln ('Ввод не верный. Повторите ввод... ');

until (N>0) and (N<=Nmax) and (code=0);

end;

procedure Rewenie;

var

x: array [1. Nmax] of real;

A: array [1. Nmax,

1. Nmax] of real;

B: array [1. Nmax] of real;

N, i, ii,j,l,Rez,kol: integer;

k,S: real;

f,f1: text;

code: integer;

c: char;

Name: string;

Begin

assign (f,'otvet. txt');

rewrite (f);

clrscr;

gotoxy (30,12);

writeln ('1-Ввод с клавиатуры');

gotoxy (32,13);

writeln ('2-Ввод с файла');

gotoxy (28,14);

writeln ('3-Выход в основное меню');

repeat c: =readkey; until c in ['1','2','3'] ;

if c='3' then

begin

readkey;

exit;

end;

if c='1' then

begin

vvod1 (n);

writeln ('введите матрицу коэфициентов');

for i: =1 to n do

begin

for j: =1 to N do

repeat

write ('A [', i,',',j,'] =');

vvod (A [i,j],code);

until code=0;

repeat

write ('B [', i,'] =');

vvod (B [i],code);

until code=0;

end;

end

else

begin

writeln ('Задайте имя файла');

readln (Name);

assign (f1,Name);

{$I-}

reset (f);

code: =Ioresult;

if code<>0 then

begin

writeln ('Ошибка. Файл не найден! ');

writeln ('Для выхода в основное меню нажмите любую клавишу. ');

readkey;

exit;

end

else

begin

readln (f1,n);

if Ioresult<>0 then

begin

writeln ('Ошибка чтения из файла! Для выхода в основное меню нажмите любую клавишу. ');

readkey;

exit;

end;

for i: =1 to n do

begin

for j: =1 to N do

begin

read (f1,a [i,j]);

if Ioresult<>0 then

begin

writeln ('Ошибка чтения из файла! Для выхода в основное меню нажмите любую клавишу. ');

readkey;

exit;

end;

end;

read (f1,b [i]);

if Ioresult<>0 then

begin

writeln ('Ошибка чтения из файла! Для выхода в основное меню нажмите любую клавишу. ');

readkey;

exit;

end;

end;

end;

close (f1);

end;

clrscr;

writeln (f,'Исходная матрица: ');

writeln ('Исходная матрица: ');

for i: =1 to N do

begin

for j: =1 to N do

begin

write (A [i,j]: 10: 4);

write (f,A [i,j]: 10: 4);

end;

writeln (' I',B [i]: 10: 4);

writeln (f,' I',B [i]: 10: 4);

end;

for i: =1 to N-1 do begin

for l: =i+1 to N do begin

if a [l, i] =0 then

begin

writeln ('Преобразования матрицы на ', i,'-м шаге выполнить нельзя! ');

writeln ('Диагональный элемент равен 0! ');

writeln (f,'Преобразования матрицы на ', i,'-м шаге выполнить нельзя! ');

writeln (f,'Диагональный элемент равен 0! ');

readkey;

exit;

end;

k: =-A [i, i] /a [l, i] ;

for j: =1 to n do

A [l,j]: =A [l,j] *k+A [i,j] ;

B [l]: =B [l] *k+B [i] ;

end;

writeln;

writeln ('Преобразования матрицы на ', i,'-м шаге');

writeln (f);

writeln (f,'Преобразования матрицы на ', i,'-м шаге');

for ii: =1 to N do

begin

for j: =1 to N do

begin

write (A [ii,j]: 10: 4);

write (f,A [ii,j]: 10: 4);

end;

writeln (' I',B [i]: 10: 4);

writeln (f,' I',B [i]: 10: 4);

end;

readkey;

writeln;

writeln;

writeln (f);

writeln (f);

end;

rez: =1;

for i: =1 to n do

begin

kol: =0;

for j: =1 to N do

if A [i,j] =0 then

kol: =kol+1;

if kol=N then

if B [i] =0 then

begin

Rez: =2;

break;

end

else

begin

Rez: =0;

break;

end;

end;

if rez=1 then

begin

x [N]: =b [n] /a [n,n] ;

for i: =N-1 downto 1 do

begin

S: =0;

for j: =i+1 to N do

S: =S+x [j] *A [i,j] ;

x [i]: = (B [i] -S) /A [i,j] ;

end;

writeln ('Преобразованная матрица');

writeln (f,'Преобразованная матрица');

for i: =1 to N do

begin

for j: =1 to N do

begin

write (A [i,j]: 10: 4);

write (f,A [i,j]: 10: 4);

end;

writeln (' I',B [i]: 10: 4);

writeln (f,' I',B [i]: 10: 4);

end;

writeln ('Вектор ответов');

writeln (f,'Вектор ответов');

for i: =1 to N do

begin

writeln ('x [', i,'] =',x [i]: 10: 4);

writeln (f,'x [', i,'] =',x [i]: 10: 4);

end;

if N=2 then

begin

writeln ('Нажмите любую клавишу для просмотра графика');

readkey;

grafic (a [1,1],a [1,2],b [1],a [2,1],a [2,2],b [2],x [1],x [2]);

end;

end

else

if rez=0 then

begin

writeln ('Решений бесконечное множество');

writeln (f,'Решений бесконечное множество');

end

else

begin

writeln ('Решений НЕТ');

writeln (f,'Решений НЕТ');

end;

readkey;

close (f);

end;

procedure Primer;

var n: char; {номер страницы}

begin

menuPrimera;

gotoxy (1,1);

writeln ('страница 1');

LoadFile ('A: Primer1. txt');

repeat

repeat n: =readkey; until n in ['0'. '4',#27] ;

case n of

'1': begin

menuPrimera;

gotoxy (1,1);

writeln ('страница 1');

LoadFile ('A: Primer1. txt');

end;

'2': begin

menuPrimera;

gotoxy (1,1);

writeln ('страница 2');

LoadFile ('A: Primer2. txt');

end;

'3': begin

menuPrimera;

gotoxy (1,1);

writeln ('страница 3');

LoadFile ('A: Primer3. txt');

end;

'0': begin

Spravka;

gotoxy (1,1);

LoadFile ('A: Spravka1. txt');

end;

'4': begin

menuPrimera;

gotoxy (1,1);

writeln ('страница 4');

LoadFile ('A: Primer4. txt');

end;

end;

until n=#27;

end;

procedure Vuxod;

begin

exit;

end;

Begin

repeat

menu;

repeat ch: =readkey;

until ch in ['1'. '5'] ;

case ch of

'1': Teoria;

'2': Primer;

'3': Rewenie;

'4': Spravka;

'5': Vuxod;

end;

until ch='5';

end.

Для того, чтобы выйти из программы в окне меню нужно нажать цифру "5".


                                           



Информация о работе Слау методом гауса для численных методов