Мегаобучалка Главная | О нас | Обратная связь


Нелинейные системы уравнений.



2019-10-11 241 Обсуждений (0)
Нелинейные системы уравнений. 0.00 из 5.00 0 оценок




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

Работа с матрицами тесно связана с таким разделом математики, как решение систем линейных алгебраических уравнений (СЛАУ).

Способы решения СЛАУ делятся на две группы:

1. точные методы, представляющие собой конечные алгоритмы для вычисления корней системы (решение систем с помощью обратной матрицы, правило Крамера, метод Гаусса и др.),

2. итерационные методы, позволяющие получить решение системы с заданной точностью путем сходящихся итерационных процессов (метод итерации, метод Зейделя и др.).

Заметим, что вследствие неизбежных округлений результаты даже точных методов являются приближенными. При использовании итерационных методов, сверх того, добавляется погрешность метода. К тому же эффективное применение итерационных методов существенно зависит от удачного выбора начального приближения и быстроты сходимости процесса.

Рассмотрим систему n линейных алгебраических уравнений относительно n неизвестных х1, х2, …, хn:

,

Где – матрица коэффициентов, а  – вектор правых частей. Системы линейных уравнений удобно решать с помощью функции lsolve, где аргументами являются матрица коэффициентов и вектор правых частей:

lsolve (А, b ).

Функция возвращает вектор решения x такой, что Ах = b.

Заметим, что перед использованием функции lsolve желательно вычислить определитель матрицы коэффициентов и число ее обусловленности, чтобы убедиться в существовании и единственности решения. Еще одним условием существования единственного решения является условие равенства ранга матрицы числу ее столбцов ( rank ( M ) =cols ( M ) ), выполнение этого условия гарантирует линейную независимость уравнений системы.

Функция lsolve использует LU–разложение из библиотеки BLAS/LAPACK, которую можно найти по адресу: http://www.intel.com/software/products/mkl/features/lin_alg.htm. Применение функции lsolve показано на рис.2.5.

Рис.2.5. Решение СЛАУ функцией lsolve

Метод Гаусса

Метод Гаусса, его еще называют методом Гауссовых исключений, состоит в том, что исходную систему приводят последовательным исключением неизвестных к эквивалентной системе с треугольной матрицей:

решение которой находят по рекуррентным формулам:

В Mathcad прямой и обратный ходы метода Гаусса выполняет функция rref(A). На Рис.2. 6 показано решение СЛАУ методом Гаусса, в котором используются следующие функции:

augment(A, В) – Возвращается массив М, сформированный расположением A и b бок о бок. Массивы A и b должны иметь одинаковое число строк.

rref(М) – Возвращается решение системы уравнений с расширенной матрицей М.

submatrix(A, ir, ic, jr, jc) – Возвращается подматрица, содержащая ответ.

 

Рис.2.6 Решение СЛАУ методом Гаусса

 

Нелинейные системы уравнений.

Если надо решить систему нелинейных уравнений (или неравенств), используют так называемый блок решения, который начинается с ключевого слова G iven (дано) и заканчивается вызовом функции F ind (найти) или Minerr . Между ними располагают «логические утверждения», задающие ограничения на значения искомых величин, т.е., уравнения или неравенства. Всем переменным, используемым для обозначения неизвестных величин, должны быть заранее присвоены начальные значения.

Чтобы записать уравнение, в котором утверждается, что левая и правая части равны, используется знак логического равенства ("жирное равно") — кнопка Boolean Equals (Логическое равно) на "логической" панели инструментов или Ctrl+"=". Другие знаки логических условий также можно найти на этой панели.

Заканчивается блок решения вызовом функции F ind/ Minerr, у которой в качестве аргументов должны быть перечислены искомые величины. Эта функция возвращает вектор, содержащий вычисленные значения неизвестных.

При использовании блока Given / Find Mathcad применяет для решения систем уравнений и неравенств итерационный метод Левенберга–Маркардта. Этот метод Mathcad заимствован из свободно распространяемого пакета алгоритмов MINPACK, разработанного и издаваемого Аргоннской Национальной Лабораторией в Аргонне, Штат Иллинойс. Этот пакет подробно описан в Users Guide to Minpack I, by Jorge J. More, Burton S. Garbow, and Kenneth E. Hillstrom, Argonne National Laboratory publication ANL–80–74, 1980. Алгоритм MINPACK пытается найти нули или, в наихудшем случае, минимизировать сумму квадратов компонент вектора значений нескольких функций, зависящих от нескольких переменных при заданных неравенствами ограничениях. Вектор функций, используемый Mathcad, есть вектор невязки, компоненты которого представляют собой невязки в отдельных уравнениях или неравенствах. Определение невязок таково:

· Для уравнений:

error = left_side – right_side

· Для неравенств <, >, , или :

error = 0

если неравенство истинно, иначе

error = left_side right_side

Когда решение ищется в поле комплексных чисел, Mathcad рассматривает вещественные и мнимые части как отдельные переменные в алгоритме и создает из комплексного уравнения два вещественных, отделяя вещественную и мнимую части исходного уравнения. Пример использования блока Given / Find представлен на рис.2.7.

Метод Левенберга–Маркардта является квазиньютоновским методом (разновидностью градиентного метода). Метод Левенберга–Маркардта неприменим в случае, когда неизвестных меньше, чем ограничений. В этих случаях Mathcad возвращает ошибку “слишком мало ограничений”.

 

 Рис.2. 7 Пример использования блока Given / Find

 

 Алгоритм Левенберга — Маркардта — это метод оптимизации, направленный на решение задач о наименьших квадратах. Является альтернативой методу Гаусса — Ньютона и может рассматриваться как комбинация последнего с методом градиентного спуска или как метод доверительных интервалов. Алгоритм был сформулирован независимо Левенбергом (1944) и Маркадтом (1963).

Расчет по методу Левенберга–Маркардта заканчивается, когда выполняется один из следующих критериев окончания:

· Когда больше невозможно заметно уменьшить норму вектора невязки. В этом контексте “заметно” означает больше, чем больший из TOL и TOL |error_vector|. Этот критерий останавливает процесс решения, когда невязки не могут быть уменьшены далее.

· Когда различие между текущим приближением и приближением, полученным на предыдущем шаге итераций становится относительно малым, т.е, когда относительно малой становится норма вектора s=|х k +1k |. В этом методе “относительно малый” означает норму меньшую, чем больший из TOL и TOL |s|. Этот критерий останавливает процесс решения, когда не находится нового определенного приближения.

Когда Mathcad достигает одного из этих условий окончания, то он проверяет величину вектора невязки и возвращает ответ:

· Если величина вектора невязки меньше или равна TOL, то Mathcad возвращает в качестве ответа значения неизвестных.

· Если система решается функцией Find, и величина вектора невязки оказывается больше, чем TOL, то Mathcad отмечает систему уравнений сообщением об ошибке “решение не найдено”. Если система решается функцией Minerr, то Mathcad возвращает решение в любом случае, даже если вектор невязки не близок к нулю.

Если процесс поиска решения заканчивается вследствие исчерпания заданного числа итераций, а ответ еще не найден, то состояния Find или Minerr отмечаются сообщением об ошибке “отсутствует сходимость”.

Во всех случаях, когда процесс решения заканчивается, Mathcad присваивает переменной ERR величину вектора невязки.

Для того, чтобы сделать метод Левенберга–Маркардта более эффективным, Mathcad применяет следующие модификации исходного метода:

· При первой остановке процесса итераций в точке, не являющейся решением, Mathcad добавляет малое случайное смещение к неизвестным и вновь начинает итерации. Этот прием позволяет избегнуть зависания процесса итераций в локальных минимумах и подобных особенностях рельефа модуля функции — левой части системы уравнений. Mathcad делает это только один раз в первой встреченной подобной точке.

· Если в решаемой системе присутствуют неравенства, Mathcad вначале решает только подсистему, состоящую из неравенств, а потом добавляет уравнения и пытается решить полную систему. Это эквивалентно выбору начального приближения в области, где все неравенства удовлетворены.

Сообщение об ошибках “решение не найдено при решении уравнений появляется, когда различие между текущим приближением и приближением, полученным на предыдущем шаге итераций, больше, чем значение встроенной переменной TOL, и выполнено одно из следующих условий:

· Достигнута точка, из которой не может быть получено более точное приближение к решению.

· Достигнута точка, из которой невозможно выбрать подходящее направление спуска — направление вдоль которого ищется следующее приближение. В связи с этим продолжать итерации невозможно.

· Достигнут предел точности вычислений. Дальнейшие вычисления не увеличивают точность найденного решения вследствие влияния ошибок округления. Это часто случается, если установлено значение встроенной переменной TOL меньшее, чем 10–15.



2019-10-11 241 Обсуждений (0)
Нелинейные системы уравнений. 0.00 из 5.00 0 оценок









Обсуждение в статье: Нелинейные системы уравнений.

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Личность ребенка как объект и субъект в образовательной технологии: В настоящее время в России идет становление новой системы образования, ориентированного на вхождение...
Как вы ведете себя при стрессе?: Вы можете самостоятельно управлять стрессом! Каждый из нас имеет право и возможность уменьшить его воздействие на нас...
Почему в редких случаях у отдельных людей появляются атавизмы?
Почему двоичная система счисления так распространена?: Каждая цифра должна быть как-то представлена на физическом носителе...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (241)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.007 сек.)