Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

PDF / SLNE

.pdf
Скачиваний:
40
Добавлен:
07.01.2014
Размер:
53.48 Кб
Скачать

1: program SLHE;

2:

3: {AS: если найдете нижеуказанные модули, то можете 4: спокойно использовать эту программу }

5:

6: uses crt, matrix, matrixex, inout; 7:

8:var a:TNmatrix;

9:b,x,ax: TNvector;

10:n,ni,mi:integer;

11:er:byte;

12:eps:real;

13:

14:begin

15:WriteLn('-- Решение СЛАУ методом Гаусса --');

16:ReadIntXY(1,2,'Введите размерность системы: ',n);

17:PutString(1,3,'Ввод матрицы коэффициентов');

18:ReadMatr(1,4,'A',n,n,a);

19:PutString(50,3,'Ввод вектора свободных членов');

20:ReadArr(60,5,'b',n,b);

21:Gaussian_Elimination(n,a,b,x,er);

22:case er of

23:0: begin

24:

PutString(1,13,'Решение СЛАУ:');

25:

WriteArr(1,14,'x',n,x);

26:

PutString(35,13,'Проверка (вектор свободных членов):');

27:

MultiplicMatVec(n,n,a,x,ax);

28:

WriteArr(35,14,'b',n,ax);

29:end;

30:

1: PutString(1,13,'Размерность меньше 1.'); {такой ошибки добиться невозможно!}

31:2: PutString(1,13,'Решения нет (система несовместна).');

32:end;

33:ReadLn;

34:

35:WriteLn('-- Решение СЛАУ методом Гаусса-Зейделя --');

36:WriteLn('Чтобы метод сходился, переставьте уравнения так, чтобы в i-ой строке');

37:WriteLn('i-ый элемент был наибольшим по модулю из всех элементов этой строки!');

38:ReadIntXY(1,4,'Введите размерность системы: ',n);

39:PutString(1,5,'Ввод матрицы коэффициентов');

40:ReadMatr(1,6,'A',n,n,a);

41:PutString(50,5,'Ввод вектора свободных членов');

42:ReadArr(60,7,'b',n,b);

43:ReadRealXY(1,15,'Введите точность решения: ',eps);

44:ReadIntXY(1,16,'Введите максимальное число итераций: ',mi);

45:Gauss_Seidel(n,a,b,eps,mi,x,ni,er);

46:case er of

47:0: begin

48:

PutString(1,18,'Решение СЛАУ:');

49:

WriteArr(1,19,'x',n,x);

50:

PutString(35,18,'Проверка (вектор свободных членов):');

51:

MultiplicMatVec(n,n,a,x,ax);

52:

WriteArr(35,19,'b',n,ax);

53:

WriteIntXY(1,24,'Число итераций: ',ni,2);

54:end;

55:1: PutString(1,18,'Число итераций превышено и матрица не диагонально-доминантная.');

56:2: PutString(1,18,'Число итераций превышено.');

57:

3: PutString(1,18,'Размерность меньше 1.'); {такой ошибки добиться невозможно!}

58:4: PutString(1,18,'Точность <= 0.');

59:5: PutString(1,18,'Максимальное число итераций меньше 0.');

60:6: PutString(1,18,'0 на диагонали матрицы коэффициентов.');

61:7: PutString(1,18,'Метод расходится.');

62:end;

63:ReadLn;

64:end.

65:

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