Кирьянов Д. - MathCad 11 (1077323), страница 33
Текст из файла (страница 33)
Однако, даже если корней бесконечно много, численный метод будет производить расчеты только до тех пор, пока логическиевыражения в вычислительном блоке не будут выполнены (в пределах погрешности). После этого итерации будут остановлены и выдано решение. Врезультате будет найдена всего одна пара значений (х,у), обнаруженнаяпервой.(Примечание}О том, как найти все решения рассматриваемой задачи, рассказываетсяв разд. 8.7.Вычислительным блоком с функцией Find можно найти и корень уравнения с одним неизвестным.
Действие Find в этом случае совершенно аналогично уже рассмотренным в данном разделе примерам. Задача поиска корнярассматривается как решение системы, состоящей из одного уравнения.Единственным отличием будет скалярный, а не векторный тип числа, возвращаемого функцией Find. Пример решения уравнения из предыдущегораздела приведен в листинге 8.8.196Часть III. Численные методыЛистинг 8.8. Поиск корня уравнения с одним неизвестнымс помощью функции Findх := 0.5Givens i n (х) = ОF i n d (x) = - 3 .
8 1 4 X 1СГ7В чем же отличие приведенного решения от листинга 8.1 с функцией root?Оно состоит в том, что одна и та же задача решена различными численными методами. В данном случае выбор метода не влияет на окончательныйрезультат, но бывают ситуации, когда применение того или иного методаимеет решающее значение.8.4. О численных методахрешения систем уравненийЕсли Вы решаете "хорошие" уравнения, как все те, которые были приведены в предыдущих разделах, то можете никогда не задумываться, как именноMathcad ищет их корни. Однако даже в этом случае полезно представлять,что происходит "за кадром", т.
е. какие действия совершаются в промежуткемежду введением необходимых условий после ключевого слова Given и получением результата после применения функции Find. Это важно хотя бы спозиций выбора начальных значений переменных перед вычислительнымблоком. Рассмотрим в данном разделе некоторые особенности численныхметодов и возможности установки их различных параметров, которые предоставляет Mathcad.Функция Find реализует градиентные численные методы. Покажем их основную идею на примере уравнения с одним неизвестным £(х)=о дляфункции f (х) =хг+5х+2, график которой показан на рис.
8.4. Основная идеяградиентных методов состоит в последовательных приближениях к истинному решению уравнения, которые вычисляются с помощью производнойот f (х). Приведем наиболее простую форму алгоритма, называемого методом Ньютона:1. За нулевую итерацию принимается введенное пользователем начальноезначение хо=х.2. В точке хО методом конечных разностей вычисляется производнаяf'(хО).3. Пользуясь разложением Тейлора, можно заменить f (х) в окрестности хОкасательной — прямой линией f (x)= f fxO) +f (xo)- (x-xO).Глава 8. Алгебраические уравнения и оптимизация1974.
Определяется точка xi, в которой прямая пересекает ось х (см. рис. 8.4).5. Если £(XU<TOL, то итерации прерываются, и значение xi выдается в качестве решения. В противном случае xi принимается за новую итерацию,и цикл повторяется: строится касательная к f (х) в точке xi, определяется х2 — точка ее пересечения с осью х и т. д.Рис. 8 . 4 . Иллюстрация метода НьютонаМодификация алгоритма Ньютона для решения системы нескольких уравнений заключается в линеаризации соответствующих функций многих переменных, т. е. аппроксимации их линейной зависимостью с помощьючастных производных.
Например, для нулевой итерации в случае системыдвух уравнений используются выражения типа:Df^xO, yO)df,(xO,yO)1\ '* (у - уО) ,дуЭ^(хО, yO),df 2 (x0, yO) ,22f2(x, у) * f 2 (x0, yO) +\ Эх(х - хО) +\ ду(У - УО) .х, у) = fj.fxO, yO) +(х - хО) +Чтобы отыскать точку, соответствующую каждой новой итерации, требуетсяприравнять оба равенства нулю, т. е. решить на каждом шаге полученнуюсистему линейных уравнений.Mathcad предлагает три различных вида градиентных методов.
Чтобы поменять численный метод:1. Щелкните правой кнопкой мыши на названии функции Find.2. Наведите указатель мыши на пункт Nonlinear (Нелинейный) в контекстном меню.3. В появившемся подменю (рис. 8.5) выберите один из трех методов:Conjugate Gradient (Сопряженных фадиентов), Quasi-Newton (Квази-Ньютоновский) или Levenberg-Marquardt (Левенберга).Часть III. Численные методы198v = Fir:'!-'--=*-- 4'.fiutaSelectLinear.::-• Conjugate GradientLe^nberg-Marquardt•;' ' Advanced Options.& Properties...Qisable EvaluationOptimizeРис.
8.5. Смена численного методаЧтобы вернуть автоматический выбор типа численного метода, в контекстном меню надо выбрать пункт AutoSelect (Автоматический выбор). Еслиустановлена опция автоматического выбора (о чем говорит флажок, установленный в пункте AutoSelect), то текущий тип численного метода можноузнать, вызвав то же самое подменю и посмотрев, который из них отмеченточкой.
Два последних метода являются квази-Ньютоновскими, основнаяидея которых была рассмотрена выше. Первый из них, метод сопряженныхградиентов, является двухшаговым — для поиска очередной итерации ониспользует как текущую, так и предыдущую итерации. Алгоритм Левенбергаподробно описан в справочной системе Mathcad, а детальную информациюо методах Ньютона и сопряженных градиентов можно найти в большинствекниг по численным методам.Помимо выбора самого метода, имеется возможность устанавливать их некоторые параметры.
Для этого нужно вызвать с помощью того же контекстного меню диалоговое окно Advanced Options (Дополнительные параметры),выбрав в контекстном меню пункты Nonlinear / Advanced options (Нелинейный / Дополнительные параметры). В этом диалоговом окне (рис. 8.6) имеется пять групп переключателей, по два в каждой.В первой строке Derivative estimation (Аппроксимация производной) определяется метод вычисления производной Forward (Вперед) или Central (Центральная).
Они соответствуют аппроксимации производной либо правой(двухточечная схема "вперед"), либо центральной (трехточечная симметричная схема) конечной разностью.Примечание^Обратите внимание, что вычисление производной в градиентных численныхметодах решения уравнений производится более экономичным способом, нежели при численном дифференцировании (см. гл. 7).Глава 8. Алгебраические уравнения и оптимизация199Во второй строке Variable estimation (Аппроксимация переменных) можноопределить тип аппроксимации рядом Тейлора. Для рассмотренного нами вэтом разделе случая аппроксимации касательной прямой линией выберитепереключатель Tangent (Касательная), для более точной квадратичной аппроксимации (параболой) выберите Quadratic (Квадратичная). Следующаягруппа переключателей Linear variable check (Проверка линейности) позволяет в специфических задачах сэкономить время вычислений.
Если Вы уверены, что нелинейности всех функций, входящих в уравнение, мало сказываются на значениях всех их частных производных, то установитепереключатель Yes (Да). В этом случае производные будут приняты равными константам и не будут вычисляться на каждом шаге.СоветС осторожностью изменяйте параметры численных методов. Пользуйтесь ими,когда решение не находится при выставленных по умолчанию параметрах иликогда расчеты занимают очень продолжительное время.Advanced Options. .. .^ГDerivative estimation;Variable estimation: <!"Multipart .
-гEvolutionary:г ^es{CentraifiuadtaticHoс NoMoCancel jfcielp|nLinear variable check: rГЖ|ForwardTangenties<!•rc ?Рис. 8.6. Диалоговое окно Advanced OptionsПара переключателей Multistart (Сканирование) задает опцию поиска глобального или локального минимума или максимума. Если выставлен переключатель Yes (Да), Mathcad будет пытаться найти наиболее глубокий экстремум из области, близкой к начальному приближению. Эта опцияпредназначена, в основном, для настройки (тех же самых, градиентных) алгоритмов поиска экстремума, а не для решения алгебраических уравнений.Наконец, последний переключатель Evolutionary (Эволюционный алгоритм),если установить его в положение Yes (Да), позволяет использовать модификацию численного метода для решения уравнений, определяемых не обязательно гладкими функциями.
Как мы убедились в этом разделе, все градиентные методы, реализованные в функции Find, требуют многократноговычисления производных. Если Вы работаете с достаточно гладкими функ-200Часть III. Численные методыциями, то градиентные методы обеспечивают быстрый и надежный поисккорня. Для поиска корня недостаточно гладких функций одной переменной,следует либо выставить данную опцию функции Find, либо использоватьметод секущих (функцию root).
Помните, что правильный выбор численногометода и его параметров может помочь при решении нестандартной задачи,которая при стандартных установках может и не поддаваться решению.8.5. Приближенное решение уравненийИногда приходится заменять задачу определения корней системы уравненийзадачей поиска экстремума функции многих переменных. Например, когданевозможно найти решение с помощью функции Find, можно попытатьсяпотребовать вместо точного выполнения уравнений условий минимизировать их невязку. Для этого следует в вычислительном блоке вместо функцииFind использовать функцию Minerr, имеющую тот же самый набор параметров. Она также должна находиться в пределах вычислительного блока:1. х 1 :=с 1 . .
.х м :=с м — начальные значения для неизвестных.2. Given — ключевое слово.3. Система алгебраических уравнений и неравенств, записанная логическими операторами.4. MinerrfXiхм) — приближенное решение системы относительнопеременных х1# . . . ,хм, минимизирующее невязку системы уравнений.СПримечаниеВ функции M i n e r r реализованы те же самые алгоритмы, что и в функции F i n d ,иным является только условие завершения работы численного метода. Поэтому пользователь может тем же самым образом, с помощью контекстного меню(см.