Курсовая на тему Численные методы решения систем линейных уравнений
Работа добавлена на сайт bukvasha.net: 2014-07-15Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
от 25%
договор
Курсовая работа
по информатике на тему:
«Численные методы решения
систем линейных уравнений»
Выполнил:
студент 06–ИСТ, Фадеева Т.В.
Проверил:
Ловыгина М.Б.
г. Павлово
2008
по информатике на тему:
«Численные методы решения
систем линейных уравнений»
Выполнил:
студент 06–ИСТ, Фадеева Т.В.
Проверил:
Ловыгина М.Б.
г. Павлово
2008
Содержание.
I Теоретическая часть
1. Введение....................................................................3
2. Численные методы ..................................................6
1) Матричный метод........................................6
2) Метод Крамера.............................................9
3) Метод Гаусса …………...............................12
4) Итерации для линейных систем….…..…..17
a) Итерация Якоби..………………...…..18
b) Итерация Гаусса – Зейделя..……...…20
II Практическая часть
1) Матричный метод........................................22
2) Метод Крамера.............................................24
3) Метод Гаусса……........................................26
4) Листинг программы.……………………….28
III Польза введения расчётов.……………………………….65
IV Литература……….................................................................66
I. Теоретическая часть.
Введение.
Линейная алгебра – часть алгебры, изучающая векторные (линейные) пространства и их подпространства, линейные отображения (операторы), линейные, билинейные, и квадратичные функции на векторных пространствах.
Линейная алгебра, численные методы – раздел вычислительной математики, посвященный математическому описанию и исследованию процессов численного решения задач линейной алгебры.
Среди задач линейной алгебры наибольшее значение имеют две: решение системы линейных алгебраических уравнений определение собственных значений и собственных векторов матрицы. Другие часто встречающиеся задачи: обращение матрицы, вычисление определителя и т.д.
Любой численный метод линейной алгебры можно рассматривать как некоторую последовательность выполнения арифметических операций над элементами входных данных. Если при любых входных данных численный метод позволяет найти решение задачи за конечное число арифметических операций, то такой метод называется прямым. В противоположном случае численный метод называется итерационным. Прямые методы - это такие, как метод Гаусса, метод окаймления, метод пополнения, метод сопряжённых градиентов и др. Итерационные методы – это метод простой итерации, метод вращений, метод переменных направлений, метод релаксации и др. Здесь будут рассматриваться матричный метод, метод Гаусса и метод Крамера.
В данной работе будут рассмотрены численные методы в электронных таблицах Excel и программе MathCAD, Microsoft Visual Basic.
MathCAD.
Программа MathCAD по своему назначению позволяет моделировать в электронном документе научно–технические, а также экономические расчёты в форме, достаточно близкой к общепринятым ручным расчётам. Это упрощает составление программы расчёта, автоматизирует перерасчёт и построение графических иллюстраций подобно электронным таблицам Excel, документирование результатов как в текстовом редакторе Word.
Программа Mathcad известна за лёгкость, с которой математические уравнения, текст, и графика могут быть объединены в одном документе. Кроме того, вычислительные способности Mathcad распространяются от сложения столбца чисел к решению интегралов и производных, решение систем уравнений и больше.
Достоинством MathCAD является также наличие в его составе электронных книг. Одна из них – учебник по самой программе, другие – справочник по различным разделам математики, физики, радиоэлектроники и др.
Удобное окно для кода самой программы:
Численные методы.
Разрешимость системы линейных уравнений.
Когда мы говорим о главной матрице системы линейных уравнений, то всегда имеем в виду квадратную матрицу nЧn, т. е. матрицу с одинаковым количеством строк и столбцов. Это важно.
Если, например, количество строк (количество уравнений в системе) будет меньше, чем количество столбцов (фактически, количества неизвестных), то система будет неопределенной, т. е. мы не сможем однозначно определить все неизвестные (решить систему).
Но это не единственное ограничение. Из векторной алгебры известно, что система линейных уравнений имеет решение (однозначное) тогда и только тогда, когда ее главный определитель не равен нулю: Δ ≠ 0.
Рассмотрим случай, когда определитель системы равен нулю. Здесь возможны два варианта:
1. Δ = 0 и каждый из дополнительных определителей Δxi = 0. Это имеет место только тогда, когда коэффициенты при неизвестных xi пропорциональны, т. е. каждое уравнение системы получается из первого уравнения умножением обеих его частей на число k. При этом система имеет бесчисленное множество решений.
2. Δ = 0 и хотя бы один дополнительный определитель Δxi ≠ 0. Это имеет место только тогда, когда коэффициенты при всех неизвестных xi, пропорциональны. При этом получается система из противоречивых уравнений, которая не имеет решений.
Матричный метод решения систем линейных уравнений.
Пусть дана система линейных уравнений:
Рассмотрим матрицу, составленную из коэффициентов при неизвестных:
Свободные члены и неизвестные можно записать в виде матрицы столбцов:
Тогда, используя правило умножение матриц, эту систему уравнений можно записать так:
или
A·x = b. (1)
Равенство (1) называется матричным уравнением или системой уравнений в матричном виде.
Матрица А коэффициентов при неизвестных называется главной матрицей системы.
Иногда рассматривают также расширенную матрицу системы, т. е. главную матрицу системы, дополненную столбцом свободных членов, которую записывают в следующем виде:
Любую линейную систему уравнений можно записать в матричном виде. Например, пусть дана система:
Эта система из двух уравнений с тремя неизвестными – x, y,. В высшей математике можно рассматривать системы из очень большого числа уравнений с большим количеством неизвестных и поэтому неизвестные принято обозначать только буквой х, но с индексами:
Запишем эту систему в матричном виде:
Здесь главная матрица системы:
Расширенная матрица будет иметь вид:
Решения матричных уравнений.
Матричные уравнения решаются при помощи обратных матриц. Уравнение решается следующим образом. Пусть матрица А – невырожденная (D ≠ 0), тогда существует обратная матрица А-1. Умножив на нее обе части матричного уравнения, имеем А-1(АХ) = А-1В. Используя сочетательный закон умножения, перепишем это равенство в виде
(А-1А) Х = А-1В.
Поскольку А-1 А = Е и ЕХ = Х, находим:
Х = А-1В.
Таким образом, чтобы решить матричное уравнение, нужно:
1. Найти обратную матрицу А-1.
2. Найти произведение обратной матрицы А-1 на матрицу столбец свободных членов В, т. е А-1В.
Пользуясь определением равных матриц, записать ответ.
При этом собственно нахождение обратной матрицы – процесс достаточно трудоемкий и его программирование вряд ли можно назвать элементарной задачей. Поэтому на практике чаще применяют численные методы решения систем линейных уравнений.
К численным методам решения систем линейных уравнений относят такие как: метод Гаусса, метод Крамера, итеративные методы. В методе Гаусса, например, работают над расширенной матрицей системы. А в методе Крамера – с определителями системы, образованными по специальному правилу.
Метод Крамера.
При решении систем линейных уравнений по методу Крамера последовательно выполняется следующий алгоритм:
1. Записывают систему в матричном виде (если это еще не сделано).
2. Вычисляют главный определитель системы:
3. Вычисляют все дополнительные определители системы:
4. Если главный определитель системы не равен нулю, то выполняют пункт 5. Иначе рассматривают вопрос о разрешимости данной системы (имеет бесчисленное множество решений или не имеет решений). Находят значения всех неизвестных по формулам Крамера для решения системы n линейных уравнений с n неизвестными, которые имеют вид:
Пример 1
Решить по методу Крамера систему из трех уравнений с тремя неизвестными:
Решение
Запишем главный и побочные определители системы:
Вычислим эти определители:
Δ = 3*4*(-4)+7*(-3)*5+(-2)*(-8)*5-5*4*5-3*(-3)*(-8)-7*(-2)*(-4) = 48-105+80-100-72-56 = 128-333 = -205.
Δ1 = -112+(-45)+(-192)-(-240)-24-168 = -112-45-192+240-24-168 = 240-541 = -301.
Δ2 = -36-420-280-75+196-288 = 196-1099 = -903.
Δ3 = -144-147-30-140+27-168 = -629+27 = -602.
Главный определитель системы не равен нулю. Находим неизвестные по формулам Крамера.
Подставим найденные значения определителей в формулы Крамера:
x1 = Δ1/Δ = -301/(-205) = 1,468292682927 ≈ 1,47;
x2 = Δ2/Δ = -903/(-205) = 4,40487804878 ≈ 4,4;
x3 = Δ3/Δ = -602/(-205) = 2,936585365854 ≈ 2,93.
Вывод.
При решении систем линейных уравнений по методу Крамера используются формулы, в которых участвуют как главный, так и дополнительные определители системы:
Напомним, что главным определителем системы называется определитель главной матрицы системы, составленной из коэффициентов при неизвестных:
Если в главном определителе системы заменить поочередно столбцы коэффициентов при x1, x2,...xn на столбец свободных членов, то получим n дополнительных определителей (для каждого из n неизвестных):
При этом важен вопрос о разрешимости данной системы, который решается сравнением главного и дополнительных определителей системы с нулем:
Метод Гаусса – прямой и обратный ход.
Рассмотрим метод Гаусса. Например, пусть дана расширенная матрица некоторой системы m линейных уравнений c n неизвестными:
Будем считать, что a11 ≠ 0 (если это не так, то достаточно переставить первую и некоторую другую строку расширенной матрицы местами). Проведем следующие элементарные преобразования:
C2-(a21/a11)*C1,
...
Cm-(am1/a11)*C1,
т.е. Ci-(ai1/a11)*C1, i = 2, 3, ..., m.
Т. е. от каждой строки расширенной матрицы (кроме первой) отнимаем первую строку, умноженную на частное от деления первого элемента этой строки на диагональный элемент а11.
В результате получим матрицу:
Т. е. первая строка осталась без изменений, а в столбце под а11 на всех местах оказались нули. Обратим внимание, что преобразования коснулись всех элементов строк, начиная со второй, всей расширенной матрицы системы.
Теперь наша задача состоит в том, чтобы получить нули подо всеми диагональными элементами матрицы А – aij, где I = j.
Повторим наши элементарные преобразования, но уже для элемента α22.
C1-(a12/α22)*C2,
...
Cm-(αm2/α22)*C2,
т.е. Ci-(αi2/α22)*C2, i = 3, ..., m.
Т. е. от каждой строки расширенной матрицы (теперь кроме первой и второй) отнимаем вторую строку, умноженную на частное от деления первого элемента этой (текущей) строки на диагональный элемент α22.
Такие преобразования продолжаются до тех пор, пока матрица не приведется к верхнее - треугольному виду. Т. е. под главной диагональю не окажутся все нули:
Вспомнив, что каждая строка представляет собой одно из уравнений линейной системы уравнений, легко заметить, что последнее m-ое уравнение принимает вид:
γmn*xn = δm.
Отсюда легко можно найти значение первого корня – xn = δm/γmn.
Подставив это значение в предыдущее m-1-е уравнение, легко получим значение xn-1-ого корня.
Таким образом, поднимаясь до самого верха обратным ходом метода Гаусса, мы последовательно найдем все корни системы уравнений.
Пример 1
Рассмотрим систему уравнений:
Главный определитель данной системы:
Δ = [1*(-4)*(-2)+2*2*1+(-1)*(-1)*(-1)]-[1*(-4)*(-1)+2*(-1)*(-2)+2*(-1)*1] = [8+4-1]-[4+4-2] = 11-6 =5,
т. е. Δ ≠ 0.
Т. е. система определена и разрешима. Решим ее по методу Гаусса.
Проведем прямой ход метода Гаусса, выписав предварительно расширенную матрицу системы:
Получим нули под главной диагональю в первом столбце расширенной матрицы. Для получения нуля в элементе a21 (т. е. под диагональю во второй строке матрицы) вторую строку матрицы преобразуем по формуле C2-(a21/a11)*C1 = C2-(2/1)*C1 = C2-2*C1:
Аналогично поступаем и с элементом а31 (т. е. под диагональю в третьей строке матрицы). Третью строку матрицы преобразуем по формуле C3-(a31/a11)*C1 = C3-(-1/1)*C1 = C3+C1:
Таким образом, мы получили нули под главной диагональю в первом столбце расширенной матрицы. Осталось получить нуль под главной диагональю во втором столбце матрицы, т. е. на месте элемента а32. Для этого третью строку матрицы преобразуем по формуле C3-(a32/a22)*C2 = C3-(1/-2)*C2 = C3+1/2C2:
Таким образом, проведя прямой ход метода Гаусса, мы получили расширенную матрицу системы, приведенную к верхне-треугольному виду:
Эта матрица эквивалентна системе:
Обратным ходом метода Гаусса найдем корни системы. Из последнего уравнения найдем корень х3:
-5/2x3 = 3/2,
x3 = (3/2):(-5/2) = 3/2*(-2/5) = -3/5.
Корень x3 = -3/5 найден. Подставим его в верхнее (второе) уравнение системы (-2x2-3x3 = 1):
-2x2-3(-3/5) = 1,
-2x2+9/5 = 1,
I Теоретическая часть
1. Введение....................................................................3
2. Численные методы ..................................................6
1) Матричный метод........................................6
2) Метод Крамера.............................................9
3) Метод Гаусса …………...............................12
4) Итерации для линейных систем….…..…..17
a) Итерация Якоби..………………...…..18
b) Итерация Гаусса – Зейделя..……...…20
II Практическая часть
1) Матричный метод........................................22
2) Метод Крамера.............................................24
3) Метод Гаусса……........................................26
4) Листинг программы.……………………….28
III Польза введения расчётов.……………………………….65
IV Литература……….................................................................66
I. Теоретическая часть.
Введение.
Линейная алгебра – часть алгебры, изучающая векторные (линейные) пространства и их подпространства, линейные отображения (операторы), линейные, билинейные, и квадратичные функции на векторных пространствах.
Линейная алгебра, численные методы – раздел вычислительной математики, посвященный математическому описанию и исследованию процессов численного решения задач линейной алгебры.
Среди задач линейной алгебры наибольшее значение имеют две: решение системы линейных алгебраических уравнений определение собственных значений и собственных векторов матрицы. Другие часто встречающиеся задачи: обращение матрицы, вычисление определителя и т.д.
Любой численный метод линейной алгебры можно рассматривать как некоторую последовательность выполнения арифметических операций над элементами входных данных. Если при любых входных данных численный метод позволяет найти решение задачи за конечное число арифметических операций, то такой метод называется прямым. В противоположном случае численный метод называется итерационным. Прямые методы - это такие, как метод Гаусса, метод окаймления, метод пополнения, метод сопряжённых градиентов и др. Итерационные методы – это метод простой итерации, метод вращений, метод переменных направлений, метод релаксации и др. Здесь будут рассматриваться матричный метод, метод Гаусса и метод Крамера.
В данной работе будут рассмотрены численные методы в электронных таблицах Excel и программе MathCAD, Microsoft Visual Basic.
MathCAD.
Программа MathCAD по своему назначению позволяет моделировать в электронном документе научно–технические, а также экономические расчёты в форме, достаточно близкой к общепринятым ручным расчётам. Это упрощает составление программы расчёта, автоматизирует перерасчёт и построение графических иллюстраций подобно электронным таблицам Excel, документирование результатов как в текстовом редакторе Word.
Программа Mathcad известна за лёгкость, с которой математические уравнения, текст, и графика могут быть объединены в одном документе. Кроме того, вычислительные способности Mathcad распространяются от сложения столбца чисел к решению интегралов и производных, решение систем уравнений и больше.
Достоинством MathCAD является также наличие в его составе электронных книг. Одна из них – учебник по самой программе, другие – справочник по различным разделам математики, физики, радиоэлектроники и др.
Microsoft Office Excel.
Если же говорить о программе Excel, которая является одной из наиболее известных в обработке электронных таблиц, то без преувеличения можно утверждать, что ее возможности практически неисчерпаемы.
Обработка текста, управление базами данных - программа настолько мощна, что во многих случаях превосходит специализированные программы - редакторы или программы баз данных. Такое многообразие функций может поначалу запутать, нежели заставить применять их на практике. Но по мере приобретения опыта начинаешь по достоинству ценить то, что границ возможностей Excel тяжело достичь.
За всю историю табличных расчетов с применением персональных компьютеров требования пользователей к подобным программам существенно изменились. В начале основной акцент в такой программе, как, например, Visi Calc, ставился на счетные функции. Сегодня, положение другое. Наряду с инженерными и бухгалтерскими расчетами организация и графическое изображение данных приобретают все возрастающее значение. Кроме того, многообразие функций, предлагаемое такой расчетной и графической программой, не должно осложнять работу пользователя. Программы для Windows создают для этого идеальные предпосылки.
В последнее время многие как раз перешли на использование Windows в качестве своей пользовательской среды. Как следствие, многие фирмы, создающие программное обеспечение, начали предлагать большое количество программ для Windows.
Visual Basic.
Microsoft Visual Basic – это мощная система программирования, позволяющая быстро и эффективно создавать приложения для Microsoft Windows. В отличие от Excel и MathCAD это наиболее удобная программа для решения систем линейных уравнений. Простой пользовательский интерфейс, позволяющий легко переключаться с проекта формы на сам код программы.
Удобное окно для кода самой программы:
Численные методы.
Разрешимость системы линейных уравнений.
Когда мы говорим о главной матрице системы линейных уравнений, то всегда имеем в виду квадратную матрицу nЧn, т. е. матрицу с одинаковым количеством строк и столбцов. Это важно.
Если, например, количество строк (количество уравнений в системе) будет меньше, чем количество столбцов (фактически, количества неизвестных), то система будет неопределенной, т. е. мы не сможем однозначно определить все неизвестные (решить систему).
Но это не единственное ограничение. Из векторной алгебры известно, что система линейных уравнений имеет решение (однозначное) тогда и только тогда, когда ее главный определитель не равен нулю: Δ ≠ 0.
Рассмотрим случай, когда определитель системы равен нулю. Здесь возможны два варианта:
1. Δ = 0 и каждый из дополнительных определителей Δxi = 0. Это имеет место только тогда, когда коэффициенты при неизвестных xi пропорциональны, т. е. каждое уравнение системы получается из первого уравнения умножением обеих его частей на число k. При этом система имеет бесчисленное множество решений.
2. Δ = 0 и хотя бы один дополнительный определитель Δxi ≠ 0. Это имеет место только тогда, когда коэффициенты при всех неизвестных xi, пропорциональны. При этом получается система из противоречивых уравнений, которая не имеет решений.
Матричный метод решения систем линейных уравнений.
Пусть дана система линейных уравнений:
Рассмотрим матрицу, составленную из коэффициентов при неизвестных:
Свободные члены и неизвестные можно записать в виде матрицы столбцов:
Тогда, используя правило умножение матриц, эту систему уравнений можно записать так:
или
A·x = b. (1)
Равенство (1) называется матричным уравнением или системой уравнений в матричном виде.
Матрица А коэффициентов при неизвестных называется главной матрицей системы.
Иногда рассматривают также расширенную матрицу системы, т. е. главную матрицу системы, дополненную столбцом свободных членов, которую записывают в следующем виде:
Любую линейную систему уравнений можно записать в матричном виде. Например, пусть дана система:
Эта система из двух уравнений с тремя неизвестными – x, y,. В высшей математике можно рассматривать системы из очень большого числа уравнений с большим количеством неизвестных и поэтому неизвестные принято обозначать только буквой х, но с индексами:
Запишем эту систему в матричном виде:
Здесь главная матрица системы:
Расширенная матрица будет иметь вид:
Решения матричных уравнений.
Матричные уравнения решаются при помощи обратных матриц. Уравнение решается следующим образом. Пусть матрица А – невырожденная (D ≠ 0), тогда существует обратная матрица А-1. Умножив на нее обе части матричного уравнения, имеем А-1(АХ) = А-1В. Используя сочетательный закон умножения, перепишем это равенство в виде
(А-1А) Х = А-1В.
Поскольку А-1 А = Е и ЕХ = Х, находим:
Х = А-1В.
Таким образом, чтобы решить матричное уравнение, нужно:
1. Найти обратную матрицу А-1.
2. Найти произведение обратной матрицы А-1 на матрицу столбец свободных членов В, т. е А-1В.
Пользуясь определением равных матриц, записать ответ.
При этом собственно нахождение обратной матрицы – процесс достаточно трудоемкий и его программирование вряд ли можно назвать элементарной задачей. Поэтому на практике чаще применяют численные методы решения систем линейных уравнений.
К численным методам решения систем линейных уравнений относят такие как: метод Гаусса, метод Крамера, итеративные методы. В методе Гаусса, например, работают над расширенной матрицей системы. А в методе Крамера – с определителями системы, образованными по специальному правилу.
Метод Крамера.
При решении систем линейных уравнений по методу Крамера последовательно выполняется следующий алгоритм:
1. Записывают систему в матричном виде (если это еще не сделано).
2. Вычисляют главный определитель системы:
3. Вычисляют все дополнительные определители системы:
4. Если главный определитель системы не равен нулю, то выполняют пункт 5. Иначе рассматривают вопрос о разрешимости данной системы (имеет бесчисленное множество решений или не имеет решений). Находят значения всех неизвестных по формулам Крамера для решения системы n линейных уравнений с n неизвестными, которые имеют вид:
Пример 1
Решить по методу Крамера систему из трех уравнений с тремя неизвестными:
Решение
Запишем главный и побочные определители системы:
Вычислим эти определители:
Δ = 3*4*(-4)+7*(-3)*5+(-2)*(-8)*5-5*4*5-3*(-3)*(-8)-7*(-2)*(-4) = 48-105+80-100-72-56 = 128-333 = -205.
Δ1 = -112+(-45)+(-192)-(-240)-24-168 = -112-45-192+240-24-168 = 240-541 = -301.
Δ2 = -36-420-280-75+196-288 = 196-1099 = -903.
Δ3 = -144-147-30-140+27-168 = -629+27 = -602.
Главный определитель системы не равен нулю. Находим неизвестные по формулам Крамера.
Подставим найденные значения определителей в формулы Крамера:
x1 = Δ1/Δ = -301/(-205) = 1,468292682927 ≈ 1,47;
x2 = Δ2/Δ = -903/(-205) = 4,40487804878 ≈ 4,4;
x3 = Δ3/Δ = -602/(-205) = 2,936585365854 ≈ 2,93.
Вывод.
При решении систем линейных уравнений по методу Крамера используются формулы, в которых участвуют как главный, так и дополнительные определители системы:
Напомним, что главным определителем системы называется определитель главной матрицы системы, составленной из коэффициентов при неизвестных:
Если в главном определителе системы заменить поочередно столбцы коэффициентов при x1, x2,...xn на столбец свободных членов, то получим n дополнительных определителей (для каждого из n неизвестных):
При этом важен вопрос о разрешимости данной системы, который решается сравнением главного и дополнительных определителей системы с нулем:
Метод Гаусса – прямой и обратный ход.
Рассмотрим метод Гаусса. Например, пусть дана расширенная матрица некоторой системы m линейных уравнений c n неизвестными:
Будем считать, что a11 ≠ 0 (если это не так, то достаточно переставить первую и некоторую другую строку расширенной матрицы местами). Проведем следующие элементарные преобразования:
C2-(a21/a11)*C1,
...
Cm-(am1/a11)*C1,
т.е. Ci-(ai1/a11)*C1, i = 2, 3, ..., m.
Т. е. от каждой строки расширенной матрицы (кроме первой) отнимаем первую строку, умноженную на частное от деления первого элемента этой строки на диагональный элемент а11.
В результате получим матрицу:
Т. е. первая строка осталась без изменений, а в столбце под а11 на всех местах оказались нули. Обратим внимание, что преобразования коснулись всех элементов строк, начиная со второй, всей расширенной матрицы системы.
Теперь наша задача состоит в том, чтобы получить нули подо всеми диагональными элементами матрицы А – aij, где I = j.
Повторим наши элементарные преобразования, но уже для элемента α22.
C1-(a12/α22)*C2,
...
Cm-(αm2/α22)*C2,
т.е. Ci-(αi2/α22)*C2, i = 3, ..., m.
Т. е. от каждой строки расширенной матрицы (теперь кроме первой и второй) отнимаем вторую строку, умноженную на частное от деления первого элемента этой (текущей) строки на диагональный элемент α22.
Такие преобразования продолжаются до тех пор, пока матрица не приведется к верхнее - треугольному виду. Т. е. под главной диагональю не окажутся все нули:
Вспомнив, что каждая строка представляет собой одно из уравнений линейной системы уравнений, легко заметить, что последнее m-ое уравнение принимает вид:
γmn*xn = δm.
Отсюда легко можно найти значение первого корня – xn = δm/γmn.
Подставив это значение в предыдущее m-1-е уравнение, легко получим значение xn-1-ого корня.
Таким образом, поднимаясь до самого верха обратным ходом метода Гаусса, мы последовательно найдем все корни системы уравнений.
Пример 1
Рассмотрим систему уравнений:
Главный определитель данной системы:
Δ = [1*(-4)*(-2)+2*2*1+(-1)*(-1)*(-1)]-[1*(-4)*(-1)+2*(-1)*(-2)+2*(-1)*1] = [8+4-1]-[4+4-2] = 11-6 =5,
т. е. Δ ≠ 0.
Т. е. система определена и разрешима. Решим ее по методу Гаусса.
Проведем прямой ход метода Гаусса, выписав предварительно расширенную матрицу системы:
Получим нули под главной диагональю в первом столбце расширенной матрицы. Для получения нуля в элементе a21 (т. е. под диагональю во второй строке матрицы) вторую строку матрицы преобразуем по формуле C2-(a21/a11)*C1 = C2-(2/1)*C1 = C2-2*C1:
Аналогично поступаем и с элементом а31 (т. е. под диагональю в третьей строке матрицы). Третью строку матрицы преобразуем по формуле C3-(a31/a11)*C1 = C3-(-1/1)*C1 = C3+C1:
Таким образом, мы получили нули под главной диагональю в первом столбце расширенной матрицы. Осталось получить нуль под главной диагональю во втором столбце матрицы, т. е. на месте элемента а32. Для этого третью строку матрицы преобразуем по формуле C3-(a32/a22)*C2 = C3-(1/-2)*C2 = C3+1/2C2:
Таким образом, проведя прямой ход метода Гаусса, мы получили расширенную матрицу системы, приведенную к верхне-треугольному виду:
Эта матрица эквивалентна системе:
Обратным ходом метода Гаусса найдем корни системы. Из последнего уравнения найдем корень х3:
-5/2x3 = 3/2,
x3 = (3/2):(-5/2) = 3/2*(-2/5) = -3/5.
Корень x3 = -3/5 найден. Подставим его в верхнее (второе) уравнение системы (-2x2-3x3 = 1):
-2x2-3(-3/5) = 1,
-2x2+9/5 = 1,
-2x2 = 1-9/5,
-2x2 = -4/5,
x2 = (-4/5):(-2) = (-4/5)*(-1/2) = 2/5.
Корень x2 = 2/5 найден. Подставим его и корень х3 в верхнее (первое) уравнение системы (x1-x2+x3 = 0):
x1-2/5+(-3/5) = 0,
x1-5/5 = 0,
x1 = 5/5 = 1.
Проверка:
т. е.
т. е.
и т. д.
Вывод.
Итак, метод Гаусса (или, иначе, метод последовательного исключения неизвестных) состоит в следующем:
1. Путем элементарных преобразований систему уравнений приводят к эквивалентной ей системе с верхне-треугольной матрицей. Эти действия называют прямым ходом.
2. Из полученной треугольной системы переменные находят с помощью последовательных подстановок (обратный ход).
3. При этом все преобразования проводятся над так называемой расширенной матрицей системы, которую и приводят к верхнее - треугольному виду в прямом ходе метода.
-2x2 = -4/5,
x2 = (-4/5):(-2) = (-4/5)*(-1/2) = 2/5.
Корень x2 = 2/5 найден. Подставим его и корень х3 в верхнее (первое) уравнение системы (x1-x2+x3 = 0):
x1-2/5+(-3/5) = 0,
x1-5/5 = 0,
x1 = 5/5 = 1.
Проверка:
т. е.
т. е.
и т. д.
Вывод.
Итак, метод Гаусса (или, иначе, метод последовательного исключения неизвестных) состоит в следующем:
1. Путем элементарных преобразований систему уравнений приводят к эквивалентной ей системе с верхне-треугольной матрицей. Эти действия называют прямым ходом.
2. Из полученной треугольной системы переменные находят с помощью последовательных подстановок (обратный ход).
3. При этом все преобразования проводятся над так называемой расширенной матрицей системы, которую и приводят к верхнее - треугольному виду в прямом ходе метода.
Итерация для линейных систем.
Способ итераций дает возможность получить последовательность приближенных значений, сходящихся к точному решению системы, подобно тому, как это делается для одного уравнения.
Для определенности ограничимся системой из четырех уравнений с четырьмя неизвестными (система четвертого порядка), которую запишем в виде:
Разрешим первое уравнение системы относительно х1:
х1 = (-a12/a11)х2-a13/a11х3-a14/a11х4-a15/a11.
Затем разрешим второе уравнение относительно х2 и т. д. Тогда систему можно переписать в виде:
где α = -aik/aii, i = 1, 2, 3, 4; k = 1, 2, 3, 4, 5.
Система является частным случаем записи вида:
При этом линейная функция L1 фактически не зависит от х1.
Зададим какие-либо начальные значения неизвестных (нулевые приближения):
х1(0), х2(0), х3(0), х4(0).
Подставляя эти значения в правые части системы (*), получим первые приближения:
Полученные первые приближения могут быть так же использованы для получения вторых, третьих и т. д. приближений. Т. е. можно записать:
Условия сходимости итерационного процесса.
Установим условия, выполнение которых обеспечит сходимость получающихся приближений к истинному (точному) решению системы х1, х2, х3, х4.
Не вдаваясь в подробности, скажем, что для того чтобы итерационный процесс сходился к точному решению, достаточно, чтобы все коэффициенты системы были малы по сравнению с диагональными.
Это условие можно сформулировать и более точно:
Для сходимости процесса итераций достаточно, чтобы в каждом столбце сумма отношений коэффициентов системы к диагональным элементам, взятым из той же строки, была строго меньше единицы:
Итерация Якоби.
Рассмотрим систему линейных уравнений:
Уравнения можно записать в виде:
Это позволяет предложить следующий итерационный процесс:
или (другой вид записи)
Покажем, что если начать с точки P0 = (х1(0), х2(0), х3(0), х4(0)) = (1, 2, 2), то итерация (3) сходится к решению (2, 4, 3). Подставим х1 = 1, х2 = 2, х2 = 2 в правую часть каждого уравнения из (3), чтобы получить новые значения:
Новая точка P1 = (х1(1), х2(1), х3(1), х4(1)) = (1.75, 3.375, 3), ближе, чем P0.
Итерация, использующая (3), генерирует последовательность точек {Pk}, которая сходится к решению (2, 4, 3):
Этот процесс называется итерацией Якоби и может использоваться для решения определенных типов линейных систем.
Итерация Гаусса-Зейделя.
Процесс итерации Якоби иногда можно модифицировать для ускорения сходимости.
Отметим, что итеративный процесс Якоби производит три последовательности – {х1(k)}, {х2(k)}, {х3(k)}, {х4(k)}. Кажется разумным, что х1(k+1) может быть использовано вместо х2(k). Аналогично х1(k+1) и х2(k+1) можно использовать в вычислении х3(k+1). Например, для уравнений из системы (1) это даст следующий вид итерационного процесса Гаусса-Зейделя, использующий (3*):
Такой итерационный процесс даст результаты:
Т. е. к точному решению мы пришли уже на 10-ом шаге итерации, а не на 19, как в итерации Якоби.
Вывод.
1. Способ итераций дает возможность получить последовательность приближенных значений, сходящихся к точному решению системы. Для этого система приводится к виду (для случая системы из четырех уравнений):
Эти формулы как раз и задают собственно итерационный процесс.
2. При этом чтобы итерационный процесс сходился к точному решению, достаточно, чтобы все коэффициенты системы были малы по сравнению с диагональными.
Это условие можно сформулировать и более точно:
Для сходимости процесса итераций достаточно, чтобы в каждом столбце сумма отношений коэффициентов системы к диагональным элементам, взятым из той же строки, была строго меньше единицы:
3. Следует так же сказать, что итерационный процесс может проводиться как в виде итерации Якоби, так и в виде итерации Гаусса-Зейделя. В последнем случае сходимость итерационного процесса может существенно улучшиться.
Способ итераций дает возможность получить последовательность приближенных значений, сходящихся к точному решению системы, подобно тому, как это делается для одного уравнения.
Для определенности ограничимся системой из четырех уравнений с четырьмя неизвестными (система четвертого порядка), которую запишем в виде:
Разрешим первое уравнение системы относительно х1:
х1 = (-a12/a11)х2-a13/a11х3-a14/a11х4-a15/a11.
Затем разрешим второе уравнение относительно х2 и т. д. Тогда систему можно переписать в виде:
где α = -aik/aii, i = 1, 2, 3, 4; k = 1, 2, 3, 4, 5.
Система является частным случаем записи вида:
При этом линейная функция L1 фактически не зависит от х1.
Зададим какие-либо начальные значения неизвестных (нулевые приближения):
х1(0), х2(0), х3(0), х4(0).
Подставляя эти значения в правые части системы (*), получим первые приближения:
Полученные первые приближения могут быть так же использованы для получения вторых, третьих и т. д. приближений. Т. е. можно записать:
Условия сходимости итерационного процесса.
Установим условия, выполнение которых обеспечит сходимость получающихся приближений к истинному (точному) решению системы х1, х2, х3, х4.
Не вдаваясь в подробности, скажем, что для того чтобы итерационный процесс сходился к точному решению, достаточно, чтобы все коэффициенты системы были малы по сравнению с диагональными.
Это условие можно сформулировать и более точно:
Для сходимости процесса итераций достаточно, чтобы в каждом столбце сумма отношений коэффициентов системы к диагональным элементам, взятым из той же строки, была строго меньше единицы:
Итерация Якоби.
Рассмотрим систему линейных уравнений:
Уравнения можно записать в виде:
Это позволяет предложить следующий итерационный процесс:
или (другой вид записи)
Покажем, что если начать с точки P0 = (х1(0), х2(0), х3(0), х4(0)) = (1, 2, 2), то итерация (3) сходится к решению (2, 4, 3). Подставим х1 = 1, х2 = 2, х2 = 2 в правую часть каждого уравнения из (3), чтобы получить новые значения:
Новая точка P1 = (х1(1), х2(1), х3(1), х4(1)) = (1.75, 3.375, 3), ближе, чем P0.
Итерация, использующая (3), генерирует последовательность точек {Pk}, которая сходится к решению (2, 4, 3):
k | х1(k) | х2(k) | х3(k) |
0 | 1.0 | 2.0 | 2.0 |
1 | 1.75 | 3.375 | 3.0 |
2 | 1.84375 | 3.875 | 3.025 |
3 | 1.9625 | 3.925 | 2.9625 |
4 | 1.990625 | 3.9765625 | 3.0 |
5 | 1.99414063 | 3.9953125 | 3.0009375 |
… | … | … | … |
15 | 1.99999993 | 3.99999985 | 3.0009375 |
… | … | … | … |
19 | 2.0 | 4.0 | 3.0 |
Итерация Гаусса-Зейделя.
Процесс итерации Якоби иногда можно модифицировать для ускорения сходимости.
Отметим, что итеративный процесс Якоби производит три последовательности – {х1(k)}, {х2(k)}, {х3(k)}, {х4(k)}. Кажется разумным, что х1(k+1) может быть использовано вместо х2(k). Аналогично х1(k+1) и х2(k+1) можно использовать в вычислении х3(k+1). Например, для уравнений из системы (1) это даст следующий вид итерационного процесса Гаусса-Зейделя, использующий (3*):
Такой итерационный процесс даст результаты:
k | х1(k) | х2(k) | х3(k) |
0 | 1.0 | 2.0 | 2.0 |
1 | 1.75 | 3.75 | 2.95 |
2 | 1.95 | 3.96875 | 2.98625 |
3 | 1.995625 | 3.99609375 | 2.99903125 |
… | … | … | … |
8 | 1.99999983 | 3.99999988 | 2.99999996 |
9 | 1.99999998 | 3.99999999 | 3.0 |
10 | 2.0 | 4.0 | 3.0 |
Вывод.
1. Способ итераций дает возможность получить последовательность приближенных значений, сходящихся к точному решению системы. Для этого система приводится к виду (для случая системы из четырех уравнений):
Эти формулы как раз и задают собственно итерационный процесс.
2. При этом чтобы итерационный процесс сходился к точному решению, достаточно, чтобы все коэффициенты системы были малы по сравнению с диагональными.
Это условие можно сформулировать и более точно:
Для сходимости процесса итераций достаточно, чтобы в каждом столбце сумма отношений коэффициентов системы к диагональным элементам, взятым из той же строки, была строго меньше единицы:
3. Следует так же сказать, что итерационный процесс может проводиться как в виде итерации Якоби, так и в виде итерации Гаусса-Зейделя. В последнем случае сходимость итерационного процесса может существенно улучшиться.
II. Практическая часть.
1) Метод обратной матрицы.
1) Метод обратной матрицы.
Метод обратной матрицы | ||||||
x1 | x2 | x3 | x4 | |||
12 | -4 | 0 | 6 | 2 | ||
A= | -4 | 21 | 5 | 3 | B= | 4 |
-3 | 2 | -22 | 1 | -2 | ||
-2 | -3 | 5 | 23 | 4 | ||
0,083 | 0,013 | -0,002 | -0,023 | |||
A-1= | 0,016 | 0,048 | 0,009 | -0,011 | ||
-0,009 | 0,003 | -0,044 | 0,004 | |||
0,011 | 0,007 | 0,010 | 0,039 | |||
x= | 0,129 | |||||
0,165 | ||||||
0,097 | ||||||
0,186 |
2) Метод Крамера.
Метод Крамера | |||||||
x1 | x2 | x3 | x4 | ||||
12 | -4 | 0 | 6 | 2 | |||
A= | -4 | 21 | 5 | 3 | B= | 4 | |
-3 | 2 | -22 | 1 | -2 | |||
-2 | -3 | 5 | 23 | 4 | |||
'A'= | -134088 | ||||||
2 | -4 | 0 | 6 | ||||
A1= | 4 | 21 | 5 | 3 | |||
-2 | 2 | -22 | 1 | ||||
4 | -3 | 5 | 23 | ||||
'A1'= | -17296 | x1= | 0,129 | ||||
12 | 2 | 0 | 6 | ||||
A2= | -4 | 4 | 5 | 3 | |||
-3 | -2 | -22 | 1 | ||||
-2 | 4 | 5 | 23 | ||||
'A2'= | -22188 | x2= | 0,165 | ||||
12 | -4 | 2 | 6 | ||||
A3= | -4 | 21 | 4 | 3 | |||
-3 | 2 | -2 | 1 | ||||
-2 | -3 | 4 | 23 | ||||
'A3'= | -12980 | x3= | 0,097 | ||||
12 | -4 | 0 | 2 | ||||
A4= | -4 | 21 | 5 | 4 | |||
-3 | 2 | -22 | -2 | ||||
-2 | -3 | 5 | 4 | ||||
'A4'= | -24896 | x4= | 0,186 | ||||
x= | 0,129 | ||||||
0,165 | |||||||
0,097 | |||||||
0,186 |
3) Метод Гаусса.
Метод Гаусса | |||||||
x1 | x2 | x3 | x4 | ||||
12 | -4 | 0 | 6 | 2 | |||
A= | -4 | 21 | 5 | 3 | B= | 4 | |
-3 | 2 | -22 | 1 | -2 | |||
-2 | -3 | 5 | 23 | 4 | |||
'A'= | -134088 | ||||||
1,000 | -0,333 | 0,000 | 0,500 | 0,167 | |||
-4,000 | 21,000 | 5,000 | 3,000 | 4,000 | |||
-3,000 | 2,000 | -22,000 | 1,000 | -2,000 | |||
-2,000 | -3,000 | 5,000 | 23,000 | 4,000 | |||
1,000 | -0,333 | 0,000 | 0,500 | 0,167 | |||
0,000 | 25,333 | 5,000 | 5,000 | 4,667 | |||
0,000 | 1,000 | -22,000 | 2,500 | -1,500 | |||
0,000 | -3,667 | 5,000 | 24,000 | 4,333 | |||
1,000 | -0,333 | 0,000 | 0,500 | 0,167 | |||
0,000 | 1,000 | 0,197 | 0,197 | 0,184 | |||
0,000 | 0,000 | -22,197 | 2,303 | -1,684 | |||
0,000 | 0,000 | 5,724 | 24,724 | 5,009 | |||
1,000 | -0,333 | 0,000 | 0,500 | 0,167 | |||
0,000 | 1,000 | 0,197 | 0,197 | 0,184 | |||
0,000 | 0,000 | 1,000 | -0,104 | 0,076 | |||
0,000 | 0,000 | 0,000 | 25,317 | 4,574 | |||
x= | 0,120 | ||||||
0,130 | |||||||
0,095 | |||||||
0,181 |
4) Листинг программы (Метод Крамера, Метод Гаусса, Метод обратной матрицы).
Begin VB.Form frmAriel
BorderStyle = 1 'Единственный Фиксированный
Caption = "Решение систем линейных уравнений"
ClientHeight = 6315
ClientLeft = 4365
ClientTop = 2430
ClientWidth = 7815
BeginProperty Font
Name = "MS Sans Serif"
Size = 12
Charset = 204
Weight = 700
Underline = 0 'False
Italic = -1 'True
Strikethrough = 0 'False
EndProperty
LinkTopic = "Форма1"
MaxButton = 0 'False
MinButton = 0 'False
ScaleHeight = 6315
ScaleWidth = 7815
Begin VB.TextBox txtMOMZ
Alignment = 2 'Выравнивание по Центру
BeginProperty Font
Name = "Times New Roman"
Size = 15.75
Charset = 204
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty Begin VB.Form frmAriel
BorderStyle = 1 'Единственный Фиксированный
Caption = "Решение систем линейных уравнений"
ClientHeight = 6315
ClientLeft = 4365
ClientTop = 2430
ClientWidth = 7815
BeginProperty Font
Name = "MS Sans Serif"
Size = 12
Charset = 204
Weight = 700
Underline = 0 'False
Italic = -1 'True
Strikethrough = 0 'False
EndProperty
LinkTopic = "Форма1"
MaxButton = 0 'False
MinButton = 0 'False
ScaleHeight = 6315
ScaleWidth = 7815
Begin VB.TextBox txtMOMZ
Alignment = 2 'Выравнивание по Центру
BeginProperty Font
Name = "Times New Roman"
Size = 15.75
Charset = 204
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
Height = 375
Left = 3960
TabIndex = 45
Top = 5520
Width = 975
End
Begin VB.TextBox txtMOMY
Alignment = 2 'Выравнивание по Центру
BeginProperty Font
Name = "Times New Roman"
Size = 15.75
Charset = 204
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 2640
TabIndex = 44
Top = 5520
Width = 975
End
Begin VB.TextBox txtMOMX
Alignment = 2 'Выравнивание по Центру
BeginProperty DataFormat
Type = 1
Format = "0,0000"
HaveTrueFalseNull= 0
FirstDayOfWeek = 0
FirstWeekOfYear = 0
LCID = 1049
SubFormatType = 1
EndProperty
BeginProperty Font
Name = "Times New Roman"
Size = 15.75
Charset = 204
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 1320
TabIndex = 43
Top = 5520
Width = 975
End
Begin VB.TextBox txtMGZ
Alignment = 2 'Выравнивание по Центру
BeginProperty Font
Name = "Times New Roman"
Size = 15.75
Charset = 204
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 3960
TabIndex = 42
Top = 4800
Width = 975
End
Begin VB.TextBox txtMGY
Alignment = 2 'Выравнивание по Центру
BeginProperty Font
Name = "Times New Roman"
Size = 15.75
Charset = 204
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 2640
TabIndex = 41
Top = 4800
Width = 975
End
Begin VB.TextBox txtMGX
Alignment = 2 'Выравнивание по Центру
BeginProperty DataFormat
Type = 1
Format = "0,0000"
HaveTrueFalseNull= 0
FirstDayOfWeek = 0
FirstWeekOfYear = 0
LCID = 1049
SubFormatType = 1
EndProperty
BeginProperty Font
Name = "Times New Roman"
Size = 15.75
Charset = 204
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 1320
TabIndex = 40
Top = 4800
Width = 975
End
Begin VB.TextBox txtMKZ
Alignment = 2 'Выравнивание по Центру
BeginProperty Font
Name = "Times New Roman"
Size = 15.75
Charset = 204
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 3960
TabIndex = 39
Top = 4080
Width = 975
End
Begin VB.TextBox txtMKY
Alignment = 2 'Выравнивание по Центру
BeginProperty Font
Name = "Times New Roman"
Size = 15.75
Charset = 204
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 2640
TabIndex = 38
Top = 4080
Width = 975
End
Begin VB.TextBox txtMKX
Alignment = 2 'Выравнивание по Центру
BeginProperty DataFormat
Type = 1
Format = "0,0000"
HaveTrueFalseNull= 0
FirstDayOfWeek = 0
FirstWeekOfYear = 0
LCID = 1049
SubFormatType = 1
EndProperty
DataMember = "0,0000"
BeginProperty Font
Name = "Times New Roman"
Size = 15.75
Charset = 204
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 1320
Locked = -1 'True
TabIndex = 37
Top = 4080
Width = 975
End
Begin VB.TextBox txtA33
Alignment = 2 'Выравнивание по Центру
BeginProperty DataFormat
Type = 1
Format = "0,000"
HaveTrueFalseNull= 0
FirstDayOfWeek = 0
FirstWeekOfYear = 0
LCID = 1049
SubFormatType = 1
EndProperty
BeginProperty Font
Name = "Times New Roman"
Size = 14.25
Charset = 204
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 4440
TabIndex = 30
Top = 2640
Width = 1095
End
Begin VB.TextBox txtA23
Alignment = 2 'Выравнивание по Центру
BeginProperty DataFormat
Type = 1
Format = "0,000"
HaveTrueFalseNull= 0
FirstDayOfWeek = 0
FirstWeekOfYear = 0
LCID = 1049
SubFormatType = 1
EndProperty
BeginProperty Font
Name = "Times New Roman"
Size = 14.25
Charset = 204
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 4440
TabIndex = 29
Top = 2040
Width = 1095
End
Begin VB.TextBox txtA13
Alignment = 2 'Выравнивание по Центру
BeginProperty DataFormat
Type = 1
Format = "0,000"
HaveTrueFalseNull= 0
FirstDayOfWeek = 0
FirstWeekOfYear = 0
LCID = 1049
SubFormatType = 1
EndProperty
BeginProperty Font
Name = "Times New Roman"
Size = 14.25
Charset = 204
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 4440
TabIndex = 28
Top = 1440
Width = 1095
End
Begin VB.TextBox txtA32
Alignment = 2 'Выравнивание по Центру
BeginProperty DataFormat
Type = 1
Format = "0,000"
HaveTrueFalseNull= 0
FirstDayOfWeek = 0
FirstWeekOfYear = 0
LCID = 1049
SubFormatType = 1
EndProperty
BeginProperty Font
Name = "Times New Roman"
Size = 14.25
Charset = 204
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 2520
TabIndex = 24
Top = 2640
Width = 1095
End
Begin VB.TextBox txtA22
Alignment = 2 'Выравнивание по Центру
BeginProperty DataFormat
Type = 1
Format = "0,000"
HaveTrueFalseNull= 0
FirstDayOfWeek = 0
FirstWeekOfYear = 0
LCID = 1049
SubFormatType = 1
EndProperty
BeginProperty Font
Name = "Times New Roman"
Size = 14.25
Charset = 204
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 2520
TabIndex = 23
Top = 2040
Width = 1095
End
Begin VB.TextBox txtA12
Alignment = 2 'Выравнивание по Центру
BeginProperty DataFormat
Type = 1
Format = "0,000"
HaveTrueFalseNull= 0
FirstDayOfWeek = 0
FirstWeekOfYear = 0
LCID = 1049
SubFormatType = 1
EndProperty
BeginProperty Font
Name = "Times New Roman"
Size = 14.25
Charset = 204
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 2520
TabIndex = 22
Top = 1440
Width = 1095
End
Begin VB.CommandButton cmdExit
Caption = "Выход"
BeginProperty Font
Name = "Times New Roman"
Size = 14.25
Charset = 204
Weight = 700
Underline = 0 'False
Italic = -1 'True
Strikethrough = 0 'False
EndProperty
Height = 495
Left = 5400
TabIndex = 18
Top = 5520
Width = 2055
End
Begin VB.CommandButton cmdCount
Caption = "Вычислить"
BeginProperty Font
Name = "Times New Roman"
Size = 14.25
Charset = 204
Weight = 700
Underline = 0 'False
Italic = -1 'True
Strikethrough = 0 'False
EndProperty
Height = 495
Left = 5400
TabIndex = 17
Top = 4680
Width = 2055
End
Begin VB.CommandButton cmdClean
Caption = "Очистить"
BeginProperty Font
Name = "Times New Roman"
Size = 14.25
Charset = 204
Weight = 700
Underline = 0 'False
Italic = -1 'True
Strikethrough = 0 'False
EndProperty
Height = 495
Left = 5400
TabIndex = 16
Top = 3840
Width = 2055
End
Begin VB.TextBox txtB3
Alignment = 2 'Выравнивание по Центру
BeginProperty DataFormat
Type = 1
Format = "0,000"
HaveTrueFalseNull= 0
FirstDayOfWeek = 0
FirstWeekOfYear = 0
LCID = 1049
SubFormatType = 1
EndProperty
BeginProperty Font
Name = "Times New Roman"
Size = 14.25
Charset = 204
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 6480
TabIndex = 12
Top = 2640
Width = 1095
End
Begin VB.TextBox txtB2
Alignment = 2 'Выравнивание по Центру
BeginProperty DataFormat
Type = 1
Format = "0,000"
HaveTrueFalseNull= 0
FirstDayOfWeek = 0
FirstWeekOfYear = 0
LCID = 1049
SubFormatType = 1
EndProperty
BeginProperty Font
Name = "Times New Roman"
Size = 14.25
Charset = 204
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 6480
TabIndex = 11
Top = 2040
Width = 1095
End
Begin VB.TextBox txtB1
Alignment = 2 'Выравнивание по Центру
BeginProperty DataFormat
Type = 1
Format = "0,000"
HaveTrueFalseNull= 0
FirstDayOfWeek = 0
FirstWeekOfYear = 0
LCID = 1049
SubFormatType = 1
EndProperty
BeginProperty Font
Name = "Times New Roman"
Size = 14.25
Charset = 204
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 6480
TabIndex = 10
Top = 1440
Width = 1095
End
Begin VB.TextBox txtA31
Alignment = 2 'Выравнивание по Центру
BeginProperty DataFormat
Type = 1
Format = "0,000"
HaveTrueFalseNull= 0
FirstDayOfWeek = 0
FirstWeekOfYear = 0
LCID = 1049
SubFormatType = 1
EndProperty
BeginProperty Font
Name = "Times New Roman"
Size = 14.25
Charset = 204
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 600
TabIndex = 9
Top = 2640
Width = 1095
End
Begin VB.TextBox txtA21
Alignment = 2 'Выравнивание по Центру
BeginProperty DataFormat
Type = 1
Format = "0,000"
HaveTrueFalseNull= 0
FirstDayOfWeek = 0
FirstWeekOfYear = 0
LCID = 1049
SubFormatType = 1
EndProperty
BeginProperty Font
Name = "Times New Roman"
Size = 14.25
Charset = 204
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 600
TabIndex = 8
Top = 2040
Width = 1095
End
Begin VB.TextBox txtA11
Alignment = 2 'Выравнивание по Центру
BeginProperty DataFormat
Type = 1
Format = "0,0000"
HaveTrueFalseNull= 0
FirstDayOfWeek = 0
FirstWeekOfYear = 0
LCID = 1049
SubFormatType = 1
EndProperty
BeginProperty Font
Name = "Times New Roman"
Size = 14.25
Charset = 204
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 600
TabIndex = 7
Top = 1440
Width = 1095
End
Begin VB.Line Строка3
X1 = 5760
X2 = 5760
Y1 = 1080
Y2 = 3360
End
Begin VB.Label Метка29
Caption = "Z"
BeginProperty Font
Name = "Times New Roman"
Size = 12
Charset = 204
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 255
Left = 4920
TabIndex = 36
Top = 1080
Width = 255
End
Begin VB.Label Метка28
Caption = "Y"
BeginProperty Font
Name = "Times New Roman"
Size = 12
Charset = 204
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 255
Left = 3000
TabIndex = 35
Top = 1080
Width = 255
End
Begin VB.Label Метка27
Caption = "X"
BeginProperty Font
Name = "Times New Roman"
Size = 12
Charset = 204
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 1080
TabIndex = 34
Top = 1080
Width = 255
End
Begin VB.Label Метка23
Caption = "Z"
BeginProperty Font
Name = "Times New Roman"
Size = 12
Charset = 204
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 255
Left = 4440
TabIndex = 33
Top = 3480
Width = 255
End
Begin VB.Label Метка22
Caption = "Y"
BeginProperty Font
Name = "Times New Roman"
Size = 12
Charset = 204
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 255
Left = 3120
TabIndex = 32
Top = 3480
Width = 255
End
Begin VB.Label Метка21
Caption = "X"
BeginProperty Font
Name = "Times New Roman"
Size = 12
Charset = 204
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 255
Left = 1800
TabIndex = 31
Top = 3480
Width = 255
End
Begin VB.Label Метка20
Caption = "А33"
BeginProperty Font
Name = "Times New Roman"
Size = 12
Charset = 204
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 3840
TabIndex = 27
Top = 2640
Width = 375
End
Begin VB.Label Метка19
Caption = "А23"
BeginProperty Font
Name = "Times New Roman"
Size = 12
Charset = 204
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 3840
TabIndex = 26
Top = 2040
Width = 375
End
Begin VB.Label Метка18
Caption = "А13"
BeginProperty Font
Name = "Times New Roman"
Size = 12
Charset = 204
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 3840
TabIndex = 25
Top = 1440
Width = 375
End
Begin VB.Label Метка17
Caption = "А32"
BeginProperty Font
Name = "Times New Roman"
Size = 12
Charset = 204
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 1920
TabIndex = 21
Top = 2640
Width = 375
End
Begin VB.Label Метка16
Caption = "А22"
BeginProperty Font
Name = "Times New Roman"
Size = 12
Charset = 204
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 1920
TabIndex = 20
Top = 2040
Width = 375
End
Begin VB.Label Метка15
Caption = "А12"
BeginProperty Font
Name = "Times New Roman"
Size = 12
Charset = 204
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 1920
TabIndex = 19
Top = 1440
Width = 375
End
Begin VB.Line Строка2
X1 = 0
X2 = 7800
Y1 = 3360
Y2 = 3360
End
Begin VB.Label Метка12
Alignment = 2 'Выравнивание по Центру
Caption = "Метод обратной матрицы"
BeginProperty Font
Name = "Times New Roman"
Size = 11.25
Charset = 204
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 855
Left = 0
TabIndex = 15
Top = 5280
Width = 1095
End
Begin VB.Label Метка11
Alignment = 2 'Выравнивание по Центру
Caption = "Метод Гаусса"
BeginProperty Font
Name = "Times New Roman"
Size = 11.25
Charset = 204
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 615
Left = 0
TabIndex = 14
Top = 4560
Width = 1095
End
Begin VB.Label Метка10
Alignment = 2 'Выравнивание по Центру
Caption = "Метод Крамера"
BeginProperty Font
Name = "Times New Roman"
Size = 11.25
Charset = 204
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 615
Left = 0
TabIndex = 13
Top = 3840
Width = 1095
End
Begin VB.Label Метка7
Caption = "В3"
BeginProperty Font
Name = "Times New Roman"
Size = 12
Charset = 204
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 6000
TabIndex = 6
Top = 2640
Width = 255
End
Begin VB.Label Метка6
Caption = "В2"
BeginProperty Font
Name = "Times New Roman"
Size = 12
Charset = 204
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 6000
TabIndex = 5
Top = 2040
Width = 255
End
Begin VB.Label Метка5
Caption = "В1"
BeginProperty Font
Name = "Times New Roman"
Size = 12
Charset = 204
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 6000
TabIndex = 4
Top = 1440
Width = 255
End
Begin VB.Label Метка4
Caption = "А31"
BeginProperty Font
Name = "Times New Roman"
Size = 12
Charset = 204
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 0
TabIndex = 3
Top = 2640
Width = 375
End
Begin VB.Label Метка3
Caption = "А21"
BeginProperty Font
Name = "Times New Roman"
Size = 12
Charset = 204
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 0
TabIndex = 2
Top = 2040
Width = 375
End
Begin VB.Label Метка2
Caption = "А11"
BeginProperty Font
Name = "Times New Roman"
Size = 12
Charset = 204
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 0
TabIndex = 1
Top = 1440
Width = 375
End
Begin VB.Label Метка1
Caption = $"frmSlay.frx":0000
BeginProperty Font
Name = "Times New Roman"
Size = 12
Charset = 204
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 855
Left = 120
TabIndex = 0
Top = 120
Width = 7575
End
End
Attribute VB_Name = "frmAriel"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Private Sub cmdClean_Click()
Dim с As Byte
с = MsgBox("Хотите очистить?", 33, "Очистка")
If с = 1 Then
txtA11.Text = ""
txtA12.Text = ""
txtA13.Text = ""
txtA21.Text = ""
txtA22.Text = ""
txtA23.Text = ""
txtA31.Text = ""
txtA32.Text = ""
txtA33.Text = ""
txtB1.Text = ""
txtB2.Text = ""
txtB3.Text = ""
txtMKX.Text = ""
txtMGX.Text = ""
txtMOMX.Text = ""
txtMKY.Text = ""
txtMGY.Text = ""
txtMOMY.Text = ""
txtMKZ.Text = ""
txtMGZ.Text = ""
txtMOMZ.Text = ""
End If
End Sub
Private Sub cmdCount_Click()
If (Val(txtA11) * Val(txtA22) * Val(txtA33) + Val(txtA12) * Val(txtA23) * Val(txtA31) + Val(txtA21) * Val(txtA32) * Val(txtA13) - Val(txtA13) * Val(txtA22) * Val(txtA31) - Val(txtA12) * Val(txtA21) * Val(txtA33) - Val(txtA23) * Val(txtA32) * Val(txtA11)) = 0 Then
Dim g As Byte
g = MsgBox("Решить данную систему методом Крамера и методом обратной матрицы невозможно", 32, "Определитель системы равен 0")
Else
ds = (Val(txtA11) * Val(txtA22) * Val(txtA33) + Val(txtA12) * Val(txtA23) * Val(txtA31) + Val(txtA21) * Val(txtA32) * Val(txtA13) - Val(txtA13) * Val(txtA22) * Val(txtA31) - Val(txtA12) * Val(txtA21) * Val(txtA33) - Val(txtA23) * Val(txtA32) * Val(txtA11))
dx = (Val(txtB1) * Val(txtA22) * Val(txtA33) + Val(txtA12) * Val(txtA23) * Val(txtB3) + Val(txtB2) * Val(txtA32) * Val(txtA13) - Val(txtA13) * Val(txtA22) * Val(txtB3) - Val(txtA12) * Val(txtB2) * Val(txtA33) - Val(txtA23) * Val(txtA32) * Val(txtB1))
dy = (Val(txtA11) * Val(txtB2) * Val(txtA33) + Val(txtB1) * Val(txtA23) * Val(txtA31) + Val(txtA21) * Val(txtB3) * Val(txtA13) - Val(txtA13) * Val(txtB2) * Val(txtA31) - Val(txtB1) * Val(txtA21) * Val(txtA33) - Val(txtA23) * Val(txtB3) * Val(txtA11))
dz = (Val(txtA11) * Val(txtA22) * Val(txtB3) + Val(txtA12) * Val(txtB2) * Val(txtA31) + Val(txtA21) * Val(txtA32) * Val(txtB1) - Val(txtB1) * Val(txtA22) * Val(txtA31) - Val(txtA12) * Val(txtA21) * Val(txtB3) - Val(txtB2) * Val(txtA32) * Val(txtA11))
txtMKX.Text = (dx / ds)
txtMKY.Text = (dy / ds)
txtMKZ.Text = (dz / ds)
txtMOMX.Text = (((Val(txtA22) * Val(txtA33) - Val(txtA23) * Val(txtA32)) / ds) * Val(txtB1) + ((Val(txtA13) * Val(txtA32) - Val(txtA12) * Val(txtA33)) / ds) * Val(txtB2) + ((Val(txtA12) * Val(txtA23) - Val(txtA13) * Val(txtA22)) / ds) * Val(txtB3))
txtMOMY.Text = (((Val(txtA23) * Val(txtA31) - Val(txtA21) * Val(txtA33)) / ds) * Val(txtB1) + ((Val(txtA11) * Val(txtA33) - Val(txtA13) * Val(txtA31)) / ds) * Val(txtB2) + ((Val(txtA13) * Val(txtA21) - Val(txtA11) * Val(txtA23)) / ds) * Val(txtB3))
txtMOMZ.Text = (((Val(txtA21) * Val(txtA32) - Val(txtA22) * Val(txtA31)) / ds) * Val(txtB1) + ((Val(txtA12) * Val(txtA31) - Val(txtA11) * Val(txtA32)) / ds) * Val(txtB2) + ((Val(txtA11) * Val(txtA22) - Val(txtA12) * Val(txtA21)) / ds) * Val(txtB3))
End If
If Val(txtA11) = 0 Then
Dim gg As Byte
gg = MsgBox("Решить данную систему методом Гаусса невозможно. Поменяйте уравнения местами, и попробуйте снова", 48, "Коэффициент при х в первом уравнении равен 0")
Else
s1 = ((Val(txtB3) * Val(txtA11)) - (Val(txtB1) * Val(txtA31)))
s2 = ((Val(txtA22) * Val(txtA11)) - (Val(txtA12) * Val(txtA21)))
s3 = ((Val(txtB2) * Val(txtA11)) - (Val(txtB1) * Val(txtA21)))
s4 = ((Val(txtA32) * Val(txtA11)) - (Val(txtA12) * Val(txtA31)))
s5 = ((Val(txtA33) * Val(txtA11)) - (Val(txtA12) * Val(txtA31)))
s6 = s2
s7 = ((Val(txtA23) * Val(txtA11)) - (Val(txtA13) * Val(txtA21)))
s8 = s4
s12 = s1 * s2
s34 = s3 * s4
s56 = s5 * s6
s78 = s7 * s8
sh = s12 - s34
sz = s56 - s78
If sz = 0 Then
Dim с As Byte
с = MsgBox("Делить на ноль нельзя.", 48, "Ошибка")
Else
txtMGZ.Text = (sh / sz)
End If
sy1 = s3
sy2 = s2
sy3 = ((Val(txtA23) * Val(txtA11)) - (Val(txtA13) * Val(txtA21)))
sy4 = s2
sy12 = (sy1) / (sy2)
sy34 = (sy3) / (sy4)
txtMGY.Text = ((sy12) - ((sy34) * (sh / sz)))
sx1 = ((Val(txtB1)) / (Val(txtA11)))
sx2 = ((Val(txtA13)) / (Val(txtA11)))
sx3 = ((Val(txtA12)) / (Val(txtA11)))
txtMGX.Text = ((sx1) - ((sx2) * (sh / sz)) - ((sx3) * ((sy12) - ((sy34) * (sh / sz)))))
End If
End Sub
Private Sub cmdExit_Click()
Dim a As Byte
a = MsgBox("Хотите выйти?", 33, "Выход")
If a = 1 Then
End
End If
End Sub
Left = 600
TabIndex = 9
Top = 2640
Width = 1095
End
Begin VB.TextBox txtA21
Alignment = 2 'Выравнивание по Центру
BeginProperty DataFormat
Type = 1
Format = "0,000"
HaveTrueFalseNull= 0
FirstDayOfWeek = 0
FirstWeekOfYear = 0
LCID = 1049
SubFormatType = 1
EndProperty
BeginProperty Font
Name = "Times New Roman"
Size = 14.25
Charset = 204
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 600
TabIndex = 8
Top = 2040
Width = 1095
End
Begin VB.TextBox txtA11
Alignment = 2 'Выравнивание по Центру
BeginProperty DataFormat
Type = 1
Format = "0,0000"
HaveTrueFalseNull= 0
FirstDayOfWeek = 0
FirstWeekOfYear = 0
LCID = 1049
SubFormatType = 1
EndProperty
BeginProperty Font
Name = "Times New Roman"
Size = 14.25
Charset = 204
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 600
TabIndex = 7
Top = 1440
Width = 1095
End
Begin VB.Line Строка3
X1 = 5760
X2 = 5760
Y1 = 1080
Y2 = 3360
End
Begin VB.Label Метка29
Caption = "Z"
BeginProperty Font
Name = "Times New Roman"
Size = 12
Charset = 204
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 255
Left = 4920
TabIndex = 36
Top = 1080
Width = 255
End
Begin VB.Label Метка28
Caption = "Y"
BeginProperty Font
Name = "Times New Roman"
Size = 12
Charset = 204
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 255
Left = 3000
TabIndex = 35
Top = 1080
Width = 255
End
Begin VB.Label Метка27
Caption = "X"
BeginProperty Font
Name = "Times New Roman"
Size = 12
Charset = 204
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 1080
TabIndex = 34
Top = 1080
Width = 255
End
Begin VB.Label Метка23
Caption = "Z"
BeginProperty Font
Name = "Times New Roman"
Size = 12
Charset = 204
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 255
Left = 4440
TabIndex = 33
Top = 3480
Width = 255
End
Begin VB.Label Метка22
Caption = "Y"
BeginProperty Font
Name = "Times New Roman"
Size = 12
Charset = 204
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 255
Left = 3120
TabIndex = 32
Top = 3480
Width = 255
End
Begin VB.Label Метка21
Caption = "X"
BeginProperty Font
Name = "Times New Roman"
Size = 12
Charset = 204
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 255
Left = 1800
TabIndex = 31
Top = 3480
Width = 255
End
Begin VB.Label Метка20
Caption = "А33"
BeginProperty Font
Name = "Times New Roman"
Size = 12
Charset = 204
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 3840
TabIndex = 27
Top = 2640
Width = 375
End
Begin VB.Label Метка19
Caption = "А23"
BeginProperty Font
Name = "Times New Roman"
Size = 12
Charset = 204
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 3840
TabIndex = 26
Top = 2040
Width = 375
End
Begin VB.Label Метка18
Caption = "А13"
BeginProperty Font
Name = "Times New Roman"
Size = 12
Charset = 204
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 3840
TabIndex = 25
Top = 1440
Width = 375
End
Begin VB.Label Метка17
Caption = "А32"
BeginProperty Font
Name = "Times New Roman"
Size = 12
Charset = 204
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 1920
TabIndex = 21
Top = 2640
Width = 375
End
Begin VB.Label Метка16
Caption = "А22"
BeginProperty Font
Name = "Times New Roman"
Size = 12
Charset = 204
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 1920
TabIndex = 20
Top = 2040
Width = 375
End
Begin VB.Label Метка15
Caption = "А12"
BeginProperty Font
Name = "Times New Roman"
Size = 12
Charset = 204
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 1920
TabIndex = 19
Top = 1440
Width = 375
End
Begin VB.Line Строка2
X1 = 0
X2 = 7800
Y1 = 3360
Y2 = 3360
End
Begin VB.Label Метка12
Alignment = 2 'Выравнивание по Центру
Caption = "Метод обратной матрицы"
BeginProperty Font
Name = "Times New Roman"
Size = 11.25
Charset = 204
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 855
Left = 0
TabIndex = 15
Top = 5280
Width = 1095
End
Begin VB.Label Метка11
Alignment = 2 'Выравнивание по Центру
Caption = "Метод Гаусса"
BeginProperty Font
Name = "Times New Roman"
Size = 11.25
Charset = 204
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 615
Left = 0
TabIndex = 14
Top = 4560
Width = 1095
End
Begin VB.Label Метка10
Alignment = 2 'Выравнивание по Центру
Caption = "Метод Крамера"
BeginProperty Font
Name = "Times New Roman"
Size = 11.25
Charset = 204
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 615
Left = 0
TabIndex = 13
Top = 3840
Width = 1095
End
Begin VB.Label Метка7
Caption = "В3"
BeginProperty Font
Name = "Times New Roman"
Size = 12
Charset = 204
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 6000
TabIndex = 6
Top = 2640
Width = 255
End
Begin VB.Label Метка6
Caption = "В2"
BeginProperty Font
Name = "Times New Roman"
Size = 12
Charset = 204
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 6000
TabIndex = 5
Top = 2040
Width = 255
End
Begin VB.Label Метка5
Caption = "В1"
BeginProperty Font
Name = "Times New Roman"
Size = 12
Charset = 204
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 6000
TabIndex = 4
Top = 1440
Width = 255
End
Begin VB.Label Метка4
Caption = "А31"
BeginProperty Font
Name = "Times New Roman"
Size = 12
Charset = 204
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 0
TabIndex = 3
Top = 2640
Width = 375
End
Begin VB.Label Метка3
Caption = "А21"
BeginProperty Font
Name = "Times New Roman"
Size = 12
Charset = 204
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 0
TabIndex = 2
Top = 2040
Width = 375
End
Begin VB.Label Метка2
Caption = "А11"
BeginProperty Font
Name = "Times New Roman"
Size = 12
Charset = 204
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 0
TabIndex = 1
Top = 1440
Width = 375
End
Begin VB.Label Метка1
Caption = $"frmSlay.frx":0000
BeginProperty Font
Name = "Times New Roman"
Size = 12
Charset = 204
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 855
Left = 120
TabIndex = 0
Top = 120
Width = 7575
End
End
Attribute VB_Name = "frmAriel"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Private Sub cmdClean_Click()
Dim с As Byte
с = MsgBox("Хотите очистить?", 33, "Очистка")
If с = 1 Then
txtA11.Text = ""
txtA12.Text = ""
txtA13.Text = ""
txtA21.Text = ""
txtA22.Text = ""
txtA23.Text = ""
txtA31.Text = ""
txtA32.Text = ""
txtA33.Text = ""
txtB1.Text = ""
txtB2.Text = ""
txtB3.Text = ""
txtMKX.Text = ""
txtMGX.Text = ""
txtMOMX.Text = ""
txtMKY.Text = ""
txtMGY.Text = ""
txtMOMY.Text = ""
txtMKZ.Text = ""
txtMGZ.Text = ""
txtMOMZ.Text = ""
End If
End Sub
Private Sub cmdCount_Click()
If (Val(txtA11) * Val(txtA22) * Val(txtA33) + Val(txtA12) * Val(txtA23) * Val(txtA31) + Val(txtA21) * Val(txtA32) * Val(txtA13) - Val(txtA13) * Val(txtA22) * Val(txtA31) - Val(txtA12) * Val(txtA21) * Val(txtA33) - Val(txtA23) * Val(txtA32) * Val(txtA11)) = 0 Then
Dim g As Byte
g = MsgBox("Решить данную систему методом Крамера и методом обратной матрицы невозможно", 32, "Определитель системы равен 0")
Else
ds = (Val(txtA11) * Val(txtA22) * Val(txtA33) + Val(txtA12) * Val(txtA23) * Val(txtA31) + Val(txtA21) * Val(txtA32) * Val(txtA13) - Val(txtA13) * Val(txtA22) * Val(txtA31) - Val(txtA12) * Val(txtA21) * Val(txtA33) - Val(txtA23) * Val(txtA32) * Val(txtA11))
dx = (Val(txtB1) * Val(txtA22) * Val(txtA33) + Val(txtA12) * Val(txtA23) * Val(txtB3) + Val(txtB2) * Val(txtA32) * Val(txtA13) - Val(txtA13) * Val(txtA22) * Val(txtB3) - Val(txtA12) * Val(txtB2) * Val(txtA33) - Val(txtA23) * Val(txtA32) * Val(txtB1))
dy = (Val(txtA11) * Val(txtB2) * Val(txtA33) + Val(txtB1) * Val(txtA23) * Val(txtA31) + Val(txtA21) * Val(txtB3) * Val(txtA13) - Val(txtA13) * Val(txtB2) * Val(txtA31) - Val(txtB1) * Val(txtA21) * Val(txtA33) - Val(txtA23) * Val(txtB3) * Val(txtA11))
dz = (Val(txtA11) * Val(txtA22) * Val(txtB3) + Val(txtA12) * Val(txtB2) * Val(txtA31) + Val(txtA21) * Val(txtA32) * Val(txtB1) - Val(txtB1) * Val(txtA22) * Val(txtA31) - Val(txtA12) * Val(txtA21) * Val(txtB3) - Val(txtB2) * Val(txtA32) * Val(txtA11))
txtMKX.Text = (dx / ds)
txtMKY.Text = (dy / ds)
txtMKZ.Text = (dz / ds)
txtMOMX.Text = (((Val(txtA22) * Val(txtA33) - Val(txtA23) * Val(txtA32)) / ds) * Val(txtB1) + ((Val(txtA13) * Val(txtA32) - Val(txtA12) * Val(txtA33)) / ds) * Val(txtB2) + ((Val(txtA12) * Val(txtA23) - Val(txtA13) * Val(txtA22)) / ds) * Val(txtB3))
txtMOMY.Text = (((Val(txtA23) * Val(txtA31) - Val(txtA21) * Val(txtA33)) / ds) * Val(txtB1) + ((Val(txtA11) * Val(txtA33) - Val(txtA13) * Val(txtA31)) / ds) * Val(txtB2) + ((Val(txtA13) * Val(txtA21) - Val(txtA11) * Val(txtA23)) / ds) * Val(txtB3))
txtMOMZ.Text = (((Val(txtA21) * Val(txtA32) - Val(txtA22) * Val(txtA31)) / ds) * Val(txtB1) + ((Val(txtA12) * Val(txtA31) - Val(txtA11) * Val(txtA32)) / ds) * Val(txtB2) + ((Val(txtA11) * Val(txtA22) - Val(txtA12) * Val(txtA21)) / ds) * Val(txtB3))
End If
If Val(txtA11) = 0 Then
Dim gg As Byte
gg = MsgBox("Решить данную систему методом Гаусса невозможно. Поменяйте уравнения местами, и попробуйте снова", 48, "Коэффициент при х в первом уравнении равен 0")
Else
s1 = ((Val(txtB3) * Val(txtA11)) - (Val(txtB1) * Val(txtA31)))
s2 = ((Val(txtA22) * Val(txtA11)) - (Val(txtA12) * Val(txtA21)))
s3 = ((Val(txtB2) * Val(txtA11)) - (Val(txtB1) * Val(txtA21)))
s4 = ((Val(txtA32) * Val(txtA11)) - (Val(txtA12) * Val(txtA31)))
s5 = ((Val(txtA33) * Val(txtA11)) - (Val(txtA12) * Val(txtA31)))
s6 = s2
s7 = ((Val(txtA23) * Val(txtA11)) - (Val(txtA13) * Val(txtA21)))
s8 = s4
s12 = s1 * s2
s34 = s3 * s4
s56 = s5 * s6
s78 = s7 * s8
sh = s12 - s34
sz = s56 - s78
If sz = 0 Then
Dim с As Byte
с = MsgBox("Делить на ноль нельзя.", 48, "Ошибка")
Else
txtMGZ.Text = (sh / sz)
End If
sy1 = s3
sy2 = s2
sy3 = ((Val(txtA23) * Val(txtA11)) - (Val(txtA13) * Val(txtA21)))
sy4 = s2
sy12 = (sy1) / (sy2)
sy34 = (sy3) / (sy4)
txtMGY.Text = ((sy12) - ((sy34) * (sh / sz)))
sx1 = ((Val(txtB1)) / (Val(txtA11)))
sx2 = ((Val(txtA13)) / (Val(txtA11)))
sx3 = ((Val(txtA12)) / (Val(txtA11)))
txtMGX.Text = ((sx1) - ((sx2) * (sh / sz)) - ((sx3) * ((sy12) - ((sy34) * (sh / sz)))))
End If
End Sub
Private Sub cmdExit_Click()
Dim a As Byte
a = MsgBox("Хотите выйти?", 33, "Выход")
If a = 1 Then
End
End If
End Sub
Польза введения расчетов.
Огромное количество численных методов ставит актуальной задачей не столько создание новых, сколько исследование и классификацию старых, выявление лучших. Анализ влияния ошибок показал, что между лучшими методами нет принципиальной разницы с точки зрения устойчивости к ошибкам округления. Создание мощных компьютеров существенно ослабило значение различия между методами (в таких характеристиках, как объём требуемой памяти, количество арифметических операций). В этих условия наиболее предпочтительными становятся те методы, которые не очень отличаются от лучших по скорости и удобству реализации на компьютерах, позволяют решать широкий класс задач как хорошо, так и плохо обусловленных и давать при этом оценку точности вычислительного решения.
В MathCAD и Excel численные методы представляют собой те же самые общепринятые ручные расчёты, но выполняемые не человеком, а компьютером, что понижает возможность ошибки до нуля. Программа на Visual Basic намного упрощает задачу. С помощью единожды созданной программы можно решать системы линейных уравнений, вводя минимум значений. Также эта программа может быть использована не только вами, но и простыми пользователями.
Огромное количество численных методов ставит актуальной задачей не столько создание новых, сколько исследование и классификацию старых, выявление лучших. Анализ влияния ошибок показал, что между лучшими методами нет принципиальной разницы с точки зрения устойчивости к ошибкам округления. Создание мощных компьютеров существенно ослабило значение различия между методами (в таких характеристиках, как объём требуемой памяти, количество арифметических операций). В этих условия наиболее предпочтительными становятся те методы, которые не очень отличаются от лучших по скорости и удобству реализации на компьютерах, позволяют решать широкий класс задач как хорошо, так и плохо обусловленных и давать при этом оценку точности вычислительного решения.
В MathCAD и Excel численные методы представляют собой те же самые общепринятые ручные расчёты, но выполняемые не человеком, а компьютером, что понижает возможность ошибки до нуля. Программа на Visual Basic намного упрощает задачу. С помощью единожды созданной программы можно решать системы линейных уравнений, вводя минимум значений. Также эта программа может быть использована не только вами, но и простыми пользователями.
III. Литература
5) Калиткин Н.Н. и др. Численные методы. М.: Наука, 1982
6) Турчак Л.И. Основы численных методов. М.: Наука, 1987
7) Дьяконов В.П. Система MathCAD. М.: Радио и связь, 1993
1) М. Додж, К. Кината, К. Стинсон "Эффективная работа в Microsoft Excel 97", издательство "Питер"; Санкт-Петербург, 1998г.
2) Е.К. Овчаренко, О.П. Ильина, Е.В. Балыбердин "Финансово - экономические расчеты в Excel", Москва, 1999 г.
3) Йорг Шиб, Excel 7,0: Сотни полезных рецептов, Дюссельдорф-Киев-Москва- Санкт-Петербург, 1997 г.
4) Симонович С.В. и др. Информатика Базовый курс: Учеб, для технических вузов. СПБ: Изд. «Питер», 2004.–640с 5) Калиткин Н.Н. и др. Численные методы. М.: Наука, 1982
6) Турчак Л.И. Основы численных методов. М.: Наука, 1987
7) Дьяконов В.П. Система MathCAD. М.: Радио и связь, 1993