ЛЕКЦИЯ 1 1 Решение нелинейных уравнений 1.1 Общая концепция методов Как правило, процесс решения нелинейного уравнения общего вида: f(х)=0 осуществляется в два этапа. На первом этапе отделяют корни, т. е. находят такие отрезки, внутри которых находится строго один корень. На втором этапе уточняют корень, т.е. находят его значение с предварительно заданной точностью . В практических задачах решением называют любое значение x, отличающееся по модулю от точного значения хточн не более чем на величину . Идеи аналитических методов первого этапа базируются на очевидном свойстве непрерывных функций: корни функции (точки пересечения f(х) с горизонтальной осью) обязательно лежат между соседними экстремумами функции (хотя обратное неверно: между каждой парой экстремумов необязательно находится корень). Идеи методов второго этапа можно сгруппировать по трем основным направлениям. В первом – поиск корня с заданной погрешностью сводится к перебору всех возможных значений аргумента с проверкой наличия решения. Во втором – поиск корня нелинейной функции заменяется поиском корня той или иной более простой функции (линейной, параболической), близкой к исходной нелинейной; как правило, процесс поиска осуществляется итерационными процедурами (однотипными, последовательно повторяющимися). В третьем – нелинейное уравнение вида: f(x)=0 сводят к одной из форм вида: g(х) = (х) и стремятся обеспечить равенство левой и правой частей тоже, как правило, с помощью итерационных процедур. Условием окончания процесса решения уравнения (т.е. получения корня xточн с заданной погрешностью) может быть одно из двух возможных: 1) |f(х)| ≤ , 2) |хточн – хk| ≤ , где , – предварительно заданные малые величины, k – номер итерации, т.е. или близость к нулю левой части уравнения, или близость друг к другу двух значений х, между которыми находится решение. Второе условие во многих случаях можно использовать, не зная точного значения корня, путем замены его другим, например: |хk+1 – хk| ≤ , при выполнении которого данное условие будет гарантированно выполняться. Условие окончания поиска выбирается исходя из неформальных соображений, и в некоторых случаях применение разных условий может привести к существенно разным результатам. При решении конкретных задач в математическом моделировании важными являются две цели решения: 1) обеспечение близости к нулю f(x) (f(х) 0) как меры выполнения тех или иных балансовых соотношений, тогда не очень важно, при каких именно (в пределах здравого смысла конкретной прикладной задачи) значениях х это равенство справедливо с заданной погрешностью; 2) обеспечение точности нахождения решения хточн, имеющего содержательное значение, при этом f(х) 0 является лишь индикатором правильности решения. Отсюда и выбирают условие окончания поиска решения. 1.2 Отделение корней Отделение корней может производиться графически (путем построения графика функции f(x)) или аналитически. Для аналитического отделения корней находят все критические точки функции f(х), т. е. точки, в которых производные равны нулю или не существуют. Это можно сделать численными методами или – в несложных случаях – аналитически. Для этого f(х) дифференцируют, приравнивают производную к нулю и решают полученное уравнение относительно х. Кроме того, определяют все точки, где по тем или иным причинам (например, знаменатель обращается в нуль, под логарифмом появляется нуль и т. д.) производная может не существовать. В этих (критических) точках или в непосредственной близости от них определяют знак функции f(хi), т. е. находят sign f(хi). Затем строят ряд знаков функции в критических точках, включая в рассмотрение и крайние точки числовой оси - и + . Анализируют этот ряд, и по числу смен знаков определяют количество корней (равно числу смен знаков sign f(хi)) и интервалы, где локализованы эти корни. На левой и на правой границах такого интервала функция f(х) должна иметь разные знаки. В случае необходимости можно дополнительно к критическим точкам использовать и произвольные точки, что позволяет сузить интервал локализации корня. Особенно это надо делать, когда одна из границ интервала находится в бесконечности, так как интервал хотя бы с одной границей в бесконечности не позволит уточнить корни. Пример Найти с точностью до целых все корни нелинейного уравнения x3 - 10x + 7=0 а) построив таблицу и б) построив график. Найти корень уравнения на выделенном отрезке, используя опции «Подбор параметра» и «Поиск решения». Решение Решение будем производить в табличном процессоре Excel. Для этого найдем таблицу значений функции и по ней построим график. На рисунке 1 приведен снимок решения. Это корни Рисунок 1 – Экранный снимок результата поиска корней нелинейного уравнения На графике видно, что уравнение имеет три корня, принадлежащие отрезкам [4, -3], [0, 1] и [2, 3], можно сказать, что x1 -3,5; x2 0,7; x3 2,7. Для уточнения значений корней используем опции «Подбор параметра» и «Поиск решения». Пример оформления решения приведем на рисунках 2 и 3. Рисунок 2 – Ввод значений для использования средств анализа Рисунок 3 – Результаты выполнения Отметим очевидный момент: при прочих равных условиях тот метод уточнения корней будет более эффективен, в котором результат с той же погрешностью найден за меньшее число раз вычисления функции f(x). 1.2.1 Алгоритм отделения корня ВСТАВИТЬ КАРТИНКУ! ЛЕКЦИЯ 2 1.3 Метод деления отрезка пополам В этом методе сначала исходный отрезок делится на две равные части (пополам). Затем сравнивают знаки функции на концах каждой из двух половинок (например, знак произведения значений функций на концах) и определяют ту половинку, в которой содержится решение (знаки функции на концах должны быть разные), т. е. сужаем отрезок [а, b], перенося в найденную точку конец отрезка а или b. Затем найденную половинку опять делят на две равные части, снова выбирают одну из двух половинок, содержащую корень, и т. д. Условием окончания служит заданная малость отрезка, где содержится корень. ВСТАВИТЬ КАРТИНКУ! Пример Построить таблицу для уточнения корня уравнения x3 –10x+7=0 методом деления отрезка пополам. Определить сколько шагов надо сделать методом деления отрезка пополам и какая при этом достигается точность по х, для достижения точности по y, равной 0,1; 0,01; 0, 001. Решение Решение будем производить в табличном процессоре Excel. Для этого построим таблицу допускающую автоматическое продолжение строк. На первом шаге заносим в таблицу значения левого и правого концов отрезка приближения, и вычисляем значение середины отрезка с=(a+b)/2, затем печатаем формулу для вычисления значения функции в точке a (f(a)) и растягиваем (копируем) её для вычисления f(c) и f(b) соответственно. Последний столбец содержит значения выражения (b-a)/2, характеризующего степень точности вычислений. На втором шаге нам нужно автоматизировать процесс поиска той половины отрезка, где содержится корень. Для этого мы воспользуемся логической функцией ЕСЛИ (Меню: Вставка Функция Логические). Для нового левого края отрезка мы проверяем истинность условия f(a)*f(c)>0, если оно верно, то мы в качестве нового значения левого конца отрезка берем число c (т.к. это условие показывает, что корня на отрезке [a, c] нет), иначе оставляем значение a. Аналогично, для нового правого края отрезка мы проверяем истинность условия f(c)*f(b)>0, если оно верно, то мы в качестве нового значения правого конца отрезка берем число c (т.к. это условие показывает, что корня на отрезке [c, b] нет), иначе оставляем значение b. Функция ЕСЛИ копируется на группу ячеек в соответствующих столбцах. Итерационный процесс обрывается тогда, когда очередное значение в последнем столбце становится меньшим, чем заданный показатель точности . При этом, значение середины отрезка в последнем приближении, принимается в качестве приближенного значения искомого корня нелинейного уравнения. На рисунке 4 приведен снимок решения. Рисунок 4 – Снимок таблицы, реализующей метод деления отрезка пополам Итак, одним из трех корней нелинейного уравнения x3 – 10x + 7=0, найденным с точностью =0,0001, является x= - 3,46686. Как мы видим, он действительно принадлежит отрезку [-4; -3]. 1.3.1 Алгоритм метода деления отрезка пополам ВСТАВИТЬ КАРТИНКУ! ЛЕКЦИЯ 3 1.4 Метод хорд В этом методе нелинейная функция f(x) на отделенном интервале [а,b] заменяется линейной, в качестве которой берется хорда – прямая, стягивающая концы нелинейной функции. Эта хорда определяется как прямая, проходящая через точки с координатами (а,f(а)) и (b,f(b)). Имея уравнение хорды: у = cx + d, можно легко найти точку ее пересечения с горизонтальной осью, подставив в уравнение у = 0 и найдя из него x. Естественно, в полученной таким путем точке x1 не будет решения, ее принимают за новую границу отрезка, где содержится корень. Через эту точку с координатами (x1,f(x1)) и соответствующую границу предыдущего интервала опять проводят хорду, находят x2 и т. д. несколько раз, получая последовательность: х3, х4, х5 ..., сходящуюся к корню. Метод применим только для монотонных функций. ВСТАВИТЬ ВЫВОД ФОРМУЛЫ И КАРТИНКУ! Алгоритм метода зависит от свойств функции f(х). Если f(b) f"(x)>0, то строящаяся на каждом этапе хорда имеет правый фиксированный конец, и тогда алгоритм будет выглядеть так: xi 1 xi f xi b xi , f b f xi при этом последовательность х1, х2, х3... будет приближаться к корню слева x0=a. Если f(a) f''(x) > 0, то строящаяся при каждом этапе хорда имеет левый фиксированный («закрепленный») конец и алгоритм выглядит следующим образом: xi 1 a f a xi a , f a f xi при этом последовательность х1, х2, x3... будет приближаться к корню справа x0=b. Теоретически доказано, что если первые производные на концах интервала при монотонной и выпуклой функции f(x) не различаются более чем в 2 раза, то справедливо соотношение |хточн – хi| < |хi – xi-1| и условием прекращения пополнения последовательности может быть |хi+1 –хi| ≤ , а в качестве корня принято xi+1 (можно также окончить процесс и при достижении f(xi) ≤ , о чем указывалось в концепции методов). На практике указанные условия можно применять и без предварительной проверки производных, отклонение погрешности результата при пологих функциях не будет существенным. Пример Отделить корни уравнения tg (0,55x+0,1) = x2 графически и уточнить один из них методом хорд. Решение 1. Отделим корень графически, для этого построим графики функций y1 = tg (0,55x+0,1) и y2 = x2 (рисунок 5) Рисунок 5 – Снимок экрана отделения положительного корня уравнения Таким образом, положительный корень уравнения заключен в промежутке [0,6; 0,8]. Чтобы уточнить корень уравнения методом хорд, определим знаки функции f(x) = tg (0,55x+0,1) – x2 на концах промежутка [0,6; 0,8] и знак её второй производной в этом промежутке. Вычисления будем производить в Excel и MathCad. Таким образом получим: f (0,6) = 0,0986, f (0,8) = – 0,0406, f x 0,55 2x ; cos 2 0,55 x 0,1 f x 0,605 sin 0,55 х 0,1 2 < 0 при х [0,6; 0,8]. cos 3 0,55 x 0,1 Для вычислений будем применять формулу: xi 1 xi f xi b xi , f b f xi где b = 0,8; x0 = 0,6. Вычисления располагаем в таблице: Рисунок 6 – Снимок экрана заполнения таблицы для вычислений методом хорд Получаем ответ: х = 0,7502. 1.5 Метод Ньютона Идея, на которой основан метод, аналогична той, которая реализована в методе хорд, только в качестве прямой берется касательная, проводимая в текущей точке последовательности. Уравнение касательной находится по координате одной точки и углу наклона (значение производной). В качестве начальной точки в зависимости от свойств функции берется или левая точка: x0 = а (если f(а) f"(х) > 0), или правая точка: x0 = b (если f(b) f"(х)>0). Алгоритм записывается следующим образом: xi 1 xi f xi f xi . Алгоритм работоспособен при выпуклых и монотонных функциях f(x). Главным теоретическим достоинством метода является квадратичная скорость сходимости, что во многих случаях может привести к сокращению числа вычислений функции при получении решения с заданной погрешностью. В ряде случаев можно применять упрощенный алгоритм, связанный с сокращением числа повторений вычисления производных: вместо вычисления производной в каждой очередной точке f'(xi) использовать значение производной в начальной точке f'(x0). Видоизмененная формула: xi 1 xi Следует обратить внимание на f xi . f x0 следующую особенность метода: последовательность x1, x2, x3,… приближается к корню с другой стороны, в отличие от использования метода хорд при прочих равных условиях. Пример Отделить корни уравнения tg (0,55x+0,1) = x2 графически и уточнить один из них методом касательных с точностью до 0,001. Решение В предыдущем примере мы отделили один из корней и установили, что он принадлежит промежутку [0,6; 0,8]. Так как f (0,6) > 0, f (0,8) < 0, f”(x) < 0, то за начальное приближение примем х0 = 0,8. Вычисления будем производить по формуле: xi 1 xi f xi . f x0 Для вычислений составим таблицу, как показано на рисунке 7. Получим ответ х = 0,7502. Точность рассматриваем достижением f(xi) ≤ , о чем указывалось в концепции методов. Рисунок 7 – Снимок экрана заполнения таблицы для вычислений методом касательных ВСТАВИТЬ ВЫВОД ФОРМУЛЫ И ГРАФИЧЕСКУЮ КАРТИНКУ! 1.6 Комбинированный метод Данный метод, так же, как и предыдущие, базируется на замене нелинейной функции f(х) линейной, но с учетом стремления к корню метода хорд и метода Ньютона с разных сторон; для повышения эффективности использует оба алгоритма одновременно. Один шаг делается методом хорд, а следующий – с другой стороны – методом Ньютона. При этом интервал, где содержится корень, сокращается с обеих сторон, что обусловливает другое условие окончания поиска. Поиск можно прекратить, как только разница между правым и левым концами интервала станет меньше предварительно заданной погрешности . Для вычисления применяем формулы: an1 an f an bn an ; f bn f an bn1 bn f bn . f bn Пример Найти все корни нелинейного уравнения x3 - 10x + 7=0 Оставить это уравнение или заменить другим? Решение ЛЕКЦИЯ 4 1.7 Метод простой итерации Рассматриваемый метод реализует третий подход из представленных в концепции. Предварительно исходное уравнение f(x) = 0 преобразуют к виду: (х) = х, что является частным случаем более общей структуры: g(x) = f(x). Затем выбирают начальное значение х0 и подставляют его в левую часть уравнения, но (х0) х0, поскольку х0 взято произвольно и не является корнем уравнения. Полученное уравнение (х0) = х1 рассматривают как очередное приближение к корню. Его снова подставляют в левую часть уравнения (х1) и получают следующее значение х2 (х2 = (х1)) и т. д., в общем случае хi+1 = (хi). Получающаяся таким образом последовательность: х0, х1, х2, х3 х4,... при определенных условиях может сходиться к корню хточн. Существуют различные способы преобразования уравнения f(x) = 0 к виду (х) = х, где одни могут привести к выполнению условия сходимости всегда, другие – в отдельных случаях. Один из способов, например, по формуле x x f x , k причем k следует выбирать так, чтобы | k | > Q/2, где Q = max|f’(x)| на отрезке [a, b] и знак k совпадал бы со знаком f’(x) на [a, b]. Итерационный процесс сходится при условии | ’(x) | < 1 на [a, b]. Уточнение корня производится по формуле xn+1 = (хn), n = 0, 1, 2, …, x0 – значение, взятое из промежутка [a, b]. Точность вычислений можно оценить из соотношения хточн хп где М = max |’(x)| на [a, b]. Мп х1 х0 , 1 М