Найти решение системы уравнений - 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

Объяснение кода листинга программы

  1. В начале кода объявляются переменные и функции, а также задаются размеры массивов.
  2. Пользователю предлагается ввести значения коэффициентов системы уравнений.
  3. Вызывается функция LETT, которая заполняет массив b значениями из массива a, исключая нулевой элемент.
  4. Вычисляется определитель матрицы b размером 3x3 с помощью функции DET3.
  5. Если определитель равен нулю, выводится сообщение NO, иначе вычисления продолжаются.
  6. Вызывается функция LETT с параметром k=1, чтобы заполнить массив b значениями для первой переменной.
  7. Вычисляется определитель матрицы b размером 3x3 с помощью функции DET3.
  8. Вызывается функция LETT с параметром k=2, чтобы заполнить массив b значениями для второй переменной.
  9. Вычисляется определитель матрицы b размером 3x3 с помощью функции DET3.
  10. Вызывается функция LETT с параметром k=3, чтобы заполнить массив b значениями для третьей переменной.
  11. Вычисляется определитель матрицы b размером 3x3 с помощью функции DET3.
  12. Вычисляется значение X, Y и Z как частное определителя на определитель.
  13. Выводятся значения X, Y и Z на экран.
  14. В функции DET3 вычисляется определитель матрицы b размером 3x3 путем последовательного умножения разности произведений элементов главной диагонали и побочных диагоналей.
  15. В подпрограмме LETT происходит заполнение массива b значениями из массива a, исключая нулевой элемент, путем обхода матрицы a в порядке от 1 до 3 по строкам и столбцам.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.929 из 5