PDF / SLNE
.pdf1: 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: