§6. Теоремы существования и компьютер: когда машина уверенно врёт
Последний параграф главы — короткий, но отрезвляющий. В §5 мы видели, как компьютер врёт из-за округления. Тут покажем ещё одну засаду: иногда алгоритм честно делает ровно то, что написано, выдаёт гладкую красивую картинку — и всё равно приводит не туда. Доверять машине на слово нельзя даже в, казалось бы, железной математике.
Задача Коши и метод Эйлера
Берём классику — задачу Коши: есть уравнение на функцию , заданное через её производную, плюс стартовая точка.
По-простому: нам говорят наклон кривой в каждой точке () и откуда стартовать ( при ). Надо восстановить саму кривую.
Самый прямолинейный способ сделать это на компьютере — метод Эйлера: топаем от старта маленькими шажками, каждый раз двигаясь по касательной.
Разбираем по кирпичикам:
- — маленький шаг по оси . Чем мельче, тем аккуратнее.
- — наклон кривой в точке, где мы сейчас стоим.
- — на сколько подрастёт , если пройти шажок по этой касательной.
- — делаем шаг: новое = старое плюс этот прирост.
Повторяй — и ломаная из касательных обрисует кривую. Идея честная: чем мельче шаг, тем ближе ломаная к настоящему решению. Обычно так и есть. Но не всегда.
Как Эйлер перепрыгивает на чужую кривую
Рассмотрим конкретный пример (из Лагутина): наклон задан как
Решить можно и руками. Из выходит — это окружность. Подставляем старт : . Значит, истинное решение — верхняя полуокружность
А теперь подвох. Наклон рвётся при — там деление на ноль. И физически решение-полуокружность нельзя продолжить в нижнюю полуплоскость : окружность в точке разворачивается вертикально. Но компьютер-то этого не знает. Когда ломаная Эйлера подходит к , наклон взлетает до огромных значений, касательная встаёт почти вертикально — и очередной шаг перебрасывает в минус, на совершенно чужую интегральную кривую. Машина спокойно поехала дальше по ложному следу, не моргнув.
Покрути сам. Зелёная дуга — истинная полуокружность, красная ломаная — метод Эйлера. Двигай шаг : мельче шаг — ломаная держится дуги точнее, но у линии она всё равно срывается вниз. Разрыв правой части шагом не победить — хоть ты его дроби в пыль:
Мораль главы
Вот тебе и «теоремы существования». Решение существует и единственно — пока мы в области, где всё гладко (). Но стоит подойти к разрыву, и численный метод, формально работая правильно, уезжает на чужую кривую и выдаёт уверенную чушь.
Это перекликается со всей главой. Физический датчик честен, но медленный и неповторимый (§1). Таблица честна, но жрёт память и подводит на тонких задачах (§2, §5). Математический датчик быстр и воспроизводим, но может таить закономерность, как RANDU (§3), и по Колмогорову вообще не способен выдать «настоящую» случайность коротким кодом (§4). И вот финал: даже прямое численное решение уравнения врёт у разрыва (§6).
Общий закон простой: компьютер — мощный станок, но слепо верить ему нельзя. Понимай, где у твоего инструмента слепая зона, и проверяй результат головой. С этим и пойдём дальше — к задачам главы, где потренируемся ловить такие подвохи руками.