Рассмотрим решение системы нелинейных уравнений. Для простоты предположим, что система состоит из N уравнений с N неизвестными:
f1(x1, ... ,хN) = 0,
. . . (4)
fN(x1, ... ,хN) = 0,
Здесь f1(x1, ... ,хN) , ..., fN(x1, ... ,хN) — некоторые скалярные функции от скалярных переменных
х1, х2, ... хN.
Для решения систем в MathCAD используется специальный вычислительный блок
Given/Find, состоящий из трех частей, идущих последовательно друг за другом:
- Given – ключевое слово;
- система, записанная логическими равенствами;
- Find(x1... ,хN) — встроенная функция для решения системы относительно переменных
х1, х2, ... хN.
Блок Given/Find использует для поиска решения итерационные методы, поэтому, как и для функции root, требуется задать начальные значения для всех х1, х2, ... хNдо ключевого слова Given.
Функция Find( ) возвращает вектор, составленный из корней системы (4). Таким образом, число аргументов функции Find( ) должно быть равно числу неизвестных.
На Рис. 27. приведен пример решения системы двух уравнений с двумя неизвестными.
Лекция 9 47
Рис. 27. Решение системы уравнений.
В первых двух строках вводятся функции, определяющие левые части уравнений системы.
Затем переменным х и у присваиваются начальные значения. После этого следует ключевое слово Given и два логических равенства, выражающих систему уравнений. Завершает вычислительный блок функция Find( ), значение которой присваивается вектору v.
Следующая строка показывает содержание вектора v, т. е. решение системы. Элемент вектора v0 есть первый аргумент функции Find( ), то есть неизвестное х, элемент v1–второй аргумент функции Find( ), то есть неизвестное у.
Уравнения системы можно записывать непосредственно внутри вычислительного блока, то есть не определять заранее функции f(x,y) и g(х,у), а сразу написать:
Given
4 2
x + y 3
x + 2 y 0
В вычислительный блок можно добавить дополнительные условия в виде неравенств. Например, ввод ограничения на поиск только отрицательных значений х приведет к нахождению другого корня (Рис. 28).
x:= 1
Given
y:= 1
x4+ y2 3
x+ 2y 0 x< 0
v:= find(x, y)
æ -1.269ö
Дополнительное неравенство
v= ç ÷
è 0.635ø
Рис. 28. Решение системы уравнений и неравенств.
Лекция 9 48
Несмотря на те же начальные значения, мы получили другой корень. Это произошло именно благодаря дополнительному неравенству в блоке Given/Find.
Если система не имеет решения (несовместна), MathCAD выдаст сообщение об ошибке, гласящее, что решения не найдено, и предложение попробовать поменять начальные значения.
Вычислительным блоком Given/Find можно найти и корень одного уравнения с одним неизвестным.
В этом случае система считается состоящей из одного уравнения. Единственным отличием будет то, что функция Find( ) возвращает скаляр, а не вектор (Рис. 29.).
Рис. 29. Поиск корня уравнения с одним неизвестным с помощью блока Given/Find.