Две тростинки
Это задачу я взял из обзоров известного "арбузятника" Евгения Скляревского.
Ссылаясь на рассказ знаменитого фантаста Александра Казанцева "Колодец Лотоса", он живописует жутковатую картину нравов Древнего Египта, когда претендентов на высшие государственные должности замуровывали в древнеегипетские строения, подсовывая им для решения неразрешимые задачи.
Вообще-то говоря, древнеегипетскую практику хорошо бы возродить и у нас, замуровая, например, претендента на пост министра экономического развития в кремлевскую стену...
А в качестве неразрешимой задачи задавать ему следующий вопрос: "Как снизить инфляцию?"
Ответит правильно - размуровать и назначить, не ответит - пусть там и остается.
Я полагаю, что даже просто при объявлении такого "конкурса наоборот" желающих порулить страной в желаемом только министру направлении стало бы значительно меньше.
А если такой "конкурс" провести по-настоящему, то, в конце концов, можно было бы найти человека, который бы не только манипулировал цифрами, но и развивал экономику.
Кремлевская стена большая, на всех хватит... а не хватит, так у нас кремль не только в Москве есть.
Но!
Но нынче у нас не Древний и даже не Египет, и нет никаких тиранов-фараонов, а кругом толерантность, политкорректность и разгул демократии, так что этот варварский метод сам собою отпадает.
Поэтому вернемся к задаче.
После перевода древнеегипетского текста на современный язык задачка о двух тростинках выглядит так.
В цилиндрический колодец опущены две тростинки длиной два и три метра. Нижние концы тростинок
лежат на разных концах диаметра колодца, а верхние упираются в противоположные стороны цилиндра.
Точка пересечения тростинок находится на высоте одного метра от дна.
Требуется найти диаметр колодца.
Автор (в данном случае - Скляревский) отмечает, что задача решается тремя способами:
приводится к уравнению четвертой степени, решить которое очень даже непросто;
через обратные тригонометрические функции в виде многоэтажного замысловатого уравнения;
итерационным приближением, столь доступным с появлением разного рода ЭВМ и языков программирования.
Это не совсем так: можно применять и комбинации этих способов.
Рассмотрим, например, комбинацию первого способа с некоторой частью третьего и назовем этот метод "вычислительно-геометрическим".
Начнем с обозначений: назовем углы "альфой" и "бетой", а части диаметра "а" и "в".
Тогда просто из рассмотрения треугольников следует, что
Затем вспомним две основные формулы тригонометрии (честно сказать, из всего школьного курса тригонометрии я только их и помню, а ведь было их - множество, и все учили когда-то):
Отсюда легко получаем:
И подставив значения синуса, преобразуем в вид:
Аналогично находим и длину второго отрезка.
Кроме того, вспомнив, что d=a+b, получим:
Теперь, если эту страхолюдную формулу преобразовать к каноническому виду, в котором слева все, а справа - ничего (т.е. нуль), то получим уравнение четвертой степени, которое принесет нам массу хлопот с его решением.
Но давайте мы вообразим, что мы - древнеегипетские претенденты в жрецы, а не современный министр развития, который постоянно пытается преобразовать нашу экономику к каноническому виду.
Поэтому преобразовывать полученную формулу мы не будем, а запишем ее, как функцию, и найдем несколько ее значений, которые интересуют нас более всего.
А интересуют нас значения этой функции близкие к нулю.
(Кстати сказать, в этом мы снова отличаемся от г-на Грефа, который старается - и безуспешно! - увести экономику от нулевого значения.)
Посмотрим еще раз на картинку.
Очевидно, что диаметр колодца не может быть более двух метров.
Вряд ли он может быть и менее полуметра, в этом случае точка пересечения тростинок будет значительно выше метра.
Значит, интересующий нас диапазон диаметров лежит в пределах примерно от полуметра до полутора метров.
Вот для этого диапазона давайте и посчитаем полученную функцию.
Если выбрать (с потолка, разумеется) шаг изменений равным 0,2 метра, то надо произвести всего пять вычислений.
Это можно сделать и карандашом на бумаге.
(Цивилизация, конечно, расслабляет, поэтому я поленился считать головой и поручил расчеты компьютеру, но можно считать и вручную.)
Получается такая таблица:
d= 0.5 f(d)= -0.072770259307136
d= 0.7 f(d)= -0.086410731554592
d= 0.9 f(d)= -0.081611289123156
d= 1.1 f(d)= -0.047331325756815
d= 1.3 f(d)= 0.036159572393651
Оп!! Через ноль перескочили, дальше можно не считать.
Уточним точку перехода:
d= 1.2 f(d)= -0.013564219528015
Не попали!
Добавим половину последнего шага.
d= 1.25 f(d)= 0.0089900175395414
Перебор...
Вычтем половину последнего шага.
d= 1.225 f(d)= -0.0028197161009309
Недолет!
Добавим половину последнего шага.
d= 1.2375 f(d)= 0.0027109315721117
Перелет.
Вычтем половину последнего шага.
d= 1.231 f(d)= -0.000085621698998395
Есть!! Ошибка скачком уменьшилась сразу в 30 раз.
Можно еще немножко поуточнять, и уменьшить ошибку еще на порядок:
d= 1.2312 f(d)= 0.0000065840492480262
Итак, диаметр колодца равен одному метру двадцати трем сантиметрам и одному миллиметру с хвостиком.
"Стоп! - закричат на меня математики и программисты, - А чем этот "вычислительно-геометрический" способ отличается от итерационного?"
Названием! - гордо отвечаю я.
А еще тем, что потребовался всего десяток вычислений (по-научному - итераций), которые может сделать за полчаса любой современный школяр, а не только древнеегипетский жрец.
И без всякой вычислительной техники...
(Продолжение)
Обложка
Предыдущий номер
Следующий номер
|