Кирьянов Д. - MathCad 11 (1077323), страница 31
Текст из файла (страница 31)
вектор х в терминахлистинга 7.19, или все три переменных х,у, z в обозначениях листинга 7.20.ГЛАВА 8Алгебраическиеуравнения и оптимизацияВ этой главе рассматривается решение алгебраических нелинейных уравнений и систем таких уравнений.Задача ставится следующим образом. Пусть имеется одно алгебраическоеуравнение с неизвестным хf <х)=о,или система N алгебраических уравнений( х 1 ( .
. . , х м ) = О,, Xf..)—0,где f (х.1 и f i (xx,..., х„) — некоторые функции. Требуется найти корниуравнения, т. е. все значения х, которые переводят уравнение (или, соответственно, систему уравнений) в верное равенство (равенства).СПримечание)Решение систем линейных уравнений, у которых все функции имеют видf i ( x ) = a u -x 1 +a i 2 -x 2 +.
. .+a iN 'X N , представляет собой отдельную задачу вычислительной линейной алгебры. Она рассматривается в гл. 9.Как правило, отыскание корней численными методами связано с несколькими задачами:П исследование существования корней в принципе, определение их количества и примерного расположения;• отыскание корней с заданной погрешностью тоь.Последнее означает, что надо найти значения х0, при которых f (х„) отличается от нуля не более чем на TOL. ПОЧТИ все встроенные функции системы186Часть III.
Численные методыMathcad, предназначенные для решения нелинейных алгебраических уравнений, нацелены на решение второй задачи, т. е. предполагают, что корниуже приблизительно локализованы. Чтобы решить первую задачу (предварительной локализации корней), можно использовать, например, графическое представление f(x) (см. разд. 8.1) или последовательный поиск корня, начиная из множества пробных точек, покрывающих расчетную область(сканирование). Mathcad предлагает несколько встроенных функций, которые следует применять в зависимости от специфики уравнения, т.
е.свойств f (х). Для решения одного уравнения с одним неизвестным служитфункция root, реализующая метод секущих (см. разд. 8.1); для решениясистемы — вычислительный блок Given/Find, сочетающий различные градиентные методы (см. разд. 8.3, 8.4). Если f(x) — это полином, то вычислить все его корни можно также с помощью функции poiyroots(см. разд. 8.2). Кроме того, в некоторых случаях приходится сводить решение уравнений к задаче поиска экстремума (см. разд.
8.5). Различные приемы нахождения экстремумов функций реализуются при помоши встроенныхФУНКЦИЙ Minerr, Maximize И Minimize (см. разд. 8.5, 8.6). В КОНЦе ДЭННОЙглавы рассказывается о символьном решении уравнений (см. разд. 8.7) и овозможной программной реализации эффективного метода решения серииалгебраических уравнений или задач оптимизации, зависящих от параметра(см. разд. 8.8).8.1.ОдноуравнениесоднимнеизвестнымРассмотрим одно алгебраическое уравнение с одним неизвестным х.f(x)=0,(1)например,sin(x) -0.Для решения таких уравнений Mathcad имеет встроенную функцию root,которая, в зависимости от типа задачи, может включать либо два, либо четыре аргумента и, соответственно, работает несколько по-разному.Пroot(f(х),х);Оroot(f(x),x,a,b);• f (x) — скалярная функция, определяющая уравнение (1);• х — скалярная переменная, относительно которой решается уравнение;• а,ь — границы интервала, внутри которого происходит поиск корня.Первый тип функции root требует дополнительного задания начального значения (guess value) переменной х.
Для этого нужно просто предварительноприсвоить х некоторое число. Поиск корня будет производиться вблизиГлава 8. Алгебраические уравнения и оптимизация187этого числа. Таким образом, присвоение начального значения требуетаприорной информации о примерной локализации корня.Приведем пример решения очень простого уравнения sin(x)=o, корни которого известны заранее.Листинг 8.1. Поиск корня нелинейного алгебраического уравнениях := О.Ь£ (х) := sin (x)solution := root ( f (x) , х)solution =-6.2X10so lu tion/(к/0V\•.....0\\/\/—11-2024Рис. 8 . 1 .
Графическое решение уравнения s i n ( x ) =0График функции f (x)=sin(x) и положение найденного корня показаны нарис. 8.1. Обратите внимание, что, хотя уравнение имеет бесконечное количество корней хы=№л ( N = O , ± I , ± 2 , . . . ) , Mathcad находит (с заданной точностью) только один из них, х0, лежащий наиболее близко к х=о.5. Если задать другое начальное значение, например х=з, то решением будет другойкорень уравнения х^тг и т. д. Таким образом, для поиска корня средствамиMathcad требуется его предварительная локализация. Это связано с особенностями выбранного численного метода, который называется методом секущих и состоит в следующем (рис. 8.2):1. Начальное приближение принимается за о-е приближение к корню: хо=х.2. Выбирается шаг h=TOLx и определяется первое приближение к корнюxi=xo+h.
Если х=о, то принимается ъ=тоъ.3. Через эти две точки проводится секущая — прямая линия, которая пересекает ось х в некоторой точке х2. Эта точка принимается за второе приближение.Часть III. Численные методы1884. Новая секущая проводится через первую и вторую точки, тем самым определяя третье приближение, и т. д.5. Если на каком-либо шаге оказывается, что уравнение выполнено, т.
е.If (x) |<TOL, то итерационный процесс прерывается, и х выдается в качестве решения.Рис. 8.2. Иллюстрация метода секущихРезультат, показанный на рис. 8.2, получен для погрешности вычислений,которой в целях иллюстративности предварительно присвоено значениеTOL=O.5. Поэтому для поиска корня с такой невысокой точностью оказалось достаточно одной итерации. В вычислениях, приведенных в листинге 8.1, погрешность TOL^O.OOI была установлена по умолчанию, и решение,выданное численным методом, лежало намного ближе к истинному положению корня х=о.
Иными словами, чем меньше константа TOL, тем ближе кнулю будет значение f (х) в найденном корне, но тем больше времени будетзатрачено вычислительным процессором Mathcad на его поиск.ПримечаниеСоответствующий пример можно найти в Быстрых шпаргалках, на странице Ресурсов Mathcad. Он расположен в разделе "Solving Equations" (Решение уравнений) и называется "Effects of T O L on Solving Equations" (Влияние константыTOL на решение уравнений).Если уравнение неразрешимо, то при попытке найти его корень будет выдано сообщение об ошибке. Кроме того, к ошибке или выдаче неправильного корня может привести и попытка применить метод секущих в областилокального максимума или минимума f(x). В этом случае секущая можетиметь направление, близкое к горизонтальному, выводя точку следующегоприближения далеко от предполагаемого положения корня. Для решениятаких уравнений лучше применять другую встроенную функцию Minerr(см.
разд. 8.5). Аналогичные проблемы могут возникнуть, если начальноеприближение выбрано слишком далеко от настоящего решения илиf (х> имеет особенности типа бесконечности.Глава 8. Алгебраические уравнения и оптимизация[_Примечание189^Для решения уравнения с одним неизвестным применимы и градиентные методы, относящиеся в Mathcad к системам уравнений. Информация об этом приведена в разд. 8.3.Иногда удобнее задавать не начальное приближение к корню, а интервал| а , ь | , ннутри которого корень заведомо находится. В этом случае следуетиспользовать функцию root с четырьмя аргументами, а присваивать начальное значение х не нужно, как показано в листинге 8.2.
Поиск корнябудет осуществлен в промежутке между а и ь альтернативным численнымметодом (Риддера или Брента).Листинг 8.2. Поиск корня алгебраического уравнения в заданном интервалеsolution := root { sin (х) , х , -1 , 1)solution ~ 0Обратите внимание, что явный вид функции f(x) может быть определеннепосредственно в теле функции root.Когда root имеет четыре аргумента, следует помнить о двух ее особенностях:ГЗ внутри интервала [а,Ь| не должно находиться более одного корня, иначебудет найден один из них, заранее неизвестно, какой именно;П значения f (а) и f (Ь) должны иметь разный знак, иначе будет выданосообщение об ошибке.Если уравнение не имеет действительных корней, но имеет мнимые, то ихтакже можно найти.
В листинге 8.3 приведен пример, в котором уравнение2x +i=o, имеющее два чисто мнимых корня, решается два раза с разныминачальными значениями. При задании начального значения 0.5 (перваястрока листинга) численный метод отыскивает первый корень (отрицательную мнимую единицу -i), а при начальном значении -0.5 (третья строкалистинга) находится и второй корень (i).| Листинг 8.3. Поиск мнимого корня•х := 0 . 5root (х' + 1 , xj = -iх :=-0.5root (х" + 1 , х/ = iДля решения этого уравнения второй вид функции root (с четырьмя, а нес двумя аргументами) неприменим, поскольку f (x) является положительно-190Часть III.
Численные методыопределенной, и указать интервал, на фан и пах которого она имела бы разный знак, невозможно.Остается добавить, что f (х) может быть функцией не только х, а любогоколичества аргументов. Именно поэтому в самой функции root необходимоопределить, относительно какого из аргументов следует решить уравнение.Эта возможность проиллюстрирована листингом 8.4 на примере функции22двух переменных f (х, у) -х -у +з . В нем сначала решается уравнениеf(x,0)=0 относительно переменной х, а потом— другое уравнениеf (i,y)=o относительно переменной у.| Листинг 8,4. Поиск корня уравнения, заданногоj функцией двух переменныхf ( х , у) := х - у + 3х := 1у := Оr o o t ( f ( х , у) , х) = - 1 .