Раздел: Документация
0 ... 97 98 99 100 101 102 103 ... 177 □Пункт Linear (Линейный) отвечает за реализацию итеративного метода (симплекс-метод) решения системы линейных уравнений. Обычно Mathcad самостоятельно относит систему уравнений к той или иной группе, поэтому специально настраивать этот параметр нет необходимости. Более подробно вопрос о решении СЛАУ был рассмотрен ранее. □При подведении курсора к строке Nonlinear откроется всплывающее меню, содержащее ссылки на три различных численных метода решения систем уравнений: сопряженных градиентов (Conjugate gradient), Левенберга (Levenberg-Marquardt), квазиньютоновский (Quasi-Newton). Вдаваться в подробности каждого из них мы не будем по одной простой причине: очень трудно предсказать, какой из методов окажется эффективнее для данной системы уравнений. Чаще всего их эффективность оказывается близка, поэтому гораздо более принципиальное значение имеет правильный выбор начальных приближений и точности. Чтобы сравнить эффективность встроенных в Mathcad численных методов, решим систему уравнений с заведомо известными корнями и сопоставим точности полученных результатов. Пример 8.31. Точность решения системы уравнений различными методами Выберем систему так, чтобы ее корни были равны., например, (1,2,3). Решать ее будем при стандартной точности (TOL-T0 х := 0у := Оz:=0 Given 2 2 2 гл х + у + z = 14 Метол сопряженных градиентов: find(x,y,z) /-3> 2 Метод Левенберга: find (х,у ,z) - Квал и ньютоновский метод: (1 I У) х + у + z — Б xyz = 6 t-6i -2.03 2263040 51896 * 10 1 2.35318717667354 хЮ .- 6 - 7 V,-3.20924135155387 МО ) 0.000000000000000 -2,88657986402541х 10" ч 1.77635683940025x10" 15 15 -4.06755012072324x10 4.76041154673368*10 6 1, - 6 -6.92861425233282x10 ) Проверка показала более высокую эффективность метода Левепберга, Впрочем, это неудивительно, ведь в системе Mathcad он считается основным. Но и остальные алгоритмы показали неплохой результат. В общем же случае (ввиду того что на практике, как правило, суперточности и не требуется) нет разницы, какой из методов использовать, и прибегать к их смене стоит только в случае, если алгоритм, установленный но умолчанию, не смог найти решения. Если же система содержит много сложных уравнений и корни необходимо определить максимально точно, стоит сменить режим AutoSelect на режим Nonlinear/Levenberg-Marquardt. В описываемом всплывающем меню, помимо выбора самого численного метода решения систем уравнений, можно настроить некоторые параметры его работы. Сделать это можно в специальном окне Advanced Options (Дополнительные параметры). Здесь имеется пять строк, в которых находятся по два переключателя, ответственных за ту или иную настройку (рис. 8.12). Рис. 8.12. Окно тонких настроек функции find В первой строке (Derivative Estimation) можно настроить тип аппроксимации производной; либо центральной (Central), либо правой (Forward) конечной разностью. По умолчанию производная вычисляется по трехточечной симметричной схеме: это хотя и несколько более медленно, зато дает лучшие результаты. Так, при замене в методе сопряженных градиентов центральной схемы на правую двухточечную рассмотреннаявыше система решена не была, хотя при использовании параметра Central кпрни были найдены легко и с большой точностью. Поэтому не стоит менять схему вычисления производной, даже если корни не были найдены; это почти наверняка приведег лишь к худшим результатам. Во второй строке можно определить тип аппроксимации функции: либо касательной (Tangent), либо параболой (Quadratic), Квадратичная аппроксимация более точная, но и более чувствительная к виду функции. Поэтому, дабы избежать лишних ошибок, по умолчанию определено использование касательных. Но если решение найдено не было, можно попробовать использовать квадратичное приближение. Строка Linear Variable Check отвечает за проверку линейности вашей функции относительно поименных. Это может помочь сэкономить время за счет того, что частные производные будут приняты на первом шаге за константы и не будут вычисляться при каждой итерации. Впрочем, задачи, для которых этот параметр может быть полезен, крайне специфичны предки, поэтому менять установки в этой строке не стоит. CrTOKaMultistart ннте)есна только в том случае, если в блоке Given используется не функция Find, а функции Maximize и Minimiae (они служат для определения минимума и максимума функции). При активации данного параметра система будет пытаться найти глобальный экстремум, а не ограничится поиском ближайшего локального экстремума. Hl#Kt«t Настройка Evolutionary может помочь найти решения в случае функций с многочисленными экстремумами, точками и областями недифференцируемости. Используемые блоком Given-Find градиентные методы очень чувствительны к виду функции, поэтому столь важно правильно выбирать начальное приближение. Модификация же, активируемая настройкой Evolutionary, позволяет значительно снизить данную чувствительность. Также она помогает найти из нескольких решении оптимальное, даже если оно расположено далеко от точки начального приближения. Настройки окна Advanced Options работают только для метода сопряжетгых градиентов и квазиньютоновского метода. На алгоритм метода Левенберга они никак не влияют. Нельзя не упомянуть о еще одной очень полезной возможности блока Given-Find: в состав системы могут входить не только уравнения, но и неравенства (в которых можно использовать любые логические операторы). В некоторых случаях это может помочь ограничить количество решений, и тем самым облегчить поиск нужного. Пример 8.32. Решение системы уравнений при наличии ограничений на величины корней х := 1у := I Given х - у = 8 х3 + у3= 27 X должен лежать в пределах от -10 до 10, у не доджей быть равен 1: -10й х£ Юл у* I (2.97?\ find(x,y> = 0.912 Ограничения на величину корней не должны соблюдаться абсолютно точно. Аналогично тому, как функция считается равной нулю, если ее величина по модулю меньше T0L, так и ограничивающее неравенствобудетеготтаться соблюденным, если отклонение от него не превышает определенного порога. Порог этот задается специальной системной константой CTOL (Constraint Tolerance - Точность ограничения). К примеру, при CT0L-1Q неравенство х>5 окажется невыполненным, если х-5.099. По умолчанию CT0L равняется 10"3, ее предельная величина — 10~". Задать се можно точно так же, как T0L: переопределением на рабочем поле или открыв вкладку Build-in Variables (Встроенные переменные) окна Worksheet Options (Параметры документа). Менять CTDL в сторону уменьшения нужно тогда, когда результат должен быть получен с максимальной точностью. Однако нужно учитывать, что при этом может возрасти нремя расчета вплоть до того, что система посчитает, что корня не существует. Поэтому стоит воздержаться от «профилактического* присваивания CTOL предельного значения. Довольно очевиден следующий вывод: простые уравнения и системы лучше решать символьно, более сложные — численно. Вообще, численные методы куда более универсальны и надежны. Однако у них есть один весьма существенный недостаток: корни определяются не точно, а с заданной погрешностью вычислений, Предельно высоким уровнем точности работы функции find является Ю-11-10"*. Для очень многих практически важных задач такой точности явно недостаточно Кроме того, для всех итерационных численных методов характерно накопление ошибки, которое может довольно 0 ... 97 98 99 100 101 102 103 ... 177
|