- •1. Решение нелинейного уравнения
- •1.1. Формулировка задания
- •1.2. Алгоритм
- •1.3. Графическое отделение корней в Excel
- •1.4. Схема алгоритма
- •1.5. Текст программы
- •2.3. Схема алгоритма
- •2.4. Текст программы
- •3.3. Схема алгоритма
- •3.4. Текст программы
- •3.5. Результаты работы программы
- •4. Проверка работы программ
- •Заключение
- •Литература
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 "Вычисление корней"
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 "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 процедура печати матрицы
FOR ii = 1 TO n
FOR jj = 1 TO n
PRINT USING "###"; a(ii, jj);
NEXT jj
PRINT USING "#####"; b(ii);
NEXT ii
END SUB