Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Otchyot_Lemeshko.docx
Скачиваний:
6
Добавлен:
21.09.2019
Размер:
275.26 Кб
Скачать

3.3. Схема алгоритма

4

i=k,n,1

1

10

2

5

ak-1,k-1<0

11

6

q=ai,k-1 / ak-1,k-1

3

k = 2,n,1

7

bi=bi-bk-1*q

8

j = k-1,n,1

9

ai,j=ai,j-ak-1,j*q

Рис. 3.1 Схема алгоритма программы

12

18

xn=bn/an

xi=(bi-S)/aii

13

19

14

i =n-1,1,-1

15

S=0

20

sum=a11*x1+a12*x2+a13*x3

16

21

i =i+1,n,1

17

S=S+aij*xj

Рис. 3.1 Схема алгоритма программы. Продолжение

ii = 1,n,1

jj = 1,n,1

Рис. 3.1 Схема алгоритма процедуры ABPrint

3.4. Текст программы

DECLARE SUB ABPrint (a(), b(), n)

REM Программа выполняет решение СЛАУ квадратного типа методом Гаусса

CLS

PRINT : PRINT :

PRINT "Программа для решения СЛАУ квадратного типа методом Гаусса"

PRINT : PRINT

PRINT " Л е м е ш к о А л е к с а н д р П е т р о в и ч ЭНФ - I-1"

REM ввод данных

DATA 3

READ n

DATA 9, 3, 4, 8

READ a(1, 1), a(1, 2), a(1, 3), b(1)

DATA 1,8,2, 34

READ a(2, 1), a(2, 2), a(2, 3), b(2)

DATA 6,4,12, 30

READ a(3, 1), a(3, 2), a(3, 3), b(3)

REM печать матрицы

PRINT : PRINT : PRINT "Cистема:"

CALL ABPrint(a(), b(), n)

REM ожидание нажатия любой клавиши

PRINT INPUT$(1)

CLS

REM обнуление столбцов

PRINT : PRINT "Обнуление столбцов"

FOR k = 2 TO n

FOR i = k TO n

REM проверка 0

IF a(k - 1, k - 1) < .000001 THEN

PRINT " 0!!! "; k - 1; " строкa"; a(k - 1, k - 1)

END

END IF

REM вычисление множителя

q = a(i, k - 1) / a(k - 1, k - 1)

REM пересчёт свободного члена

b(i) = b(i) - b(k - 1) * q

REM пересчёт коэффициентов в строке i

FOR j = k - 1 TO n

a(i, j) = a(i, j) - a(k - 1, j) * q

NEXT j

NEXT i

REM печать промежуточной матрицы

CALL ABPrint(a(), b(), n)

NEXT k

REM *****************ОБРАТНЫЙ ХОД ********************

PRINT

PRINT "Вычисление корней"

REM последний корень

x(n) = b(n) / a(n, n)

PRINT "x("; n; ")="; USING "##.##"; x(n)

REM обратный цикл для вычисления корней

FOR i = n - 1 TO 1 STEP -1

REM вычислить S

S = 0

FOR j = i + 1 TO n

S = S + a(i, j) * x(j)

NEXT j

x(i) = (b(i) - S) / a(i, i)

PRINT

PRINT "x("; i; ")="; USING "##.##"; x(i)

NEXT i

PRINT : PRINT "Проверка: подстановка корней в 1-е уравнение "

sum = a(1, 1) * x(1) + a(1, 2) * x(2) + a(1, 3) * x(3)

PRINT a(1, 1); "*"; USING "##.##"; x(1);

PRINT " + "; a(1, 2); "*"; USING "##.##"; x(2);

PRINT " + "; a(1, 3); " *"; USING "##.##"; x(3);

PRINT " = "; sum

END

SUB ABPrint (a(), b(), n)

REM процедура печати матрицы

PRINT

FOR ii = 1 TO n

FOR jj = 1 TO n

PRINT USING "###"; a(ii, jj);

NEXT jj

PRINT USING "#####"; b(ii);

PRINT

NEXT ii

END SUB

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]