2024
.pdfРис. 29. Реализация метода простой итерации в Mathcad
Перед началом решения исходную систему уравнений привели к виду, удобному для итераций (матрицы и ), затем вычислили нормы матрицы для проверки условия сходимости метода простой итерации, указали число итераций, которые необходимо выполнить (переменная n), задали начальное приближение X 0 , записали формулу пересчета неизвестных в матричном виде и вывели последний столбец, в котором хранится полученное решение.
3. ЛАБОРАТОРНОЕ ЗАДАНИЕ
Задание 1. Решить системы линейных уравнений из табл. 15 методом Гаусса и простой итерации. Обосновать выбор метода для каждой системы.
91
Таблица 15
Вариант |
Система уравнений №1 |
Система уравнений №2 |
||||||||
|
4x1 |
2x2 |
3x3 |
4 |
10x1 2x2 3x3 4 |
|||||
1 |
|
5x2 4x3 2 |
|
|
|
|
|
|||
x1 |
x1 9x2 4x3 2 |
|||||||||
|
|
|
5x2 |
6x3 5 |
|
|
5 |
|||
|
3x1 |
3x1 5x2 8x3 |
||||||||
|
8x1 2x2 3x3 9 |
10x1 2x2 3x3 |
5 |
|||||||
2 |
|
|
7x2 |
4x3 |
5 |
|
|
|
|
2 |
5x1 |
0,1x1 9x2 0,8x3 |
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
1x1 2x2 6x3 5 |
x1 5x2 7x3 9 |
|
|||||||
|
x1 4x2 7x3 3 |
9x1 2x2 3x3 1 |
||||||||
3 |
|
|
|
|
|
|
|
2 |
||
4x1 7x2 2x3 2 |
4x1 7x2 x3 |
|||||||||
|
|
2x2 x3 1 |
|
|
3 |
|||||
|
7x1 |
x1 5x2 8x3 |
||||||||
|
3x1 6x2 9x3 8 |
7x1 2x2 2x3 7 |
||||||||
4 |
|
7x2 |
x3 7 |
|
|
|
|
|
||
6x1 |
4x1 6x2 x3 20 |
|||||||||
|
|
x2 5x3 10 |
|
8x3 |
4 |
|||||
|
9x1 |
2x1 5x2 |
||||||||
|
9x1 10x2 |
7x3 |
8 |
8x1 2x2 2x3 |
7 |
|||||
5 |
|
|
4x2 |
5x3 |
6 |
|
|
|
|
9 |
10x1 |
0,8x1 10x2 x3 |
|||||||||
|
|
5x2 |
9x3 1 |
|
|
|
3 |
|||
|
7x1 |
2x1 5x2 6x3 |
||||||||
|
8x1 2x2 |
3x3 |
9 |
12x1 2x2 0,4x3 |
5 |
|||||
6 |
|
|
2x2 |
9x3 |
4 |
|
x3 |
7 |
||
7x1 |
0,8x1 10x2 |
|||||||||
|
|
|
7x2 |
3x3 |
6 |
|
|
|
3 |
|
|
3x1 |
2x1 1,7x2 8x3 |
||||||||
|
2x1 5x2 |
x3 2 |
9x1 2x2 7x3 |
4,3 |
||||||
7 |
|
|
2x2 |
6x3 5 |
|
|
|
|
7 |
|
9x1 |
0,4x1 7,8x2 x3 |
|||||||||
|
|
|
|
|
1 |
|
8x3 |
3,4 |
||
|
10x1 4x2 8x3 |
2x1 1,7x2 |
||||||||
|
10x1 x2 |
x3 3 |
8,1x1 2x2 |
4,1x3 6 |
||||||
8 |
|
|
2x2 |
6x3 |
8 |
|
|
|
1,7 |
|
7x1 |
2x1 6x2 4x3 |
|||||||||
|
|
|
4x2 |
4x3 |
5 |
|
|
|
|
|
|
8x1 |
2x1 1x2 11x3 8 |
Задание 2. Проверить решение систем уравнений с помощью встроенных средств Mathcad.
92
Задание 3. Реализовать в Mathcad методы решения задач линейной алгебры из табл. 16.
|
|
|
Таблица 16 |
|
|
|
|
|
|
№ |
Название метода |
Варианты |
Варианты |
|
1, 3, 5, 7 |
2, 4, 6, 8 |
|
||
|
|
|
||
1 |
Метод обратной матрицы |
+ |
+ |
|
2 |
Метод Крамера |
+ |
+ |
|
3 |
Метод Гаусса для построения |
+ |
|
|
обратной матрицы |
|
|
||
4 |
Метод Холецкого |
|
+ |
|
4.УКАЗАНИЯ ПО ОФОРМЛЕНИЮ ОТЧЕТА
Отчет должен содержать:
- наименование и цель работы; - краткие теоретические сведения;
- задание на лабораторную работу; - результаты выполнения лабораторной работы.
5.КОНТРОЛЬНЫЕ ВОПРОСЫ
1.Какие встроенные средства для решения систем линейных уравнений есть Mathcad?
2.Как найти решение системы линейных уравнений с помощью вычислительного блока Given/Find?
3.Какие функции Mathcad используются для слияния и разбиения матриц?
4.Какие встроенные функции Mathcad предназначены для решения задач линейной алгебры?
93
Лабораторная работа № 3 РЕШЕНИЕ НЕЛИНЕЙНЫХ УРАВНЕНИЙ
СПОМОЩЬЮ MATHCAD
1.ОБЩИЕ УКАЗАНИЯ ПО ВЫПОЛНЕНИЮ ЛАБОРАТОРНОЙ РАБОТЫ
1.1.Цель работы
Изучение основных методов решения нелинейных уравнений; получение практических навыков написания функций на встроенном в Mathcad языке программирования.
1.2. Используемое оборудование и программное обеспечение
Для выполнения лабораторной работы требуется ПЭВМ типа IBM PC с установленной ОС Windows XP и выше, математический пакет Mathcad 14 и выше.
2. МЕТОДИЧЕСКИЕ УКАЗАНИЯ ПО ВЫПОЛНЕНИЮ ЛАБОРАТОРНОЙ РАБОТЫ
2.1. Встроенные средства Mathcad для решения нелинейных уравнений
Для решения нелинейных уравнений вида F(x) 0 в Mathcad есть следующие средства:
1)функция root();
2)вычислительный блок Given/Find.
Функция root() имеет следующий формат вызова: root(f(x), x, a, b)
где f(x) - уравнение, которое необходимо решить, x – искомая переменная, a, b – необязательные параметры, задающие границы интервала поиска; если интервал не указывается, то перед вызовом функции root() нужно задать начальное значение переменной x.
Пример использования функции root() с различными наборами параметров показан на рис. 30. В первом случае
94
указывается диапазон, на котором производится поиск корней уравнения, во втором – перед вызовом функции задается начальное приближение.
Рис. 30. Решение нелинейного уравнения с помощью функции root()
При задании интервала поиска внутри функции root() необходимо помнить о двух ее особенностях. Во-первых, внутри интервала не должно находиться более одного корня. иначе будет найдет одни из них, заранее неизвестно, какой именно. Во-вторых, значения исходной функции в граничных точках диапазона должны иметь разные знаки, иначе будет выдано сообщение об ошибке.
Пример использования вычислительного блока Given/Find для решения нелинейного уравнения показан на рис. 31.
Рис. 31. Решение нелинейного уравнения с помощью вычислительного блока Given/Find
95
И функция root(), и вычислительный блок Given/Find предназначены для нахождения только одного корня уравнения. Для поиска остальных корней необходимо повторное решение уравнения с другими начальными значениями неизвестных.
2.2. Программирование в Mathcad
Кроме большого числа встроенных средств, позволяющих автоматизировать решение разнообразных вычислительных задач, Mathcad предоставляет возможность создания пользовательских функций с помощью упрощенного языка программирования. Все элементы этого языка доступны с панели инструментов Программирование (рис. 32).
Рис. 32. Панель инструментов Программирование
Создание функций в Mathcad имеет следующие особенности:
1)ввод всех операторов возможет только с панели Программирование (а не набором с клавиатуры);
2)вместо знака присваивания (:=) внутри функции используется оператор локального определения ;
3)вместо знака равенства (=) в условиях используется соответствующий логический оператор с панели Булева алгебра;
4)функция возвращает результат выполнения последнего оператора; при необходимости в последней строке
96
функции указывается имя переменной (или выражение), значение которой необходимо вернуть.
Синтаксис используемых в Mathcad операторов программирования и их описание приведены в табл. 17.
Таблица 17
Формат
Название и описание оператора программирования
оператора
Оператор Add Line добавляет новую строку
-
программы; место добавления строки зависит от положения указателя; изменить положение указателя можно с помощью клавиши Пробел
Локальное присваивание – вычисляет выражение y и присваивает его значение локальной переменной x
Операторы if и otherwise – если условие x верно, то выполняется оператор y, иначе выполняется z; вызов otherwise после if необязателен; перед otherwise может быть несколько операторов if, в этом случае otherwise выполнится, если все предыдущие условия неверны
Цикл for – выполняет оператор z для каждого значения x из диапазона y
Цикл while – выполняет оператор y до тех пор, пока верно условие x; возвращает значение, вычисленное в цикле на последней итерации
Оператор break – прерывает выполнение цикла и возвращает последнее вычисленное значение
Оператор continue – пропускает оставшуюся часть тела цикла и переходит к выполнению следующей итерации
Оператор return – прерывает выполнение функции и возвращает значение x
Оператор on error - если выполнение оператора y приводит к возникновению ошибки, то возвращает значение x, иначе возвращает y; если нужно, чтобы функция выдавала стандартное сообщение об ошибке при каком-либо условии, то можно вместо оператора on error использовать функцию error(s), где s – строка сообщения
Пример функции, реализующей метод половинного деления для решения нелинейного уравнения, приведен на рис. 33.
97
Рис. 33. Функция для решения нелинейного уравнения методом половинного деления
У функции HD() четыре аргумента: функция, определяющая уравнение; левая и правая границы диапазона, на котором ведется поиск корня, и точность вычисления корня уравнения.
Первыми двумя командами в теле функции определяются локальные переменные, задающие границы диапазона, на котором находится искомое решение. Вначале они совпадают со значениями левой и правой границ исходного диапазона. Далее следует условный оператор if, проверяющий неположительность произведения значений функции на границах диапазона. Если условие выполняется, то запускается оператор цикла while для поиска решения с заданной точностью, иначе выводится сообщение об ошибке.
98
2.3. Определение времени работы алгоритма
При сравнении различных алгоритмов важным параметром является время, затрачиваемое на поиск решения. В Mathcad для оценки времени работы алгоритма может использоваться функция time(x), возвращающая текущее системное время, где х – произвольный параметр, не влияющий на работу функции.
Для запуска счетчиков времени необходимо подготовить документ с вычислениями и выполнить команду Инструменты / Вычислить / Пересчитать документ. Пример определения времени вычислений с помощью функции time() приведен на рис. 34.
Рис. 34. Пример использования функции time()
3. ЛАБОРАТОРНОЕ ЗАДАНИЕ
Задание 1. Решить нелинейное уравнение из табл. 18: а) с помощью графика определить отрезок,
содержащий корень уравнения; б) найти корень уравнения с помощью функции,
реализующей метод половинного деления;
в) проверить решение с помощью функции root() и
блока Given/Find.
99
Таблица 18
Вариант |
Уравнение |
|||
1 |
ex 1 x3 x |
|||
|
1 |
|
||
2 |
x |
|
|
|
3 sin(3.6x) |
||||
|
|
3arccos x 1 0.3x3
40.25x3 x 2
|
|
1 x |
2 |
|
|
|
5 |
|
|
|
x |
||
|
|
|
||||
arccos |
|
2 |
|
|
||
|
|
1 x |
|
2 |
||
|
|
|
|
|
63x 4ln x 5
7x4 2x3 x2 12x 5
8x4 14x2 40x 75
Задание 2. На встроенном языке программирования написать функции для решения нелинейного уравнения методами хорд и касательных.
Задание 3. Сравнить все методы решения нелинейного уравнения по времени вычислений.
4.УКАЗАНИЯ ПО ОФОРМЛЕНИЮ ОТЧЕТА
Отчет должен содержать:
- наименование и цель работы; - краткие теоретические сведения;
- задание на лабораторную работу; - результаты выполнения лабораторной работы.
5.КОНТРОЛЬНЫЕ ВОПРОСЫ
1.Какие встроенные функции для решения нелинейных уравнений есть в Mathcad?
2.Какие элементы программирования доступны в
Mathcad?
100