Кирьянов Д. - MathCad 11 (1077323), страница 32
Текст из файла (страница 32)
7 3 2 1r o o t ( f (х , у) , у) - 2В первой строке листинга определяется функция f (x,y), во второй и третьей — значения, для которых будет производиться решение уравнения по у их, соответственно. В четвертой строке решено уравнение f (х,о)=о, а в последней —уравнение f (i,y)=o. He забывайте при численном решении уравнений относительно одной из переменных предварительно определить значения остальных переменных. Иначе попытка вычислить уравненияприведет к появлению ошибки "This variable or function is not defined above",в данном случае говорящей о том, что другая переменная ранее не определена. Конечно, можно указать значение других переменных непосредственно внутри функции root, беспрепятственно удалив, например, вторую итретью строки листинга 8.4 и введя его последние строки в видеroot (f (x, 0) ,х) = и root (f u , y ) ,у) =, соответственно.ПримечаниеДля того чтобы отыскать зависимость корней уравнения, вычисленных по однойпеременной, от других переменных, разработаны специальные эффективныеалгоритмы.
Об одной из возможностей читайте в разд. 8,8.8.2. Корни полиномаЕсли функция £(х) является полиномом, то все его корни можно определить, используя встроенную функциюpolyroots(v) ,Глава 8. Алгебраические уравнения и оптимизация191где v — вектор, составленный из коэффициентов полинома.Поскольку полином N-Й степени имеет ровно N корней (некоторые из нихмогут быть кратными), вектор v должен состоять из N+I элемента. Результатом действия функции poiyroots является вектор, составленный из N корней рассматриваемого полинома.
При этом нет надобности вводить какоелибо начальное приближение, как для функции root. Пример поиска корней полинома четвертой степени иллюстрируется листингом 8.5.| Листинг 8.5. Поиск корня полиномаv := ( 3-1012-61 )Т1p o i y r o o t s (v) =]^1 - 5 . 1 1 3 1 х 10"1 + 5 . 1 1 3 i х 10"" 6Коэффициенты рассматриваемого в примере полиномаf (х) = (х-3 J • (х-1) 3 = х 4 - б х 3 + 12х 2 -10х+3(1)записаны в виде вектора в первой строке листинга. Первым в векторе должен идти свободный член полинома, вторым — коэффициент при х 1 и т. д.Соответственно, последним N+I элементом вектора должен быть коэффициент при старшей степени xN.СоветИногда исходный полином имеется не в развернутом виде, а, например, какпроизведение нескольких полиномов. В этом случае определить все его коэффициенты можно, выделив его и выбрав в меню Symbolics (Символика) пунктExpand (Разложить).
В результате символьный процессор Mathcad сам преобразует полином в нужную форму, пользователю надо будет только корректноввести ее в аргументы функции p o i y r o o t s .Во второй строке листинга 8.5 показано действие функции poiyroots. Обратите внимание, что численный метод вместо двух из трех действительныхединичных корней (иными словами, кратного корня 1) выдает два мнимыхчисла. Однако малая мнимая часть этих корней находится в пределах погрешности, определяемой константой TOL, И не должна вводить пользователей в заблуждение.
Просто нужно помнить, что корни полинома могут бытькомплексными, и ошибка вычислений может сказываться как на действительной, так и на комплексной части искомого корня.Для функции poiyroots можно выбрать один из двух численных методов —метод полиномов Лаггера (он установлен по умолчанию) или метод парнойматрицы.192Часть Hi. Численные методыДля смены метода:1.
Вызовите контекстное меню, щелкнув правой кнопкой мыши на словеpolyroots.2. В верхней части контекстного меню выберите либо пункт LaGuerre (Лаггера), либо Companion Matrix (Парная матрица).3. Щелкните вне действия функции polyroots — если включен режим автоматических вычислений, будет произведен пересчет корней полиномав соответствии с вновь выбранным методом.Для того чтобы оставить за Mathcad выбор метода решения, установитефлажок AutoSelect (Автоматический выбор), выбрав одноименный пункт втом же самом контекстном меню.8.3.
Системы уравненийРассмотрим решение системы N нелинейных уравнений с м неизвестнымиfi(x 1 ( . . . , х м ) = О,(I)f N (x 1 ( . . . , х м ) = О,Здесь fi(Xi, . . . ,хм) , . . ., f N (x 1( . . . ,хм) — некоторые скалярные функции отскалярных переменных х!,х 2 , . . . ,хн и, возможно, от еще каких-либо переменных. Уравнений может быть как больше, так и меньше числа переменных. Заметим, что систему (I) можно формально переписать в видеf(x)=o,(2)где х — вектор, составленный из переменных Xi,x2, . .
. ,хм, a t (х) — соответствующая векторная функция.Для решения систем имеется специальный вычислительный блок, состоящийиз трех частей, идущих последовательно друг за другом:•Given — ключевое слово;П система, записанная логическими операторами в виде равенств и, возможно, неравенств;• Find(x 1 ( . .
. ,хм) — встроенная функция для решения системы относительно переменных х 1( . . . , хк.Вставлять логические операторы следует, пользуясь панелью инструментовBoolean {Булевы операторы). Если Вы предпочитаете ввод с клавиатуры,помните, что логический знак равенства вводится сочетанием клавиш<Ctrl>+<=>. Блок Given/Find использует для поиска решения итерационные методы, поэтому, как и для функции root, требуется задать начальныезначения для всех х 1 ( . . . , х м . Сделать это необходимо до ключевого словаГлава 8, Алгебраические уравнения и оптимизация193Given. Значение функции Find есть вектор, составленный из решения покаждой переменной. Таким образом, число элементов вектора равно числуаргументов Find.В листинге 8.6 приведен пример решения системы двух уравнений.Листинг 8.6. Решение системы уравненийil-h( x , у}g ( x , у) := x+ 2X:= 1•y1Given4-1f x , у.
= 0g (x,Vу; =0:= FineI ( x , У)269V =-'о . 6 3 51f (vo, vt) = -1.954 xlO7g(vo, vL) = оВ первых двух строках листинга вводятся функции, которые определяютсистему уравнений. Затем переменным х и у, относительно которых онабудет решаться, присваиваются начальные значения.
После этого следуетключевое слово Given и два логических оператора, выражающих рассматриваемую систему уравнений. Завершает вычислительный блок функция Find,значение которой присваивается вектору v. Следующая строка показываетсодержание вектора v, т. е. решение системы. Первый элемент вектора естьпервый аргумент функции Find, второй элемент— ее второй аргумент.В последних двух строках осуществлена проверка правильности решенияуравнений.СоветЧасто бывает очень полезно проверить точность решения уравнений, вычисливзначения образующих их функций в найденных вычислительным процессоромкорнях, как это сделано в конце листинга 8.6.Отметим, что уравнения можно определить непосредственно внутри вычислительного блока. Таким образом, можно не определять заранее функцииf (х,у) и д(х,у), как это сделано в первых двух строках листинга 8.6, а сразу написать:Given42 „х +у = 3х + 2 -у = ОЧасть III.
Численные методы194Такая форма представляет уравнения в более привычной и наглядной форме, особенно подходящей для документирования работы.Графическая интерпретация рассмотренной системы представлена нарис. 8.3. Каждое из уравнений показано на плоскости XY графиком. Первое — сплошной кривой, второе — пунктиром. Поскольку второе уравнениелинейное, то оно определяет на плоскости XY прямую.
Две точки пересечения кривых соответствуют одновременному выполнению обоих уравнений,т. е. искомым действительным корням системы. Как нетрудно убедиться,в листинге найдено только одно из двух решений — находящееся в правойнижней части графика. Чтобы отыскать и второе решение, следует повторить вычисления, изменив начальные значения так, чтобы они лежали ближе к другой точке пересечения графиков, например x=-i, y=-i.Рис. 8.3. Графическое решение системы двух уравненийПока мы рассмотрели пример системы из двух уравнений и таким же числом неизвестных, что встречается наиболее часто. Но число уравнений инеизвестных может и не совпадать.
Более того, в вычислительный блокможно добавить дополнительные условия в виде неравенств. Например,введение ограничения на поиск только отрицательных значений х в рассмотренный выше листинг 8.6 приведет к нахождению другого решения,как это показано в листинге 8.7.Листинг 8.7. Решение системы уравнений и неравенствXуУ :=1:- 1Given2XЧуX+ 2-y = 0X< 0= 3Глава 8. Алгебраические уравнения и оптимизация195-1.269Find (x , у) ='0.635Обратите внимание, что, несмотря на те же начальные значения, что ив листинге 8.6, мы получили в листинге 8.7 другой корень. Это произошлоименно благодаря введению дополнительного неравенства, которое определено в блоке Given в предпоследней строке листинга 8.7.Если предпринять попытку решить несовместную систему, Mathcad выдастсообщение об ошибке, гласящее, что ни одного решения не найдено, ипредложение попробовать поменять начальные значения или значение погрешности.СПримечание^Вычислительный блок использует константу C T O L В качестве погрешности выполнения уравнений, введенных после ключевого слова G i v e n .
Например, еслиC T O L = O . O O I , то уравнение х - Ю будет считаться выполненным и прих = ю . 0 0 1 , и при х = 9 . 9 9 9 . Другая константа T O L определяет условие прекращения итераций численным алгоритмом (см. разд. 8.4), Значение C T O L может быть задано пользователем так же как и T O L , например, C T O L : = о .
0 1 . Поумолчанию принято, что C T O L = T O L = O . 0 0 1 , но Вы по желанию можете переопределить их.Особенную осторожность следует соблюдать при решении систем с числомнеизвестных большим, чем число уравнений. Например, можно удалить одно из двух уравнений из рассмотренного нами листинга 8.6, попытавшисьрешить единственное уравнение д(х,у)=о с двумя неизвестными х и у.В такой постановке задача имеет бесконечное множество корней: для любого х и, соответственно, у=-х/2 условие, определяющее единственное уравнение, выполнено.