[Из песочницы] Задача, от которой отказался Ричард Фейнман
В замечательной книге «Вы, конечно шутите, мистер Фейнман!» есть эпизод, который привел меня к небольшой практической работе, результатами которой я решил поделиться. А началось все с этого момента: » Пол проходит по столовой, где все просто стоят на ушах. «Эй, Пол! — кричат они. — Фейнман — просто супер! Мы даем ему задачу, которую можно сформулировать за десять секунд, и он за одну минуту дает ответ с точностью до 10 процентов. Дай ему какую-нибудь задачу!» Почти не останавливаясь, он говорит: «Тангенс 10 градусов в сотой степени». Я влип: для этого нужно делить на число пи до ста десятичных разрядов! Это было безнадежно!».
В приведенном примере два молодых и талантливых сотрудника, которые участвуют в атомном проекте, соглашаются с тем, что найти тангенс 10 градусов в сотой степени с заданной точностью за одну минуту невозможно. Причем Фейнман утверждает, что для этого надо делить на число «пи» до ста десятичных разрядов. Последнее утверждение и послужило толчком для проведения небольшого вычислительного эксперимента.Как узнать сколько будет tg (10°) в сотой степени? Да нет ничего проще! Надо спросить у Googlе. Спросим. Ответ будет дан мгновенно — 4,2842727е-76.Тангенс это синус, деленный на косинус. Поэтому свои исследования я начал с решения более простой задачи. А именно, как найти синус 10 градусов и возвести его в сотую степень. Причем нам надо реализовать два различных метода, чтобы убедиться в правильности полученного результата. Все вычисления проводились на платформе 1С: Предприятие 8.2. Особенностью данной платформы является то, что результаты расчетов хранятся в текстовом виде, что снимает вопрос о количестве знаков после запятой и, как следствие, точности расчетов, по крайней мере, для операций сложения и умножения. Теперь определимся с вариантами расчета. Самый простой — это вычислить синус и затем умножить его на себя. Раз степень, в которую мы возводим четная, то вспомним про формулу косинуса двойного угла и запишем: Поскольку при проведении расчетов, нам необходимо контролировать точность используемых данных, то косинус 20 градусов будем искать, как корень следующего уравнения:4*cos³(20°)-3*cos (20°)=0,5Данное уравнение получается из формулы для косинуса тройного угла. Для численного решения уравнения воспользуемся методом Ньютона. В дальнейшем найденное значение sin²(10°) умножаем само на себя 49 раз (можно, разумеется, сократить количество умножений, это в данном случае неважно).Приведем таблицу с зависимостью проведенных расчетов от точности определения cos (20°).
Из полученных результатов видно, что точность в 10% достигается, когда входные данные содержат 4 значащих цифры после запятой. Данный результат заставляет усомниться в утверждении Фейнмана, что для решения данной задачи необходимо делить на число «пи» до 100 знака после запятой. Возможно, это необходимо в том методе, который он хотел применить, но для расчета, о котором мы сейчас говорим, такая точность не нужна.Следующий пункт нашей исследовательской программы поиск альтернативного способа расчета нужного произведения. Я делал расчет четной степени синуса, но использованный подход может быть применен и к тангенсу, просто это увеличит объем излагаемого материала. Заменим исходную функцию ее разложением в ряд Фурье. Разложение получим с использованием следующего тождества: cos (α)*cos (β)=0,5*(cos (α-β)+cos (α+β))Вот как мы его применяем.sin²(x)* sin²(x)=(0,5–0,5cos (2x))(0,5–0,5cos (2x))Раскроем скобки в правой части и затем заменим произведения косинусов их суммой. Затем полученную сумму опять умножим на (0,5–0,5 cos (2x)) опять раскроем скобки и еще раз проведем операцию замены произведения на сумму. Разумеется, изложенную процедуру я проводил с помощью программы на встроенном языке платформы 1С: Предприятие. В результате данных мероприятий было получено разложение исходной функции по базису из функций cos (2ix), где i меняется от 0 до 25. Найденное разложение мы в дальнейшем вычисляем в точке 10°=π/18. Приведем таблицу со значениями базисных функций в данной точке. Для углов в диапазоне от 180° до 340° значения базисных функций будут отличаться от приведенных величин только знаком из-за сдвига на «пи». Теперь, когда есть значения базисных функции и есть коэффициенты разложения, можно провести альтернативный расчет. А вот в этом случае точность исходных данных должна быть сопоставима с точностью конечного результат, т.е не меньше чем 10⁻⁷⁷. Впрочем это и понятно. Когда мы складываем какие-то величины, то для получения нужной точности члены суммы должны быть рассчитаны с погрешностью не меньше предполагаемого результата. В следующей таблице приведены результаты расчета по изложенной методике для различной точности входных данных.
Приведенные числа согласуются с нашим замечанием о связи точности входных данных и конечного результата. В тоже время, они подтверждают достоверность предыдущих расчетов.Ниже приведено изображения формы обработки, которую я применял в своих исследованиях На данной форме, в частности, приведен спектр разложения в ряд Фурье функции sin¹⁰⁰ (x).И так, с помощью вычислительной техники, которая стала значительно доступнее со времен атомного проекта, мы задачу решили. Но можно ли ее решить в уме, или хотя бы получить оценку порядка для конечного результата. Приведем возможную последовательность рассуждений.Вспомним, что разложение функции tg²(x) по степеням sin²(x) имеет вид: tg²(x)= sin²(x) +sin⁴(x)+sin⁶(x)+…Оценку для sin (10°) получим из тождества: sin (30°)=3sin (10°)-4sin³(10°)Если отбросить кубический член, то оценка будет 1/6=0,166666, так как она занижена, то возьмем 0,17, а квадрат тангенса оценим в 0,03. Прологарифмируем искомую величину и получимLn (tg²(10°)⁵⁰)=50*(-2*Ln (10)+Ln (3))Ln (3)=Ln (e*(1+0,9/e))≈1+Ln (1+⅓)=1,3Вспомним, что Ln (10) ≈2,30.Тогда натуральный логарифм искомой величины будет равен50*(-4,6+1,3)=-50×3,5=-2,3×50*35/23=2,3×50*(1+12/23)≈-2,3×50*(1+0,5*(1+1/24))=-2,3×50*1,52=-2,3×76.Возведем e в полученную степень и приходим к результату 10⁻⁷⁶.Заключение В данной работе я никоим образом не ставил целью усомниться в математических способностях Р.Фейнмана. Это выдающийся физик, который прекрасно считал. Цель статьи показать, как можно применять математические инструменты для решения задач, когда надо дойти до числа. Мне кажется, что изложенный материал можно использовать, как основу для практического занятия по вычислительной математике в старших классах.