Будем предполагать, что уравнение (1.1) имеет лишь изолированные корни, то есть для каждого корня существует окрестность, не содержащая других корней этого уравнения.
Приближенное решение уравнения состоит из двух этапов:
1. Отделение корней, то есть нахождение интервалов из области определения функции f ( x ), в каждом из которых содержится только один корень уравнения (1).
2. Уточнение корней до заданной точности.
Отделение корней можно проводить графически и аналитически.
с точностью ε = 0,0001. Отделим корень графически. Для этого преобразуем уравнение к виду
и построим графики функций (рис. 4):
Из рисунка видно, что абсцисса точки пересечения этих графиков принадлежит отрезку [0; 1].
Уравнение типа F(x)=0 или x=f(x) называется нелинейным. Решить уравнение это значит найти такое x, при котором уравнение превращается в тождество. В общем случае уравнение может иметь 0; 1; 2;. ∞ корней. Рассмотренные ниже численные методы решения нелинейных уравнений позволяют находить один корень на заданном интервале [a,b]. При этом на интервале должен существовать только один корень. Рассмотрим несколько методов решения нелинейных уравнений.
Рис. Структограмма для метода
F(a)∙F(c) ε. Для определения точки пересечения (i+1) касательной с осью абсцисс воспользуемся следующей формулой (получите формулу самостоятельно). Условие сходимости метода касательных F(x0)∙F»(x0)>0. Структограмма решения нелинейных уравнений методом касательных показана на рис.
Рис. Структограмма для
Рис. Структограмма для метода итераций
Контрольное задание. Лабораторная работа 4.
Решение нелинейных уравнений.
Задание. Решить нелинейное уравнениеуказанными в табл. методами, предварительно определив интервал [a,b], на котором существует решение уравнения. Сделать проверку решения.
Варианты уравнений и методов их решения приведены в таблице.
Нелинейные уравнения и системы уравнений. Методы их решения.
Нелинейные уравнения и системы уравнений. Методы их решения.
Одной из важных задач прикладной математики является задача решения нелинейных уравнений, встречающихся в разных областях научных исследований.
Под нелинейными уравнениями ( nonlinear equations ) понимаются алгебраические и трансцендентные уравнения с одним неизвестным в следующем виде:
,
где — действительное число, — нелинейная функция.
Под системой нелинейных уравнений понимается система алгебраических и трансцендентных уравнений в следующем виде:
Алгебраическое уравнение — это уравнение содержащие только алгебраические функции, которое можно представить многочленом n ‐ ой степени с действительными коэффициентами (целые, рациональные, иррациональные) в следующем виде:
.
Трансцендентное уравнение – это уравнение содержащие в своем составе функции, которые являются не алгебраическими. Простейшими примерами таких функций служат показательная функция, тригонометрическая функция, логарифмическая функция и т.д.
Решением нелинейного уравнения (или системы нелинейных уравнений) называют совокупность (группа) чисел , которые, будучи подставлены на место неизвестных , обращают каждое уравнение (или систему уравнений) в тождество:
.
Для решения нелинейных уравнений (или систем нелинейных уравнений) существует несколько методов решения: графические, аналитические и численные методы.
Графические методы наименее точны, но позволяют в сложных уравнениях определить наиболее приближенные значения, с которых в дальнейшем можно начинать находить более точные решения уравнений.
Аналитические методы (или прямые методы) позволяют определить точные значения решения уравнений. Данный метод позволяет записать корни в виде некоторого соотношения (формул). Подобные методы развиты для решения простейших тригонометрических, логарифмических, показательных, а также алгебраических уравнений. Однако подавляющее большинство нелинейных уравнений, встречающихся на практике, не удается решить прямыми методами. В таких случаях обращаются к численным методам, позволяющим получить приближенное значение корня с любой заданной точностью .
Численные методы решения нелинейных уравнений – это итерационный процесс расчета, который состоит в последовательном уточнении начального приближения значений корней уравнения (системы уравнений). При численном подходе задача о решении нелинейных уравнений разбивается на два этапа:
— локализация (отделение) корней
› Под локализацией корней понимается процесс отыскания приближенного значения корня или нахождение таких отрезков, в пределах которых содержится единственное решение
› Под уточнением корней понимается процесс вычисления приближенных значений корней с заданной точностью по любому численному методу решения нелинейных уравнений.
Недостатком почти всех итерационных методов нахождения корней является то, что они при однократном применении позволяют найти лишь один корень функции, к тому же, мы не знаем какой именно. В случае повторения итерационного процесса при изменении стартовых точек отсутствуют гарантии, что найдется новый корень уравнения, так как итерационный процесс может сойтись к найденному корню.
Для поиска других корней используется метод удаления корней. Данный метод основан на принципе создания новой функции путем деление основной функции на найденный корень уравнения:
.
Так, например, если — корень функции то, чтобы произвести удаление найденного корня и поиск оставшихся корней исходной функции необходимо создать функцию . Точка будет являться корнем функции на единицу меньшей кратности, чем , при этом все остальные корни у функций и совпадают с учетом кратности. Повторяя указанную процедуру, можно найти все корни с учетом кратности.
Следует обратить внимание, что когда производим деление на тот или иной корень , то в действительности мы делим лишь на найденное приближение , и, тем самым, несколько сдвигаем корни вспомогательной функции относительно истинных корней функции . Это может привести к значительным погрешностям, если процедура отделения применялась уже достаточное число раз. Чтобы избежать этого, с помощью вспомогательных функций вычисляются лишь первые итерации, а окончательные проводятся по исходной функции , используя в качестве стартового приближения, последнюю итерацию, полученную по вспомогательной функции.
Локализация корней.
› Локализация корней аналитическим способом
Для отделения корней уравнения необходимо иметь критерий, позволяющий убедится, что, во-первых, на рассматриваемом отрезке имеется корень, а, во-вторых, что этот корень единственный на указанном отрезке. Если функция непрерывна на отрезке , а на концах отрезка её значения имеют разные знаки , то на этом отрезке расположен, по крайней мере, один корень. Дополнительным условием, обеспечивающем единственность корня на отрезке является требование монотонности функции на этом отрезке. В качестве признака монотонности функции можно воспользоваться условием знакопостоянства первой производной . Таким образом, если на отрезке функция непрерывна и монотонна, а ее значения на концах отрезка имеют разные знаки, то на рассматриваемом отрезке существует один и только один корень.
› Локализация корней табличным способом
Рис. 1. Варианты поведения функции на интервале локализации корня
Отделяя, таким образом, корни, мы, по сути, получаем их приближенные значения с точностью до выбранного шага. Так, например, если в качестве приближенного значения корня взять середину отрезка локализации, то абсолютная погрешность этого значения не будет превосходить половины шага поиска ( h /2). Уменьшая шаг в окрестности каждого корня, можно, в принципе, повысить точность отделения корней до любого наперед заданного значения. Однако такой способ требует большого объема вычислений. Поэтому при проведении численных экспериментов с варьированием параметров задачи, когда приходится многократно осуществлять поиск корней, подобный метод не годится для уточнения корней и используется только для отделения (локализации) корней, т.е. определения начальных приближений к ним. Уточнение корней проводится с помощью других, более экономичных методов.
Уточнение корней.
Существует большое количество численных методов решения нелинейных уравнений для уточнения корней, которые условно можно разделить:
› Методы решение уравнений с одним неизвестным. Основными представителями являются:
— метод половинного деления;
— метод простой итерации;
— метод Ньютона для уравнения с одним неизвестным;
Моделирование динамических систем: решение нелинейных уравнений
Конечной целью математического моделирования в любой области знаний является получение количественных характеристик исследуемого объекта. Некоторые параметры пушки, стрельбу из которой мы моделировали в прошлый раз, были заданы в условии задачи: начальная скорость снаряда, его калибр и материал, из которого он изготовлен. Угол наклона ствола можно отнести к варьируемым параметрам: любое серьезное орудие допускает наводку, в том числе и в вертикальной плоскости.
На выходе мы получили траекторию полета снаряда, что дает нам ориентировочные представления о характеристиках орудия: при заданных параметрах мы получили дальность стрельбы чуть более 2,5 км и высоту подъема снаряда чуть выше 800 метров. Точнее мы сказать не можем, вернее можем, если с карандашиком по сетке определим координаты нужных точек на графике. Но это, как известно, не наш метод. Хорошо бы получить эти данные с точностью, обеспечиваемой используемыми нами инструментами и без ручного труда. Вот об этом мы сегодня и поговорим.
1. Постановка задачи
Итак, построенная в прошлый раз математическая модель позволяет нам, для любого момента времени, определить координаты и скорость снаряда. По сути мы получили функции, которые позволяют вычислить следующие параметры траектории:
как функции времени. Высота полета снаряда это y(t). Если мы определим в какой момент времени высота становится равна нулю, то есть решим уравнение
Говоря языком математики, необходимо найти точку экстремума функции . А что надо для этого сделать? Приравнять к нулю её производную! В данном случае производную по времени, то есть решить уравнение
2. Уравнение, которого нет
И вот тут котенка Гава, как известно, ждут неприятности. Начнем с того, что даже если уравнение задано в виде формулы (аналитически) не всегда удается найти его решение. Вот например
Как вам? Простенько, но попробуйте найти икс, используя всё то, чему вас учили в школе. То-то же…
Теперь делаем финт ушами. Математики прошлого хорошо поработали за нас. Если задана функция вида
то обратная ей функция, называется W-функцией Ламберта.
Не в даваясь в теорию ФКП, в которой я мало смыслю, скажу, что число попадает в интервал в котором функция Ламберта многозначна, значит корня будет два
откуда, раскручивая назад все замены получаем ответ
Приближенно этот ужас равен
Решение такого уравнения придется искать численно, тем более что очевидно его графическое решение
В случае с моделью пушки всё несколько коварнее — наше уравнение задано даже не формулой. Оно задано, грубо говоря, таблицей значений фазовых координат, полученных для вполне конкретных параметров выстрела. У нас нет уравнения!
Ну так нам никто не мешает, чёрт возьми, это уравнение построить. Но, прежде чем начать писать скрипты, хочу извинится перед читателем, что ввёл его в заблуждение. В одном файле скрипта Octave можно размещать несколько функций, и имя файле на обязательно должно совпадать с именем функции. Достаточно, чтобы скрипт не начинался с определения функции.
Создадим новый скрипт в том же каталоге, где расположены файлы ballistics.m, f.m и f_air.m. Назовем его, например cannon.m. Для начала зададимся параметрами снаряда, начальной скоростью и направлением выстрела
А теперь напишем функцию, которая будет вычислять значения фазовых координат для произвольного момента времени
Обратите внимание, теперь в качестве моментов времени, передаваемых функции решения уравнения мы берем всего два значения: начальный момент времени (t = 0) и интересующий нас момент времени. Соответственно, переменная solv будет содержать два вектора фазовых координат: начальный и тот который нам нужен. Собираем все компоненты конечной точки фазовой траектории в вектор Y и возвращаем его значение из функции.
Теперь нам ничего не стоит определить зависимость высоты полета снаряда от времени
протестируем полученную функцию
При запуске скрипта на исполнение мы увидим в командном окне следующий вывод
Отлично, функция работает! Аналогично определим и функцию вычисления горизонтальной дальности
Видно, что для вычисления высоты и дальности мы каждый раз интегрируем уравнения движения, от начального до интересующего нас момента времени. Таким образом мы получили зависимость, не выражаемую конкретной формулой. Это довольно круто.
3. Принципы численного решения нелинейных уравнений
Методы численного решения нелинейных и трансцендентных уравнений заточены под решение уравнений вида
К такой форме легко привести любое уравнение. Например
где . Корни этого, эквивалентного уравнения, равны корням исходного. Если мы построим график функции f(x), то увидим такую картинку
корни уравнения это значения аргумента в тех точках, где график пересекает ось x.
Все методы численного решения таких уравнений включают в себя два этапа:
Простейшим методом является метод простых итераций. Для применения этого метода уравнение преобразуют к виду
и выполняю расчеты по рекуррентной формуле
Посмотрим на график. У уравнения два корня. Найдем крайний левый корень, выбрав в качестве начального приближения
Все бы хорошо, но метод простых итераций не всегда сходится. Попробуйте найти второй корень этого уравнения, задавшись любым, сколь угодно близким начальным приближением — у вас ничего не выйдет: каждое новое значение будет уходить от корня всё дальше и дальше. Сходимости метода можно добиться, существуют способы, но на практике это существенно осложняет нам жизнь. Поэтому для нахождения второго корня применим другой метод. Разложим исследуемую функцию в ряд Тейлора, в окрестности начального приближения
Ограничимся членами первого порядка малости, заменив саму функцию f(x) касательной к её графику в точке x0
и приравняв полученное выражение к нулю, решим его относительно x
Получаем итерационную формулу
В качестве начального приближения берем и пытаемся выполнять итерации
Как видно, этот метод сошелся за четыре итерации с точностью до четырех знаков. Этот метод называют методом Ньютона. Его достоинством является быстрая сходимость. Среди недостатков: высокая чувствительность к точности начального приближения и необходимость вычислять производную левой части уравнения. В случае, когда для уравнения нет аналитического выражения, приходится прибегать к мерзкой операции численного дифференцирования, что не всегда удобно и возможно.
Эти примеры я привел, чтобы объяснить общий принцип. Кроме этих двух методов существует ещё масса методов, например:
4. Определяем параметры траектории пушечного ядра
Делаем это исходя из физического смысла задачи — после сразу выстрела высота полета снаряда неотрицательна. Перебираем все моменты времени, начиная от нуля, до тех пор, пока высота не станет отрицательна. Перебираем с достаточно крупным шагом (1 секунда) чтобы процедура не была слишком длительной, ведь на каждом шаге мы заново интегрируем дифференциальные уравнения движения, что весьма накладно сточки зрения вычислительных затрат. Как только высота станет отрицательной, заканчиваем перебор. Корень уравнения h(t) = 0 находится где-то внутри интервала [a, b]. Начальное приближение берем в середине этого интервала
Теперь отдаем уравнение на съедение процедуре решения нелинейных уравнений Octave
Функция fsolve() на вход принимает функцию, описывающую левую часть уравнения f(x) = 0 и значение начального приближения. Возвращает значение корня, вычисленное с заданной точностью. С какой точностью? Пока не будем задаваться этим вопросом и воспользуемся настройками по-умолчанию, на данном этапе они нас устраивают.
Получив значение момента времени падения, вычисляем дистанцию от позиции стрельбы
Аналогичным образом находим момент времени когда обнуляется вертикальная проекция скорости и вычисляем высоту полета снаряда в этот момент
В командном окне можно увидеть результаты работы программы
а также посмотреть, с какой точностью были решены уравнения
Для наших учебных целей точность вполне приемлема.