Найти решение системы уравнений - QBasic (27218)
Формулировка задачи:
Дана система трех линейных уравнений
a11x+a12y+a13z=b1
a21x+a22y+a23z=b2
a31x+a32y+a33z=b3
Найти единственное решение этой системы,
если таковое существует
Решение методом Крамера
Решение задачи: «Найти решение системы уравнений»
textual
Листинг программы
REM Перед красотой этого голубоглазого кода REM не устоит терминатор серии Т 2016 REM REM SYSTEM REM A1*X+A2*Y+A3*Z=A4 REM B1*X+B2*Y+B3*Z=B4 REM C1*X+C2*Y+C3*Z=C4 DECLARE SUB LETT (b!(), a!(), k!) DECLARE FUNCTION DET3 (a!()) DIM a(3, 4) DIM b(3, 3) CLS PRINT "4 Koef UR 1 = ?" INPUT a(1, 1), a(1, 2), a(1, 3), a(1, 4) PRINT "4 Koef UR 2 = ?" INPUT a(2, 1), a(2, 2), a(2, 3), a(2, 4) PRINT "4 Koef UR 3 = ?" INPUT a(3, 1), a(3, 2), a(3, 3), a(3, 4) CALL LETT(b(), a(), 0) JH = DET3(b()) IF JH = 0 THEN PRINT "NO": END CALL LETT(b(), a(), 1) Jx = DET3(b()) CALL LETT(b(), a(), 2) Jy = DET3(b()) CALL LETT(b(), a(), 3) Jz = DET3(b()) X = Jx / JH Y = Jy / JH Z = Jz / JH PRINT PRINT " X = "; X PRINT " Y = "; Y PRINT " Z = "; Z END FUNCTION DET3 (b()) D = D + b(1, 1) * b(2, 2) * b(3, 3) D = D + b(1, 3) * b(2, 1) * b(3, 2) D = D + b(3, 1) * b(1, 2) * b(2, 3) D = D - b(1, 3) * b(2, 2) * b(3, 1) D = D - b(1, 1) * b(2, 3) * b(3, 2) D = D - b(1, 2) * b(2, 1) * b(3, 3) DET3 = D END FUNCTION SUB LETT (b(), a(), k) FOR i = 1 TO 3 FOR j = 1 TO 3 IF j = k AND k > 0 THEN b(i, j) = a(i, 4) ELSE b(i, j) = a(i, j) END IF NEXT j, i END SUB
Объяснение кода листинга программы
- В начале кода объявляются переменные и функции, а также задаются размеры массивов.
- Пользователю предлагается ввести значения коэффициентов системы уравнений.
- Вызывается функция LETT, которая заполняет массив b значениями из массива a, исключая нулевой элемент.
- Вычисляется определитель матрицы b размером 3x3 с помощью функции DET3.
- Если определитель равен нулю, выводится сообщение
NO
, иначе вычисления продолжаются. - Вызывается функция LETT с параметром k=1, чтобы заполнить массив b значениями для первой переменной.
- Вычисляется определитель матрицы b размером 3x3 с помощью функции DET3.
- Вызывается функция LETT с параметром k=2, чтобы заполнить массив b значениями для второй переменной.
- Вычисляется определитель матрицы b размером 3x3 с помощью функции DET3.
- Вызывается функция LETT с параметром k=3, чтобы заполнить массив b значениями для третьей переменной.
- Вычисляется определитель матрицы b размером 3x3 с помощью функции DET3.
- Вычисляется значение X, Y и Z как частное определителя на определитель.
- Выводятся значения X, Y и Z на экран.
- В функции DET3 вычисляется определитель матрицы b размером 3x3 путем последовательного умножения разности произведений элементов главной диагонали и побочных диагоналей.
- В подпрограмме LETT происходит заполнение массива b значениями из массива a, исключая нулевой элемент, путем обхода матрицы a в порядке от 1 до 3 по строкам и столбцам.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д