Найти решение системы уравнений - QBasic (27218)

Узнай цену своей работы

Формулировка задачи:

Дана система трех линейных уравнений a11x+a12y+a13z=b1 a21x+a22y+a23z=b2 a31x+a32y+a33z=b3 Найти единственное решение этой системы, если таковое существует Решение методом Крамера
Листинг программы
  1. DEFDBL A-C, J
  2. DECLARE SUB DET3(A#,B#,C#,D#,E#,F#,G#,H#,I#,J#)
  3. CLS
  4. PRINT "ВВЕСТИ 4 ЧИСЛА 1-ГО УРАВНЕНИЯ"
  5. INPUT A1,A2,A3,A4
  6. PRINT "ВВЕСТИ 4 ЧИСЛА 2-ГО УРАВНЕНИЯ"
  7. INPUT B1,B2,B3,B4
  8. PRINT "ВВЕСТИ 4 ЧИСЛА 3-ГО УРАВНЕНИЯ"
  9. INPUT C1,C2,C3,C4
  10. CALL DET3(A1,A2,A3,B1,B2,B3,C1,C2,C3,JO)
  11. CALL DET3(A4,A2,A3,B4,B2,B3,C4,C2,C3,JX)
  12. CALL DET3(A1,A4,A3,B1,B4,B3,C1,C4,C3,JY)
  13. CALL DET3(A1,A2,A4,B1,B2,B4,C1,C2,C4,JZ)
  14. IF JO=0 THEN
  15. PRINT "ЕДИНСТВЕННОГО РЕШЕНИЯ НЕТ"
  16. STOP
  17. END IF
  18. X=JX/JO
  19. Y=JY/JO
  20. Z=JZ/JO
  21. PRINT "X=";X
  22. PRINT "Y=";Y
  23. PRINT "Z=";Z
  24. STOP
  25. END
  26. DEFDBL A-J
  27. SUB DET3(A,B,C,D,E,F,G,H,I,J)
  28. J=A*E*I+C*D*H+B*F*G-C*E*G-A*F*H-B*D*I
  29. END SUB

Решение задачи: «Найти решение системы уравнений»

textual
Листинг программы
  1. REM     Перед красотой этого голубоглазого кода
  2. REM     не устоит терминатор серии Т 2016
  3. REM
  4. REM     SYSTEM
  5. REM             A1*X+A2*Y+A3*Z=A4
  6. REM             B1*X+B2*Y+B3*Z=B4
  7. REM             C1*X+C2*Y+C3*Z=C4        
  8.  
  9. DECLARE SUB LETT (b!(), a!(), k!)
  10. DECLARE FUNCTION DET3 (a!())
  11. DIM a(3, 4)
  12. DIM b(3, 3)
  13. CLS
  14.  
  15. PRINT "4 Koef UR 1 = ?"
  16. INPUT a(1, 1), a(1, 2), a(1, 3), a(1, 4)
  17. PRINT "4 Koef UR 2 = ?"
  18. INPUT a(2, 1), a(2, 2), a(2, 3), a(2, 4)
  19. PRINT "4 Koef UR 3 = ?"
  20. INPUT a(3, 1), a(3, 2), a(3, 3), a(3, 4)
  21.  
  22. CALL LETT(b(), a(), 0)
  23. JH = DET3(b())
  24. IF JH = 0 THEN PRINT "NO": END
  25.  
  26. CALL LETT(b(), a(), 1)
  27. Jx = DET3(b())
  28.  
  29. CALL LETT(b(), a(), 2)
  30. Jy = DET3(b())
  31.  
  32. CALL LETT(b(), a(), 3)
  33. Jz = DET3(b())
  34.  
  35. X = Jx / JH
  36. Y = Jy / JH
  37. Z = Jz / JH
  38.  
  39. PRINT
  40. PRINT " X = "; X
  41. PRINT " Y = "; Y
  42. PRINT " Z = "; Z
  43. END
  44.  
  45. FUNCTION DET3 (b())
  46.    D = D + b(1, 1) * b(2, 2) * b(3, 3)
  47.    D = D + b(1, 3) * b(2, 1) * b(3, 2)
  48.    D = D + b(3, 1) * b(1, 2) * b(2, 3)
  49.    D = D - b(1, 3) * b(2, 2) * b(3, 1)
  50.    D = D - b(1, 1) * b(2, 3) * b(3, 2)
  51.    D = D - b(1, 2) * b(2, 1) * b(3, 3)
  52.    DET3 = D
  53. END FUNCTION
  54.  
  55. SUB LETT (b(), a(), k)
  56.    FOR i = 1 TO 3
  57.    FOR j = 1 TO 3
  58.       IF j = k AND k > 0 THEN
  59.          b(i, j) = a(i, 4)
  60.       ELSE
  61.          b(i, j) = a(i, j)
  62.       END IF
  63.    NEXT j, i
  64. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут