Решение одного уравнения.

Система предлагает пользователю два варианта функции root для нахождения одной неизвестной величины: с двумя и четырьмя аргументами. Функция root(f(x), x) использует для отыскания решения уравнения f(x)=0 метод секущих и требует начального приближения (ниже в примере x = 1). Функция root(f(x), x, xl, xr) ищет корень по методу деления отрезка, на котором f(x) меняет знак, пополам. Она использует левую (xl) и правую (xr) границы интервала, на котором f(x) имеет единственный корень.

 

Полученные значения корней необходимо проверить. Даже мощная система MathCAD не всегда правильно находит решение, но это скорее исключение из правила. Примером может служить неправильное решение уравнения f(x) = |1-x| / (1-x2) с помощью root(f(x),x). Кстати, это же уравнение правильно решает функция root(f(x), x, 0, 2), т.к. использует метод дихотомии – не такой быстрый, как метод секущих, но зато надежный.

Поиск корней полиномов можно производить как с помощью названных функций (локализуя и уточняя с заданной погрешностью каждый из корней в отдельности), так и с использованием специально для этого предназначенной функции polyroots(v), в которой v представляет собой вектор коэффициентов при степенях неизвестной, начиная со свободного члена. Ниже приведен простейший пример на использование функции polyroots. Она не требует задания начального приближения. Количество корней определяется порядком полинома, корни могут быть вещественными и комплексными.

Довольно часто решение уравнения зависит от некоторого параметра. Рассмотрим конкретный пример отыскания максимума функции.

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

MathCAD предоставляет пользователю различные возможности численного решения систем алгебраических уравнений. Число уравнений в системе, начиная с восьмой версии пакета, достигает 200.

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

Метод Крамера для той же системы уравнений, но реализованный с помощью встроенной функции lsolve(A, B), приобретает следующий вид:

Решая систему линейных уравнений, следует помнить о том, что MathCAD не всегда сможет найти обратную матрицу коэффициентов. Вывод сообщения «Matrix is singular (Матрица сингулярная)» свидетельствует либо о линейной зависимости уравнений в системе, либо о сильном различии (на несколько порядков) коэффициентов, что особенно сказывается при большом числе уравнений.

При численном решении систем нелинейных алгебраических уравнений используют итерационные методы, реализованные в системе в виде блока Given – Find. Ниже приведен пример использования блока с выбором метода решения, производимого с помощью контекстного меню. Контекстное меню вызывается щелчком правой кнопки мыши по функции Find. Пункт меню «Автоматический выбор» определяет способ выбора численного метода и его настройки. Сам блок должен предваряться заданием начальных приближений для всех неизвестных. Затем следует служебное слово Given, после которого записываются уравнения системы с использованием логического знака равенства (Ctrl =) между их левыми и правыми частями. До использования функции получения результата Find в блоке могут быть представлены ограничительные условия, сужающие диапазон поиска решения системы. Условия задаются с помощью панели логических операций.

 

Аргументами функции Find являются неизвестные. Она возвращает вектор решения, в котором значения неизвестных следуют в том же порядке, как и ее аргументы. Одному служебному слову given может соответствовать только одна функция find. Блоки решения нельзя вкладывать друг в друга, но можно определять результат с помощью find в одном блоке, а использовать его в другом. Если уравнения системы зависят от параметра, то используют прием, рассмотренный при решении одного уравнения:

Кроме рассмотренной функции find MathCAD позволяет использовать для решения системы уравнений другую функцию - Minerr, которая реализует тот же итерационный алгоритм, но, в отличие от find, всегда возвращает результат. Полученное с ее помощью решение следует проверять на предмет его истинности, т.к. minerr возвращает результат, даже если он не удовлетворяет погрешности TOL и CTOL. Функция find выводит в такой ситуации сообщение об отсутствии сходимости.

Кроме рассмотренных выше пяти функций численного решения алгебраических уравнений, MathCAD содержит еще две функции – minimize(f, x) и maximize(f, x) – для отыскания положения локальных экстремумов (соответственно минимума и максимума) выражения f(x) в окрестности начального приближения. Названные функции могут быть использованы аналогично функциям root или find. Ниже дан конкретный пример применения функций.