Лабораторная работа №4. Mathcad.
Решение уравнений

Цель работы: Получить навыки решения алгебраических уравнений средствами системы Mathcad.

 

 

 

Справочный материал и примеры

Система Mathcad обладает широкими возможностями численного решения уравнений.

 

Функция root, блоки Given…Find, Given…Minerr

В ходе численного решения обычно выделяют два этапа:

·  отделение корней − определение интервала нахождения каждого корня или определение приблизительного значения корня. В системе Mathcad наиболее наглядным будет отделение корней уравнения графическим способом;

·  уточнение корней − нахождение численного значения корня с указанной точностью.

Точность нахождения корня устанавливается с помощью системной переменной TOL (Convergence Tolerance − Допуск сходимости), которая по умолчанию равна 10-3. Чем меньше значение TOL, тем точнее, вообще говоря, находится корень уравнения. Однако оптимальным является TOL = 10-5. Переопределить значение TOL можно в окне математических свойств документа Math Options на вкладке Build-In Variables (Встроенные переменные) или присваиванием, например, .

Для решения одного уравнения с одной неизвестной предназначена встроенная функция root, которая в общем виде задается

root(f(x), x, [a, b])

и возвращает значение переменной x, при котором функция f(x) обращается в ноль. Аргументы функции root:

·  f(x) – функция левой части уравнения f(x) = 0;

·  x – переменная, относительно которой требуется решить уравнение;

·  a, b (необязательные) – действительные числа, такие что a < b, причем на интервале [a, b] находится только один корень.

Если функция root не может найти корни уравнения, то рекомендуется уточнить начальное приближение по графику, изменить границы интервала [ab] нахождения корня или увеличить значение системной переменной TOL.

 

Для решения уравнений используются функции Find или Minerr. Они входят в состав вычислительного блока, который включает в себя ключевое слово Given, набор уравнений и неравенств и завершается одной из указанных вычисляющих функций в составе какого-нибудь выражения.

Функция

Find(x1, x2, …)

возвращает значения неизвестных x1, x2, … , обращающих уравнения в верные тождества, т. е. возвращает точное решение системы уравнений или одного уравнения в частном случае.

Если в результате поиска не может быть получено решение с заданной точностью, то функция Find выдает сообщение об ошибке. В этом случае можно использовать функцию

Minerr(x1, x2, …),

возвращающую приближенное решение одного уравнения. При использовании minerr необходимо производить дополнительную проверку достоверности результатов решения.

Порядок применения блоков GivenFind, GivenMinerr для численного решения уравнений:

1  Всем неизвестным, входящим в систему, задается начальное приближение.

2  При необходимости присваиваются требуемые значения системным переменным TOL и CTOL (Constraint Tolerance − Допуск ограничения).

3  Печатается ключевое слово Given, которое указывает Mathcad, что далее следует система уравнений.

4    Задаются уравнения и ограничения на поиск решения в виде неравенств (если они имеются) в любом порядке, каждое в отдельном формульном блоке, причем для записи используются операторы отношения палитры Boolean (Логические). Допускается использование двусторонних неравенств вида a ≤ x ≤ b.

5  Применяется функция Find или Minerr в составе какого-нибудь выражения. В качестве аргументов через запятую перечисляются имена входящих в систему переменных в том порядке, в котором должны быть расположены в ответе соответствующие им корни.

6  В случае использования функции Minerr выполняется проверка.

Внутри блока решения недопустимы следующие операции и выражения:

·  ранжированные переменные;

·  выражения, содержащие знак ≠;

·  локальное (:=) или глобальное (≡) определение переменных и функций, за исключением выражения, в состав которого входит функция Find или Minerr;

·  другой блок решения. Каждый блок должен содержать только одно слово Given и одну решающую функцию.

 

В случае появления ошибки, означающей, что решение не было найдено, рекомендуется изменить начальное приближение или значения системных переменных TOL и CTOL.

 

 

 

Пример к заданию 1

 

Пример 1. Решить уравнение .

Решение.

Решение данного уравнения будем проводить в два этапа: отделение корней уравнения графически, уточнение корней уравнения.

Определим функцию f(x), равную левой части данного уравнения, когда правая равна нулю:

Зададим ранжированную переменную x на некотором диапазоне с мелким шагом, например:

Вставим в документ графическую область. Для этого выберем дважды пиктограмму с изображением графика  сначала на панели Math (Математика), затем на палитре графиков Graph или выполним из главного меню последовательность команд Insert / Graph / X-Y Plot (Вставка / График / X-Y Зависимость).

Снизу по оси абсцисс наберем x, а сбоку по оси ординат введем f(x).

Для появления графика щелкнем левой клавишей мыши вне графической области.

Отформатируем график функции f(x). Для этого щелкнем правой клавишей мыши в области графика и выберем в контекстном меню команду Format (Формат). Установим пересечение осей графика (CrossedТолько оси), добавим вспомогательные линии по координатным осям (Grid LinesВспомогательные линии). Отменим при этом автосетку (AutogridАвтосетка) и установим количество линий сетки, равное 10.

Для подтверждения внесенных изменений нажмем последовательно кнопки Apply (Применить) и ОК.

После указанных преобразований график функции f(x) будет выглядеть следующим образом:

Из графика функции f(x) видно, что уравнение  имеет три корня, которые приблизительно равны: x1 » -1; x2 » 1; x3 » 2,5.

Этап отделения корней завершен.

Уточним теперь корни уравнения различными способами.

1-й способ. Присвоим начальное приближение переменной x и укажем точность поиска корня:

Уточним заданное приближение к значению корня с помощью функции root:

Выполним проверку, подтверждающую, что первый корень найден с заявленной точностью:

Начальное приближение можно не задавать при использовании в качестве аргументов root границ отрезка нахождения корня, например, второй корень можно уточнить:

2-й способ. Присвоим начальное приближение переменой x для уточнения третьего корня:

Напечатаем служебное слово Given. Ниже наберем f(x) = 0, используя логический знак равенства с панели Boolean (Логические) − комбинация клавиш Ctrl + =. Еще ниже напечатаем выражение x3 = Find(x) и вывод значения третьего корня x3 =.

Уточнение корня уравнения с помощью блока GivenFind выглядит следующим образом:

3-й способ. Уточнение корня уравнения с помощью блока GivenMinerr осуществляется аналогично предыдущему случаю:

Примечание − Для уточнения корня в данном примере установлена точность 0,0001. Поэтому целесообразно изменить формат вывода результатов (4 знака после десятичного разделителя) в окне форматирования результатов на вкладке Number Format.

 

 

 

 

 

Решение полиномиальных уравнений. Функция polyroots

 

Для решения полиномиальных уравнений вида

или нахождения всех корней полинома степени n, используют функцию

polyroots(v),

возвращающую вектор-столбец длины n, состоящий из корней полинома, как действительных, так и комплексных. Аргументом функции polyroots является вектор v длины n + 1 < 100, содержащий коэффициенты полинома.

Решить полиномиальное уравнение можно следующим образом:

1)     задать полином;

2)     выделить переменную синим управляющим курсором;

3)     создать вектор коэффициентов полинома, выполнив последовательность команд главного меню Symbolics / Polynomial Coefficients (Символика / Коэффициенты полинома);

4)     вырезать вектор коэффициентов полинома в буфер обмена;

5)     задать переменную v и присвоить ей значение вектора коэффициентов полинома, вставив его непосредственно из буфера обмена;

6)     применить функцию polyroots(v) в каком-нибудь выражении, например, ;

7)     получить вектор корней полинома: =.

Доступ к каждому отдельному корню − элементу вектора X − осуществляется с помощью индекса, например, Xi =.

 

 

 

Пример к заданию 2

 

Пример 2. Решить уравнение .

Решение.

Напечатаем левую часть уравнения, не приравнивая выражение к 0, и выделим синим курсором переменную x:

Выберем из главного меню Symbolics / Polynomial Coefficients (Символика / Коэффициенты полинома). Появившийся вектор коэффициентов полинома выделим целиком синим курсором и вырежем в буфер обмена, используя кнопку Вырезать  на панели инструментов Formatting (Форматирование) или комбинацию клавиш Ctrl + X.

Напечатаем v := и вставим вектор из буфера обмена, используя кнопку Вставить  на панели инструментов или комбинацию клавиш Ctrl + V.

Для получения результата напечатаем polyroots(v) =:

 

 

 

Порядок выполнения лабораторной работы

1  Загрузить Mathcad.

2  Сохранить в личной папке на диске z:\ в папке Mathcad\LAB4 новый документ с именем ФИО_4, лучше использовать латинские буквы. Производить сохранение регулярно в процессе работы (Ctrl + S).

3  Вставить текстовую область и ввести в поле документа текст:

Лабораторная работа № 4

Решение уравнений в Mathcad.

 

4  В новой текстовой области ввести фамилию, имя, отчество и номер варианта.

5  Задание 1. Решить уравнение (таблица 1) с точностью 10-5: отделить корень графически и уточнить с помощью функции root; блока GivenFind; блока GivenMinerr.

 

Таблица 1 − Нелинейные уравнения

Вариант

Уравнение

1

2

3

4

5

6

7

8

9

10

11

12

 

6  Задание 2. Решить полиномиальное уравнение (таблица 2).

 

Таблица 2 − Полиномиальное уравнение

Вариант

Уравнение

Вариант

Уравнение

1

7

2

8

3

9

4

10

5

11

6

12

 

 

 

Контрольные вопросы

1  Как найти начальное приближение корней уравнений?

2  Какие функции для решения одного уравнения известны в Mathcad? В чем их отличие?

3  Как системная переменная TOL влияет на решение уравнения?

4  Что такое вычислительный блок и какова его структура?

5  Какой знак равенства используется в блоке решения? Какой комбинацией клавиш вставляется в документ?

6  Какие выражения недопустимы внутри блока решения уравнения?

 

 

 

Лабораторная работа №5. Mathcad.
Решение систем уравнений

Цель работы: Получить навыки решения систем линейных и нелинейных уравнений средствами системы Mathcad.

 

 

Справочный материал и примеры

Система Mathcad обладает широкими возможностями численного решения систем уравнений.

Блоки GivenFind, GivenMinerr

Для решения систем нескольких уравнений и неравенств используются функции Find или Minerr. Они входят в состав вычислительного блока, который включает в себя ключевое слово Given, набор уравнений и неравенств и завершается одной из указанных вычисляющих функций в составе какого-нибудь выражения.

Функция

Find(x1, x2, …)

возвращает значения неизвестных x1, x2, … , обращающих уравнения в верные тождества, т. е. возвращает точное решение системы уравнений. Для системы из n уравнений с n неизвестными решение возвращается в виде вектора, состоящего из n элементов.

Если в результате поиска не может быть получено решение с заданной точностью, то функция Find выдает сообщение об ошибке. В этом случае можно использовать функцию

Minerr(x1, x2, …),

возвращающую приближенное решение системы уравнений (число уравнений должно быть равно числу неизвестных). При использовании minerr необходимо производить дополнительную проверку достоверности результатов решения системы.

Порядок применения блоков GivenFind, GivenMinerr для численного решения систем уравнений:

7  Всем неизвестным, входящим в систему, задается начальное приближение.

8  При необходимости присваиваются требуемые значения системным переменным TOL и CTOL (Constraint Tolerance − Допуск ограничения).

9  Печатается ключевое слово Given, которое указывает Mathcad, что далее следует система уравнений.

10      Задаются уравнения и ограничения на поиск решения в виде неравенств (если они имеются) в любом порядке, каждое в отдельном формульном блоке, причем для записи используются операторы отношения палитры Boolean (Логические). Допускается использование двусторонних неравенств вида a ≤ x ≤ b.

11    Применяется функция Find или Minerr в составе какого-нибудь выражения. В качестве аргументов через запятую перечисляются имена входящих в систему переменных в том порядке, в котором должны быть расположены в ответе соответствующие им корни.

12    В случае использования функции Minerr выполняется проверка.

Внутри блока решения недопустимы следующие операции и выражения:

·  ранжированные переменные;

·  выражения, содержащие знак ≠;

·  локальное (:=) или глобальное (≡) определение переменных и функций, за исключением выражения, в состав которого входит функция Find или Minerr;

·  другой блок решения. Каждый блок должен содержать только одно слово Given и одну решающую функцию.

 

В случае появления ошибки, означающей, что решение не было найдено, рекомендуется изменить начальное приближение или значения системных переменных TOL и CTOL.

 

 

 

 

Пример к заданию 1

 

Пример 1. Решить систему уравнений

Решение.

Отделим решения системы графически. Определим две функции аргументов х и y соответственно, выразив для этого из первого уравнения системы у, а из второго − х. Для более детального построения графика создадим ряды значений каждой из этих ранжированных переменных:

Вставим графическую область. Аргументы по оси абсцисс и ординат введем через запятую. После форматирования график выглядит так:

Точка пересечения линий графиков функций является решением системы. Укажем приблизительное значение абсциссы и ординаты точки пересечения в качестве начального приближения:

Напечатаем ключевое слово Given, затем уравнения системы, каждое в отдельном блоке с использованием логического знака равенства (CTRL + =). Решение уточним с помощью функции Minerr:

 

 

Так как Minerr находит приближенное решение системы, то необходимо сделать проверку. Для этого зададим значение системной переменной ORIGIN:=1. Первый элемент вектора X − это значение переменной x, а второй − значение переменной y. Подставим их в левую часть системы и вычислим, чему равна правая, используя обычный знак «=» вывода результата:

Полученные значения совпадают с заданными. Значит, система решена правильно.

 

 

 

Решение систем линейных уравнений

Рассмотрим систему линейных алгебраических уравнений:

В матричном виде ее можно записать  Ax = b, где

– матрица коэффициентов при неизвестных системы (матрица левой части системы);

 

− столбец свободных членов.

Как известно, система линейных алгебраических уравнений имеет решение, если ее определитель отличен от 0: .

Умножим обе части матричного уравнения Ax = b на обратную матрицу коэффициентов при неизвестных системы A-1 слева: . Учитывая, что , вектор-столбец решений системы можно искать в виде

.

Этот прием используется в Mathcad так:

1)     задается матрица коэффициентов при неизвестных системы A;

2)     задается столбец свободных членов b;

3)     вводится формула для нахождения решения системы ;

4)     выводится вектор решений системы .

Кроме того, пакет Mathcad имеет встроенную функцию

lsolve(A, b),

возвращающую вектор-столбец решений системы линейных алгебраических уравнений. Аргументами функции lsolve являются матрица коэффициентов при неизвестных системы и столбец свободных членов. Порядок решения аналогичен рассмотренному, но вместо формулы  используется .

Реализовать метод Гаусса решения систем линейных уравнений позволяет встроенная функция rref(M), возвращающая ступенчатый вид матрицы M. Если в качестве аргумента взять расширенную матрицу системы, то в результате применения rref получится матрица, на диагонали которой – единицы, а последний столбец представляет собой столбец решений системы.

Решение системы линейных уравнений можно осуществить с помощью блоков GivenFind, GivenMinerr. При этом неизвестным системы задается произвольное начальное приближение, а проверка необязательна.

 

 

 

Пример к заданию 2

 

Пример 2. Решить систему линейных уравнений  Сделать проверку.

Решение.

1-й способ. Использование блока GivenFind.

Зададим всем неизвестным, входящим в систему уравнений, произвольные начальные приближения, например:

Напечатаем слово Given. Установим визир (курсор) ниже и наберем уравнения системы, каждое в своем блоке. Используем при этом логический знак равенства (Ctrl + =).

После ввода уравнений системы напечатаем X :Find(x, y, z) и получим решение системы в виде вектора, состоящего из трех элементов:

Сделаем проверку, подставив полученные значения неизвестных в уравнения системы, например, следующим образом

После набора знака «=» в каждой строке должен быть получен результат, равный или приблизительно равный правой части системы. В данном примере системная переменная ORIGIN = 1.

2-й способ. Использование блока GivenMinerr.

Порядок решения системы этим способом аналогичен порядку использования блока GivenFind и представлен ниже вместе с проверкой.

3-й способ. Решение системы линейных уравнений матричным способом.

Создадим матрицу А, состоящую из коэффициентов при неизвестных системы. Для этого напечатаем A := , вызовем окно создания массивов (Ctrl + M). Число строк (Rows) и столбцов (Columns) матрицы данной системы равно 3. Заполним пустые места шаблона матрицы коэффициентами при неизвестных системы, как показано ниже:

Зададим вектор b свободных членов системы. Сначала напечатаем b :=, затем вставим шаблон матрицы(Ctrl + M), где количество строк (Rows) равно 3, а количество столбцов (Columns) равно 1. Заполним его:

Решим систему матричным способом по формуле

Решим систему с помощью функции lsolve:

Решение системы с помощью функции rref можно представить так:

В последнем случае матрица AR, полученная путем объединения матрицы при неизвестных системы и столбца свободных членов, является расширенной матрицей системы.

Для проверки правильности решения системы, полученного матричным способом, достаточно вычислить произведение , которое должно совпасть с вектором-столбцом свободных членов b:

 

 

Порядок выполнения лабораторной работы

7  Загрузить Mathcad.

8  Сохранить в личной папке на диске z:\ в папке Mathcad\LAB5 новый документ с именем ФИО_5, лучше использовать латинские буквы. Производить сохранение регулярно в процессе работы (Ctrl + S).

9  Вставить текстовую область и ввести в поле документа текст:

Лабораторная работа № 5

Решение систем уравнений в Mathcad.

 

10    В новой текстовой области ввести фамилию, имя, отчество и номер варианта.

11    Задание 1. Решить систему уравнений (таблица 1), отделив решение графически и уточняя с помощью блока GivenMinerr. Сделать проверку.

 

Таблица 1 − Нелинейные системы уравнений

Вариант

Система уравнений

1

2

3

4

5

6

7

8

9

10

11

12

 

 

12    Задание 2. Решить систему линейных алгебраических уравнений (таблица 2) с помощью блока GivenFind и матричным способом.

 

Таблица 2 − Системы линейных уравнений

Вариант

Система
линейных уравнений

Вариант

Система
линейных уравнений

1

7

2

8

3

9

4

10

5

11

6

12

 

 

 

 

Контрольные вопросы

 

 

7  Назовите функции для решения систем уравнений в Mathcad и особенности их применения. Дайте их сравнительную характеристику.

8  Что такое вычислительный блок и какова его структура? Какой знак равенства используется в блоке решения? Какой комбинацией клавиш вставляется в документ?

9  Какие выражения недопустимы внутри блока решения уравнения?

10    Какие способы решения систем линейных алгебраических уравнений реализуются в Mathcad?

11    Назовите способы решения матричных уравнений.