Сравнительная характеристика методик решения систем нелинейных алгебраических уравнений в средах MathCAD и MathLab

Автор работы: Пользователь скрыл имя, 08 Октября 2013 в 16:31, курсовая работа

Краткое описание


Актуальность рассматриваемой задачи: Высокая. Никак нельзя отрицать, что СНАУ применяются крайне часто для решения любых классов задач. Проблема решения СНАУ никогда не канет в лету. Системы уравнений это один из базисов математики. Также всем известно, что при описании сложных процессов никак нельзя пользоваться только одним уравнением, приходится использовать системы из уравнений. А значит крайне важно знать и уметь решать такие системы. Тем более важно знать различные методы и способы их решения. К счастью для этого существуют прекрасные программы, которые ускоряют само решение, а также пресекают даже саму возможность получения ошибки вычисления связанной с невнимательностью присущей человеку. Это замечательно, ведь освоив всего один такой метод, можно быстро решать целые классы задач. В данной работе рассмотрены две программы MathCAD и MathLab прекрасной фирмы Math Works, Inc. Эти программы позволяют решать СНАУ быстро и надежно, а средства для решения этих задач представлены ниже.

Содержание


Цель работы и Актуальность проблемы
Введение
Решение Систем Нелинейных Алгебраических уравнений в среде MathCAD
Одно уравнение с одним неизвестным
Корни полинома
Системы уравнений
О численных методах решения систем уравнений
Приближенное решение уравнений
Символьное решение уравнений
Решение Систем Нелинейных Алгебраических уравнений в среде MathLab
Описание функций для решения СНАУ
Алгоритм решения СНАУ
Сравнительная характеристика методик Систем Нелинейных уравнений в средах MathCAD и MathLab.
Список использованной литературы

Вложенные файлы: 1 файл

Федеральное государственное образовательное учреждение.doc

— 495.00 Кб (Скачать файл)

 

Федеральное государственное образовательное  учреждение

высшего профессионального  образования

«Амурский гуманитарно-педагогический  государственный университет»

Кафедра информатики

 

 

 

 

Курсовая работа

 

Сравнительная характеристика методик  решения систем нелинейных алгебраических уравнений в средах MathCAD и MathLab

 

 

 

 

 

                                                                Работу выполнила: 

Пинигина Елена Павловна

 

                                                                                                            Проверил:

Доцент Петров Юрий Андреевич

 

 

 

 

 

 

 

 

Комсомольск – на - Амуре

2007

Содержание

 

  1. Цель работы и Актуальность проблемы
  2. Введение
  3. Решение Систем Нелинейных Алгебраических уравнений в среде MathCAD
    1. Одно уравнение с одним неизвестным
    2. Корни полинома
    3. Системы уравнений
    4. О численных методах решения систем уравнений
    5. Приближенное решение уравнений
    6. Символьное решение уравнений
  4. Решение Систем Нелинейных Алгебраических уравнений в среде MathLab
    1. Описание функций для решения СНАУ
    2. Алгоритм решения СНАУ
  5. Сравнительная характеристика методик Систем Нелинейных уравнений в средах MathCAD и MathLab.
  6. Список использованной литературы

 

 

 

 

 

 

 

Цель работы: Научиться решать системы нелинейных алгебраических уравнений в средах MathCAD и MathLab. Понять основные отличия при решении СНАУ в этих системах. Рассмотреть методы и средства решения СНАУ в этих средах. Научиться применять встроенные возможности сред MathCAD и MathLab для решения СНАУ

 

Актуальность  рассматриваемой задачи: Высокая. Никак нельзя отрицать, что СНАУ применяются крайне часто для решения любых классов задач. Проблема решения СНАУ никогда не канет в лету. Системы уравнений это один из базисов математики. Также всем известно, что при описании сложных процессов никак нельзя пользоваться только одним уравнением, приходится использовать системы из уравнений. А значит крайне важно знать и уметь решать такие системы. Тем более важно знать различные методы и способы их решения. К счастью для этого существуют прекрасные программы, которые ускоряют само решение, а также пресекают даже саму возможность получения ошибки вычисления связанной с невнимательностью присущей человеку. Это замечательно, ведь освоив всего один такой метод, можно быстро решать целые классы задач. В данной работе рассмотрены две программы MathCAD и MathLab прекрасной фирмы Math Works, Inc. Эти программы позволяют решать СНАУ быстро и надежно, а средства для решения этих задач представлены ниже.

Описанные ниже методы позволяют в  короткий срок научиться решать СНАУ используя MathCAD или MathLab. Также можно получить быструю возможность решения СНАУ просто скопировав приведенные здесь программы, в нужную вам среду.

 

Введение

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

 

Решение Систем Нелинейных Алгебраических уравнений в среде MathCAD.

Рассмотрим  решение алгебраических нелинейных уравнений и систем таких уравнений.  
Задача ставится следующим образом. Пусть имеется одно алгебраическое уравнение с неизвестным х. £(х)=0, или система N алгебраических уравнений где f (х) - некоторая функция. Требуется найти корни уравнения, т. е. все значения х, которые переводят уравнение (или, соответственно, систему и уравнений) в верное равенство (равенства).

         Как правило, отыскание корней численными методами связано с несколькими задачами:  
- исследование существования корней в принципе, определение их количества и примерного расположения;  
- отыскание корней с заданной погрешностью TOL.  
Последнее означает, что надо найти значения х0, при которых f (х0) отличается от нуля не более чем на TOL. Почти все встроенные функции системы  
MathCAD, предназначенные для решения нелинейных алгебраических уравнений, нацелены на решение второй задачи, т. е. предполагают, что корни уже приблизительно локализованы. Чтобы решить первую задачу (предварительной локализации корней), можно использовать, например, графическое представление f(x) , или последовательный поиск корня, начиная из множества пробных точек, покрывающих расчетную область(сканирование). MathCAD предлагает несколько встроенных функций, которые следует применять в зависимости от специфики уравнения, т. е. свойств f (х). Для решения одного уравнения с одним неизвестным служит функция root, реализующая метод секущих для решения системы -вычислительный блок Given/Find, сочетающий различные градиентные методы. Если f(x) - это полином, то вычислить все его корни можно также с помощью функции polyroots. Кроме того, в некоторых случаях приходится сводить решение уравнений к задаче поиска экстремума. Различные приемы нахождения экстремумов функций реализуются при помощи встроенных функций Minerr, Maximize и Minimize. В конце рассказывается о символьном решении уравнений и о возможной программной реализации эффективного метода решения серии алгебраических уравнений или задач оптимизации, зависящих от параметра .

 

1.1. Одно  уравнение с одним неизвестным

Рассмотрим  одно алгебраическое уравнение с  одним неизвестным х.  
f(x}=0, например, sin(x)=0.  
Для решения таких уравнений MathCAD имеет встроенную функцию root, которая, в зависимости от типа задачи, может включать либо два, либо че- тыре аргумента и, соответственно, работает несколько по-разному.  
- roottf(х),х);  
- roottf(х),х,а,Ь);  
f (х) - скалярная функция, определяющая уравнение ;  
х - скалярная переменная, относительно которой решается уравнение;  
а,b - границы интервала, внутри которого происходит поиск корня.  
Первый тип функции root требует дополнительного задания начального значения (guess value) переменной х. Для этого нужно просто предварительно присвоить х некоторое число. Поиск корня будет производиться вблизи  
этого числа. Таким образом, присвоение начального значения требует априорной информации о примерной локализации корня.  
Приведем пример решения очень простого уравнения sin(x)=o, корни которого известны заранее.  
Листинг 1.1. Поиск корня нелинейного алгебраического уравнения  
 
Рис. 1.1. Графическое решение уравнения sin(x)=0  
График функции f (x)=sin(x) и положение найденного корня показаны на рис. 1.1. Обратите внимание, что хотя уравнение имеет бесконечное количество корней , MathCAD находит (с заданной точностью) только один из них, х0, лежащий наиболее близко к х=о.5. Если задать другое начальное значение, например, х=з, то решением будет другой корень уравнения xi=n и т. д. Таким образом, для поиска корня средствами MathCAD требуется его предварительная локализация. Это связано с особенностями выбранного численного метода, который называется методом секущих и состоит в следующем: 
1. Начальное приближение принимается за о-е приближение к корню: хО=х.  
2. Выбирается шаг и определяется первое приближение к корню xl=xO+h.  
3. Через эти две точки проводится секущая - прямая линия, которая пересекает ось х в некоторой точке х2. Эта точка принимается за второе приближение.  
4. Новая секущая проводится через первую и вторую точки, тем самым определяя третье приближение, и т. д.  
5. Если на каком-либо шаге оказывается, что уравнение выполнено, т. е.If (x) |<TOL, то итерационный процесс прерывается, и х выдается в качестве решения.  
 
Рис. 1.2. Иллюстрация метода секущих  
Результат, показанный на рис. 1.2, получен для погрешности вычислений, которой в целях иллюстративности предварительно присвоено значение то b=о.5. Поэтому для поиска корня с такой невысокой точностью оказалось достаточно одной итерации. В вычислениях, приведенных в листинге 1.1,погрешность TOL=O.OOI была установлена по умолчанию, и решение, выданное численным методом, лежало намного ближе к истинному положению корня х=о. Иными словами, чем меньше константа TOL, тем ближе к нулю будет значение f (х) в найденном корне, но тем больше времени будет затрачено вычислительным процессором MathCAD на его поиск.  Если уравнение неразрешимо, то при попытке найти его корень будет выдано сообщение об ошибке. Кроме того, к ошибке или выдаче неправильного корня может привести и попытка применить метод секущих в области локального максимума или минимума f(x). В этом случае секущая может иметь направление, близкое к горизонтальному, выводя точку следующего приближения далеко от предполагаемого положения корня. Для решения таких уравнений лучше применять другую встроенную функцию Minerr. Аналогичные проблемы могут возникнуть, если начальное приближение выбрано слишком далеко от настоящего решения, или f (х) имеет особенности типа бесконечности.  
Иногда удобнее задавать не начальное приближение к корню, а интервал[а,b], внутри которого корень заведомо находится. В этом случае следует использовать функцию root с четырьмя аргументами, а присваивать начальное значение х не нужно, как показано в листинге 1.2. Поиск корня будет осуществлен в промежутке между а и ь альтернативным численным методом(Риддера или Брента).  

Листинг 1.2. Поиск  корня алгебраического уравнения  в заданном интервале  
 
Обратите внимание, что явный вид функции f (х) может быть определен непосредственно в теле функции root.  
Когда root имеет четыре аргумента, следует помнить о двух ее особенностях:  
- внутри интервала [а,ь] не должно находиться более одного корня, иначе будет найден один из них, заранее неизвестно какой именно;  
- значения f (а) и f(b) должны иметь разный знак, иначе будет выдано сообщение об ошибке.  
Если уравнение не имеет действительных корней, но имеет мнимые, то их также можно найти. В листинге 1.3 приведен пример, в котором уравнение х2+1=о, имеющее два чисто мнимых корня, решается два раза с разными начальными значениями. При задании начального значения 0.5 (первая строка листинга) численный метод отыскивает первый корень (отрицательную мнимую единицу -i), а при начальном значении -0.5 (третья строка листинга) находится и второй корень (i).  
Листинг 1.3. Поиск мнимого корня  
 
Для решения этого уравнения второй вид функции root (с четырьмя, а нес двумя аргументами) неприменим, поскольку f (х) является положительно-определенной, и указать интервал, на границах которого она имела бы разный знак, невозможно.  
Остается добавить, что f (х) может быть функцией не только х, а любого количества аргументов. Именно поэтому в самой функции root необходимо определить, относительно какого из аргументов следует решить уравнение. Эта возможность проиллюстрирована листингом 8.4 на примере функции двух переменных f (х,у)=х22+з. В нем сначала решается уравнение f (х,0)=о относительно переменной х, а потом - другое уравнение f (i,y)=o относительно переменной у.  
Листинг 1.4. Поиск корня уравнения, заданного функцией двух переменных  
 
В первой строке листинга определяется функция f(x,y), во второй и третьей - значения, для которых будет производиться решение уравнения по у их соответственно. В четвертой строке решено уравнение f (х,0)=о, а в последней -уравнение f (i,y)=o. He забывайте при численном решении уравнений относительно одной из переменных предварительно определить значения остальных переменных. Иначе попытка вычислить уравнения приведет к появлению ошибки "This variable or function is not defined above", в данном случае говорящей о том, что другая переменная ранее не определена. Конечно, можно указать значение других переменных непосредственно внутри функции root, беспрепятственно удалив, например, вторую и третью строки листинга 1.4, и введя его последние строки в виде root(f (x,0) ,х)= иroot (f (1, у), у) =, соответственно.

 
1.2. Корни полинома

 

         Если функция f (х) является полиномом, то все его корни можно определить, используя встроенную функцию polyroots(v), где v - вектор, составленный из коэффициентов полинома.  
Поскольку полином N-Й степени имеет ровно N корней (некоторые из них могут быть кратными), вектор v должен состоять из N+I элемента. Результатом действия функции polyroots является вектор, составленный из N корней рассматриваемого полинома. При этом нет надобности вводить какое-либо начальное приближение, как для функции root. Пример поиска корней полинома четвертой степени иллюстрируется листингом 8.5.  
Листинг 8.5. Поиск корня полинома  
 
Коэффициенты рассматриваемого в примере полинома f (x) = (x-3)-(x-l)3=x4-6x3+12x2-10x+3 записаны в виде вектора в первой строке листинга. Первым в векторе должен идти свободный член полинома, вторым - коэффициент при х1 и т. д.Соответственно, последним N+I элементом вектора должен быть коэффициент при старшей степени XN.  
Иногда исходный полином имеется не в развернутом виде, а, например, как произведение нескольких полиномов. В этом случае определить все его коэффициенты можно, выделив его и выбрав в меню Symbolics (Символика) пункт Expand (Разложить). В результате символьный процессор MathCAD сам преобразует полином в нужную форму, пользователю надо будет только корректно ввести ее в аргументы функции polyroots. 
Во второй строке листинга 1.5 показано действие функции polyroots. Обратите внимание, что численный метод вместо двух из трех действительных единичных корней (иными словами, кратного корня 1) выдает два мнимых числа. Однако малая мнимая часть этих корней находится в пределах погрешности, определяемой константой TOL, и не должна вводить пользователей в заблуждение. Просто нужно помнить, что корни полинома могут быть комплексными, и ошибка вычислений может сказываться как на действительной, так и на комплексной части искомого корня.  
Для функции polyroots можно выбрать один из двух численных методов -метод полиномов Лаггера (он установлен по умолчанию) или метод парной матрицы.  
Для смены метода:  
1. Вызовите контекстное меню, щелкнув правой кнопкой мыши на слове polyroots.  
2. В верхней части контекстного меню выберите либо пункт LaGuerre(Лаггера), либо Companion Matrix (Парная матрица).  
3. Щелкните вне действия функции polyroots - если включен режим автоматических вычислений, будет произведен пересчет корней полинома в соответствии с вновь выбранным методом.  
Для того чтобы оставить за MathCAD выбор метода решения, установите флажок AutoSelect (Автоматический выбор), выбрав одноименный пункт в том же самом контекстном меню.  

        1.3. Системы уравнений

 
Рассмотрим решение системы N нелинейных уравнений с м неизвестными  
Некоторые скалярные функции от скалярных переменных и, возможно, от еще каких-либо переменных. Уравнений может быть как больше, так и меньше числа переменных. Заметим, что систему (1) можно формально переписать в виде f(x)=o, где х - вектор, составленный из переменных xi,x2,... ,хм, a f (x) - соответствующая векторная функция.  
Для решения систем имеется специальный вычислительный блок, состоящий из трех частей, идущих последовательно друг за другом:- Given - ключевое слово;  
- система, записанная логическими операторами в виде равенств и, возможно, неравенств;  
- Find (xi,... ,XM) - встроенная функция для решения системы относительно переменных xi,... ,хм.  
Вставлять логические операторы следует, пользуясь панелью инструментов Boolean (Булевы операторы). Если вы предпочитаете ввод с клавиатуры, помни, что логический знак равенства вводится сочетанием клавиш<Ctrl>+<=>. Блок Given/Find использует для поиска решения итерационные методы, поэтому, как и для функции root, требуется задать начальные значения для всех XI,...,XM. Сделать это необходимо до ключевого слова Given. Значение функции Find есть вектор, составленный из решения по каждой переменной. Таким образом, число элементов вектора равно числу аргументов Find. В листинге 1.6 приведен пример решения системы двух уравнений.  

Листинг 1,6. Решение системы уравнений  
 
В первых двух строках листинга вводятся функции, которые определяют систему уравнений. Затем переменным х и у, относительно которых она будет решаться, присваиваются начальные значения. После этого следует ключевое слово Given и два логических оператора, выражающих рассматриваемую систему уравнений. Завершает вычислительный блок функция Find, значение которой присваивается вектору v. Следующая строка показывает содержание вектора v, т. е. решение системы. Первый элемент вектора есть первый аргумент функции Find, второй элемент - ее второй аргумент. В последних двух строках осуществлена проверка правильности решения уравнений.  
Отметим, что уравнения можно определить непосредственно внутри вычислительного блока. Таким образом, можно не определять заранее функции f (х,у) ид(х,у), как это сделано в первых двух строках листинга 1.6, а сразу написать:  
Такая форма представляет уравнения в более привычной и наглядной форме, особенно подходящей для документирования работы.  
Графическая интерпретация рассмотренной системы представлена на рис. 1.3. Каждое из уравнений показано на плоскости XY графиком. Первое - сплошной кривой, второе - пунктиром. Поскольку второе уравнение линейное, то оно определяет на плоскости XY прямую. Две точки пересечения кривых соответствуют одновременному выполнению обоих уравнений, т. е. искомым действительным корням системы. Как нетрудно убедиться, в листинге найдено только одно из двух решений - находящееся в правой нижней части графика. Чтобы отыскать и второе решение, следует повторить вычисления, изменив начальные значения так, чтобы они лежали ближе к другой точке пересечения графиков, например x=-i, y=-i.  
 
 
Рис. 1.3. Графическое решение системы двух уравнений  
Пока мы рассмотрели пример системы из двух уравнений и таким же числом неизвестных, что встречается наиболее часто. Но число уравнений и неизвестных может и не совпадать. Более того, в вычислительный блок можно добавить дополнительные условия в виде неравенств. Например, введение ограничения на поиск только отрицательных значений х в рассмотренный выше листинг 1.6 приведет к нахождению другого решения, как это показано в листинге 1.7.  
Листинг 1.7. Решение системы уравнений и неравенств  
 
Обратите внимание, что, несмотря на те же начальные значения, что ив листинге 8.6, мы получили в листинге 1.7 другой корень. Это произошло именно благодаря введению дополнительного неравенства, которое определено в блоке Given в предпоследней строке листинга 1.7.  
Если предпринять попытку решить несовместную систему, MathCAD выдаст сообщение об ошибке, гласящее, что ни одного решения не найдено, и предложение попробовать поменять начальные значения или значение погрешности.  
Вычислительный блок использует константу CTOL в качестве погрешности выполнения уравнений, введенных после ключевого слова Given. Например ^ если сто ь=0.001, то уравнение х=Ю будет считаться выполненным и при х=10.001,и при х=9.999. Другая константа TOL определяет условие прекращения итераций численным алгоритмом Значение CTOL может быть задано пользователем также, как и TOL, например, CTOL: =0.01. По умолчанию принято, что CTOL=TOL=O. 001, но вы по желанию можете переопределить их. 
Особенную осторожность следует соблюдать при решении систем с число известных большим, чем число уравнений. Например, можно удалить одно из двух уравнений из рассмотренного нами листинга 1.6, попытавшись решить единственное уравнение д(х,у)=о с двумя неизвестными х и у. В такой постановке задача имеет бесконечное множество корней: для любого х и, соответственно, у=-х/2 условие, определяющее единственное уравнение, выполнено. Однако даже если корней бесконечно много, численный метод будет производить расчеты только до тех пор, пока логические выражения в вычислительном блоке не будут выполнены (в пределах погрешности). После этого итерации будут остановлены и выдано решение. В результате будет найдена всего одна пара значений (х,у), обнаруженная первой.  
Вычислительным блоком с функцией Find можно найти и корень уравнения с одним неизвестным. Действие Find в этом случае совершенно аналогично уже рассмотренным в данном разделе примерам. Задача поиска корня рассматривается как решение системы, состоящей из одного уравнения. Единственным отличием будет скалярный, а не векторный тип числа, возвращаемого функцией Find. Пример решения уравнения из предыдущего раздела приведен в листинге 1.8.  
Листинг 1.8. Поиск корня уравнения с одним неизвестным с помощью функции Find  
 
Оно состоит в том, что одна и та же задача решена различными численными методами. В данном случае выбор метода не влияет на окончательный результат, но бывают ситуации, когда применение того или иного метода имеет решающее значение.  
1.4. О численных методах решения систем уравнений  
Если вы решаете "хорошие" уравнения, как все те, которые были приведены в предыдущих разделах, то можете никогда не задумываться, как именно MathCAD ищет их корни. Однако даже в этом случае полезно представлять, что происходит "за кадром", т. е. какие действия совершаются в промежутке между введением необходимых условий после ключевого слова Given и получением результата после применения функции Find. Это важно хотя бы с позиций выбора начальных значений переменных перед вычислительным блоком. Рассмотрим в данном разделе некоторые особенности численных методов и возможности установки их различных параметров, которые предоставляет MathCAD.  
Функция Find реализует градиентные численные методы. Покажем их основную идею на примере уравнения с одним неизвестным f (x)=o для функции f (х)=х2+5х+2, график которой показан на рис. 8.4. Основная идея градиентных методов состоит в последовательных приближениях к истинному решению уравнения, которые вычисляются с помощью производной отf(x). Приведем наиболее простую форму алгоритма, называемого методом Ньютона:  
1. За нулевую итерацию принимается введенное пользователем начальное значение хО=х.  
2. В точке хо методом конечных разнос и вычисляется производная f (xO).  
3. Пользуясь разложением Тейлора, можно заменить f (х) в окрестности хО касательной - прямой линией f (x) = f(xO)+f (xO)-(x-xO).  
4. Определяется точка xi, в которой прямая пересекает ось х (см. рис. 8.4).  
5. Если f (х1)<тоь, то итерации прерываются, и значение xi выдается в качестве решения. В противном случае xi принимается за новую итерацию, и цикл повторяется: строится касательная к f (х) в точке xl, определяетсях2 - точка ее пересечения с осью х и т. д.  
 
 
Рис. 1.4. Иллюстрация метода Ньютона  
Модификация алгоритма Ньютона для решения системы нескольких уравнений заключается в линеаризации соответствующих функций многих переменных, т. е. аппроксимации их линейной зависимостью с помощью частных производных. Например, для нулевой итерации в случае системы двух уравнений используются выражения типа:  
 
Чтобы отыскать точку, соответствующую каждой новой итерации, требуется приравнять оба равенства нулю, т. е. решить на каждом шаге полученную систему линейных уравнений.  
MathCAD предлагает три различных вида градиентных методов. Чтобы поменять численный метод:  
1. Щелкните правой кнопкой мыши на названии функции Find.  
2. Наведите указатель мыши^а пункт Nonlinear (Нелинейный) в контекстном меню.  
3. В появившемся подменю (рис. 1.5) выберите один из трех методов: Conjugate Gradient (Сопряженных градиентов), Quasi-Newton (Квази-Нью-тоновский) или Levenberg-Marquardt (Левенберга).  
 
 
Рис. 1.5. Смена численного метода  
Чтобы вернуть автоматический выбор типа численного метода, в контекстном меню надо выбрать пункт AutoSelect (Автоматический выбор). Если установлена опция автоматического выбора (о чем говорит флажок, установленный в пункте AutoSelect), то текущий тип численного метода можно узнать, вызвав то же самое подменю и посмотрев, который из них отмечен точкой. Два последних метода являются квази-Ньютоновскими, основная идея которых была рассмотрена выше. Первый из них, метод сопряженных градиентов, является двух шаговым, - для поиска очередной итерации он использует как текущую, так и предыдущую итерации. Алгоритм Левенберга подробно описан в справочной системе MathCAD, а подробную информацию о методах Ньютона и сопряженных градиентов можно найти в большинстве книг по численным методам.  
Помимо выбора самого метода, имеется возможность устанавливать их некоторые параметры. Для этого нужно вызвать с помощью того же контекстного меню диалоговое окно Advanced Options (Дополнительные параметры),выбрав в контекстном меню пункты Nonlinear / Advanced options(Нелинейный / Дополнительные параметры). В этом диалоговом окне(рис. 1.6) имеются три группы переключателей, по два в каждой. В первой строке Derivative estimation (Аппроксимация производной) определяется метод вычисления производной Forward (Вперед) или Central (Центральная).Они соответствуют аппроксимации производной либо правой (двух точечная схема "вперед"), либо центральной (трехточечная симметричная схема) конечной разностью.  
Во второй строке Variable estimation (Аппроксимация переменных) можно определить тип аппроксимации рядом Тейлора. Для рассмотренного нами в  
этом разделе случая аппроксимации касательной прямой линией выберите переключатель Tangent (Касательная), для более точной квадратичной аппроксимации (параболой), выберите Quadratic (Квадратичная). Наконец, последняя группа переключателей Linear variable check (Проверка линейности) позволяет в специфических задачах сэкономить время вычислений. Если вы уверены, что нелинейности всех функций, входящих в уравнение, мало сказываются на значениях всех их частных производных, то установите переключатель Yes (Да). В этом случае производные будут приняты равными константам и не будут вычисляться на каждом шаге.  
 
Рис. 1.6. Диалоговое окно Advanced Options  
Как мы убедились в этом разделе, все градиентные методы, реализованные в функции Find, требуют многократного вычисления производных. Если выработаете с достаточно гладкими функциями, то градиентные методы обеспечивают быстрый и надежный поиск корня. Для поиска корня недостаточно гладких функций одной переменной: лучше использовать метод секущих(функцию root). Поэтому правильный выбор численного метода и его параметров может помочь при решении нестандартной задачи.  

Информация о работе Сравнительная характеристика методик решения систем нелинейных алгебраических уравнений в средах MathCAD и MathLab