Раздел: Документация
0 ... 81 82 83 84 85 86 87 ... 177 Наиболее достоверный ответ будет, если работу численного алгоритма контролировать с учетом обоих критериев, Прн этом последнее приближение будет локализовано в прямоугольной области, образующейся на пересечении соответствующих критериям бесконечных вертикальной и горизонтальной областей (см. рис. 8.4). В случае функции root критерием сходимости к корню является только величина функции в точке приближения. То, насколько отличаются два последних приближения, не учитывается. Такой подход увеличивает скорость работы численных алгоритмов, однако снижает надежность получаемого результата. Мы же, реализуя применяемые root численные алгоритмы, будем учитывать оба критерия. Изменить величину T0L можно либо с помощью окна, открываемого командой Tools ► Worksheet Options (Инструменты » Параметры документа), либо выполнив соответствующее присваивание непосредственно слева или сверху функции численного решения. Присвоить TDL можно совершен но любое значение. По умолчанию 70L равняется Ю3. Однако в случае функции root наибольшим корректным (при стандартных настройках отображения результата) значением T0L является 10-*, Это ограничение связано с тем,470 стандартное значение TOL-10 3 может обеспечить точность определения корня до третьего знака после запятой далеко не всегда (в этом численные методы решения уравнений отличаются от используемых в Mathcad численных методов интегрирования, ошибка которых всегда меньше TOL). Теоретически наиболее высокую точность дает значение T0L, равное 10 Однако нижней границей для T0L в случае функции root является 11) IJ-10 11 Делать T0L меньше нет смысла, так как ошибки округления компьютерной арифметики н погрешности при расчете значений трансцендентных функций все равно не дадут достигнуть предельной возможной точности -вплоть до 16 знака мантиссы. Также, если T0L очень мала, резко повышается вероятность того, что численный алгоритм не сойдется к решению. Велнч ила T0L должна задаваться исходя нз того, насколько в абсолютном выражении приближение может отличаться от истинного значения корня. Например, если решение нужно получить с точностью до 0.00001, TDL должен быть меньшим или равным КН. Впрочем, это правило не очень строгое, Обычно точность решения на 2-3 порядка превышает T0L. Но в случае функций, изменяющихся в области корня существенно медленнее, чем у(х)-х, точность решения может оказаться ниже TDL Это особенно характерно, если используется метод секущих или Мюллера. Поэтому, обращаясь к соответствующим методам, нужно обязательно строить график и анализировать * —у""* функции в области пересечения с осью X. Если она изменяется медленнее, чем у(х)-х, то для того, чтобы с высокой надежностью получить результат с абсолютной погрешностью, не превышающей 10n, T0L следует задать на несколько порядков меньшим, чем 10*. Если же функция изменяется быстро, то очень точное решение можно получить и при невысоком TDL Также о скорости изменения функции можно судить по абсолютному значению производной в окрестности точки корня. Если оно больше 1, то функция изменяется быстрее, чем у(х)-х, если меньше — функция изменяется медленно. В случае очень медленно изменяющихся функций нужно применять методы интервалов локализации корня, а не метод секущих. Если же использовать методы локализации корня невозможно (к примеру, корню соответствует касание кривой функции оси X, а не ее пересечение), численному методу решения уравнений стоит предпочесть графический. Впрочем, есть очень хороший прием, позволяющий улучшить результаты работы численных методов в случае медленно изменяющихся в области корня функций. Он заключается в замене функции f(x) на g(x), которая получается делением f(x) на ее производную: № Функция g(x) будет иметь нули там же, где и f(x). Однако там, где и» изменяется очень медленно, g(x) будет изменяться быстрее. Наоборот, там, где f(x) изменяется быстро, g{x) будет изменяться медленнее. Переход от f(x) к g(x) чем-то напоминает нормирование: функция подгоняется под некий средний уровень. В отдельных случаях выражение уравнения можно улучшить тождественны ми преобразованиями. Например, если левая часть уравнения соответствует чрезвычайно медленно изменяющейся показательной функции, то стоит произвести логарифмирование. Полученная логарифмическая функция будет иметь нули там же, где и исходная показательная, однако изменяться она будет гораздо быстрее (см. пример 8.11). Описанные приемы улучшения медленно изменяющейся функции особенно действенны при поиске ее нулей методом секущих (или Мюллера). Без их применения найденное решение может отстоять отточки корня на расстояние, значительно превышающее TOL. По сравнению с методом секущих (Мюллера), методы интервалов локализации корня чувствительны к виду функции в меньшей степени. Однако рассматриваемые приемы позволяют увеличить и их эффективность (см. пример 8.11). Пример 8.11. Поиск нулей медленно изменяющейся функции Пусть стоит задача найти нули следующей функции при положительных х: t\x) :=х" * - 0.000001 По графику определяем, что на интересующем промежутке функция имеет только один нуль, расположенный в окрестности точки х-7. Находим его: root(ft;x),x,5,10) = 7.0657934747539093 Чтобы получить результат более точно, перейдем от функции f(x) к g(x), которая получается делением f(x) на ее производную: g(x) :=fi» + -Ця) rooi(g(x),x,5,10) =7.0657967283224243 dx Еше лучшую точность можно получить, прологарифмировав входящие и 1( xl выражения: ItTx) :=-xln(x) + frlnflO)root(liXx),x,5,10)= 7.0657967282996212 Чтобы определить, насколько каждый из полученных корней точен, найдем решение уравнения аналитически: - х - 6 X - 10 solve,х[п(2) + 1П(5) simplify W(61n(2) + 6-ln(5)) Найденное решение содержит W — функцию Ламберта. Определить ее точное значение нельзя, однако можно получить ее сколь угодно точную приближенную величину, задействовав оператор float. Найдем значение корня с точностью ло 40 знаков мантиссы: float,40 7.065796728299620611060102564664602690090 W(6ln(2) + frln(5)) Итак, ответ, выданный системой при поиске нуля для иемодифицированной f(x), точен до пятого знака после запятой, "Переход от f(x) к g(x) увеличил точность на пять знаков. Наиболее же результативным оказалось логарифмирование. Полученный при этом ответ точен до 15-го (!) знака. Очевидно, что входить в ответ «ненадежные» знаки не должны. Однако как определить, какие знаки лишние, если уровень погрешности зависит не только от TOL, но и от вида функции и прочих факторов? Алгоритм решения этой проблемы следующий: чтобы убедиться, что в рамках выбранной точности решение найдено верно, нужно округлить результат до нужного знака, а затем уменьшить TOL на 1 -2 порядка. Если при этом ответ изменится, значит, он был получен с пофешностью. Также нужно попробовать изменить начальные приближения. Если 1гри этом ответ поменяется, то можно быть уверенным, что в нем имеется серьезная неточность, обусловленная, скорее всего, слишком низкой скоростью изменения функции в районе точки корня, Пример 8.12. Степень влияния TOL на точность численного решения уравнений в случае методов интервалов локализации корня Задача: найти первый положительный корень уравнения cos(2x+1 )-*<). Задаем на основании уравнения функцию; 3 f(x):=C03(2x+l) Значение первого положительного корня очевидно. На него мы будем ориентироваться, определяя точность выдаваемых системой ответов. 71 1 ---=0.285398163397448 4 2 TOL-0.1. Ответ точен до 1-го знака после запятой. TOL := 16" ПК*МГх) px.Q,2J - ОJ28536607221123 TOL-0,0001. Ответ точен до 4-го знака после запятой. TOL:=10 4 0.2853 2 34 0412625 2 TOL-0,000000000000001. Огвет точен до 15-го знака после запятой. -15 TOL:=10root f(x),x,0,- 0.28539816339744В Чтобы эффективно использовать функцию root, нужно знать основные идеи применяемых ею численных методов. При задники в качестве начального приближения интервала локализации корня, решение ищется с помощью метода Риддера (Ridder). Если данному методу не удается найти корень, используется метод Брента (Brent). И метод Риддера, и метод Брента относятся к одному и тому же типу методов численного решения уравнений — методам интервалов локализации корня. Родоначальником этой группы методов является метод Больцано деления пополам (бисекции). Остальные 0 ... 81 82 83 84 85 86 87 ... 177
|