Идеальная программа всегда имеет код возврата OK, потому что всегда работает правильно (при этом она, к сожалению, почти не встречается).
Хорошая программа имеет код возврата OK, если справилась с задачей, а ERR, если не справилась.
А желаемый компромис такой: если справилась, то OK, а иначе — подробная диагностика: почему не вышло, на каком этапе пошли косяки и так далее. Причём, хочется это всё получить одним числом, как обычно
Что характерно, такое бывает не только в программировании, но и в жизни. Следующая задачка по геометрии прикольна тем, что разные люди дают разные ответы И настаивают на них. А самое смешное, что по ответу можно весьма точно указать на ошибку. Поэтому данная задачка является образцом и примером "эталонной изящной геометрической задачки"
Итак, сама задача:
Два одинаковых конуса с равносторонними треугольниками со стороной 1 в осевых сечениях лежат на плоскости (т.е. в плоскости находится вершина каждого конуса, ровно одна точка с окружности и отрезок между ними). При этом конусы касаются друг друга так, что их вершины совпадают. Надо найти расстояние от плоскости до самой далёкой точки касания одного конуса другим.
Пожалуйста, не пишите здесь решение, чтобы не лишать других удовольствия справиться самостоятельно.
11.03.09 19:31: Перенесено модератором из 'О жизни' — Кодт
11.03.09 19:31: Перенесено модератором из 'О жизни' — Кодт
Здравствуйте, Kluev, Вы писали:
K>Здравствуйте, Iso, Вы писали:
Iso>>Пожалуйста, не пишите здесь решение, чтобы не лишать других удовольствия справиться самостоятельно.
K>sin(pi/6)
Здравствуйте, Mr.Cat, Вы писали:
MC>Здравствуйте, Iso, Вы писали: MC>>>Рисунок в студию. Iso>>http://www.imageup.ru/img12/conepic106804.gif
MC>Ок, теперь понятно. Потому как по тексту я лично понял, что конусы соприкасаются в единственной точке — вершине, на расстоянии 0 от плоскости.
По тексту понял примерно тоже самое (ну разве что с поправкой что касаться друг друга они могут только в точке, лежащей в плоскости).
По рисунку вообще ничего не понял.
MC>Ок, теперь понятно. Потому как по тексту я лично понял, что конусы соприкасаются в единственной точке — вершине, на расстоянии 0 от плоскости.
Ну да, формулировать такие штуки сложнее всего.
В условии хоть и сказано "в плоскости находится вершина каждого конуса, ровно одна точка с окружности и отрезок между ними", но понять это сходу сложно. Если умеете сделать хороший рисунок, то спасёте многих, я думаю
Здравствуйте, Iso, Вы писали: Iso>В условии хоть и сказано "в плоскости находится вершина каждого конуса, ровно одна точка с окружности и отрезок между ними", но понять это сходу сложно.
Да не, с этим-то как раз все ок. Тут проблема в том, что в условии не указано, что конусы соприкасаются друг с другом по линии, а не в одной точке.
_>В смысле, поскольку в условии не уточнено, то либо 0, если касаются только вершинами, либо sqrt(1/2) если касаются по линии.
Всё без обмана, ответ 0 неинтересен, нужно именно максимальное расстояние от плоскости до точки касания конусов.
Но корень из половины — неверный ответ
Здравствуйте, Iso, Вы писали:
_>>В смысле, поскольку в условии не уточнено, то либо 0, если касаются только вершинами, либо sqrt(1/2) если касаются по линии. Iso>Всё без обмана, ответ 0 неинтересен, нужно именно максимальное расстояние от плоскости до точки касания конусов. Iso>Но корень из половины — неверный ответ
Почему? Могу обосновать свой ответ, но сам просил решение тут не постить...
Здравствуйте, Iso, Вы писали:
_>>Почему? Могу обосновать свой ответ, но сам просил решение тут не постить... Iso>Хорошо, можете написать в личку — я постараюсь указать на ошибку.
Гы. Нарисовал на бумажке, маленько пописал, получил sqrt(1/8)
Здравствуйте, Iso, Вы писали:
_>>Гы. Нарисовал на бумажке, маленько пописал, получил sqrt(1/8) Iso>Да, бумажка рулит, Вы на верном пути. Iso>Но надо ещё решать, если хотите верный ответ
Здравствуйте, alex_mah, Вы писали:
_>Здравствуйте, Iso, Вы писали:
_>>>Гы. Нарисовал на бумажке, маленько пописал, получил sqrt(1/8) Iso>>Да, бумажка рулит, Вы на верном пути. Iso>>Но надо ещё решать, если хотите верный ответ
_>0,43
Ну в смысле там после 0,43 еще много чего, но если по другому ответ написать, он и решением будет.
_>>0,43 _>Ну в смысле там после 0,43 еще много чего, но если по другому ответ написать, он и решением будет.
Вы далеко продвинулись, но до верного ответа ещё осталось несколько шагов.
расстояние от вершины до центра основания = srqt(3)/2
расстояние от вершины до проекции центра основания на плоскость = 3/4
расстояние между центрами оснований = srqt(3)/2
расстояние между проекциями центров оснований = srqt(3)/2
расстояние от вершины до середины отрезка, соединяющего проекции центров оснований = sqrt(6)/4
расстояние от вершины до середины отрезка, соединяющего центры оснований = 3/4
косинус угла между плоскостью и отрезком, по которому касаются конусы = sqrt(6)/3
синус того же угла = sqrt(3)/3
расстояние от плоскости до дальнего конца отрезка, по которому касаются конусы = sqrt(3)/3
Из соображений симметрии (аналогичная плоскость сверху) следует, что отрезки "вершина — центры оснований" и отрезок касания лежат в одной плоскости. Также известна высота центра основания (любого). Дальше расчёт.
Аналогичное применимо и к конусам с разным диаметром оснований. При расчёте тогда нужно будет учесть высоты обоих оснований. Угол 60 сначала ошибочно считал (ответ 1/2), но он больше, т.к. конусы раздвинуты.
N>расстояние от вершины до центра основания = srqt(3)/2
N>расстояние от вершины до проекции центра основания на плоскость = 3/4
N>расстояние между центрами оснований = srqt(3)/2
Разве из этого не следует (или наоборот), конусы касаются по прямой проходящей через вершину и точку пересечения "горизонтальный диаметров оснований"? Из чего последняя и является максимально удаленной от плоскости на sqrt(3)/4 :xz:
N>расстояние между проекциями центров оснований = srqt(3)/2
N>расстояние от вершины до середины отрезка, соединяющего проекции центров оснований = sqrt(6)/4
N>расстояние от вершины до середины отрезка, соединяющего центры оснований = 3/4
N>косинус угла между плоскостью и отрезком, по которому касаются конусы = sqrt(6)/3
N>синус того же угла = sqrt(3)/3
N>расстояние от плоскости до дальнего конца отрезка, по которому касаются конусы = sqrt(3)/3
N>
Здравствуйте, Iso, Вы писали:
Iso>Два одинаковых конуса с равносторонними треугольниками со стороной 1 в осевых сечениях лежат на плоскости (т.е. в плоскости находится вершина каждого конуса, ровно одна точка с окружности и отрезок между ними). При этом конусы касаются друг друга так, что их вершины совпадают. Надо найти расстояние от плоскости до самой далёкой точки касания одного конуса другим.
Iso>Пожалуйста, не пишите здесь решение, чтобы не лишать других удовольствия справиться самостоятельно.
У меня тоже получилось sqrt(3) / 4
Почему-то это не является правильным ответом, хотя выше говорилось, что решение приблизительно равно 0.43...
sqrt(3) / 4 = 0.4330127018922193
Здравствуйте, Beam, Вы писали:
B>У меня тоже получилось sqrt(3) / 4
B>Почему-то это не является правильным ответом, хотя выше говорилось, что решение приблизительно равно 0.43... B>sqrt(3) / 4 = 0.4330127018922193
Ой! Автор задачи про 0,43 ничего такого не говорил... Сорри
Здравствуйте, Iso, Вы писали:
Iso>Два одинаковых конуса с равносторонними треугольниками со стороной 1 в осевых сечениях лежат на плоскости (т.е. в плоскости находится вершина каждого конуса, ровно одна точка с окружности и отрезок между ними). При этом конусы касаются друг друга так, что их вершины совпадают. Надо найти расстояние от плоскости до самой далёкой точки касания одного конуса другим.
Здравствуйте, Iso, Вы писали:
SC>>1/2 Iso>Тоже хороший ответ. Iso>Я знаю два разных неправильных способа его получения
А обещал, что по ответу можешь указать ошибку...
Вот у меня ответ 0,42. И какая ошибка?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
D>Сабж. ~0.577. Если неверно, проверю все выкладки в четвёртый раз (первые два получалась фигня, сейчас вроде бы похоже на правду).
Ну раз выше уже алгоритмы решений пошли, то и я отмечусь: http://dimgel.ru/rsdn/etude.png (вид сбоку и вид сверху). Касательная на втором рисунке — проекция вертикальной плоскости, разделяющей два конуса.
Благодаря тому, что конусы особенные -- построены на равносторонних треугольниках -- тот же расчет можно сделать проще, без записей.
Легко заметить, что высоты конусов (обе длиной sin60) составляют равносторонний треугольник. Его третья сторона соединяет центры конусов и поднята над опорной плоскостью на 0.5sin60.
Медиана этого треугольника (та из медиан, которая разбивает третью сторону пополам) лежит в отрезке касания конусов. Ее длина sin60^2.
То есть медиана длиной sin60^2 возвышается над плоскостью на 0.5sin60.
Значит, отрезок касания длиной 1, который ее включает, "поднимется" над плоскостью на высоту 0.5sin60 / sin60^2 = 0.5 / sin60 = 1/sqrt3.
Тот, кто желает, но не делает, распространяет чуму.
Напишите, пожалуйста, как решали.
Уже второй раз вижу такую версию ответа, поэтому интересно разобраться, где ошибка
(первый раз показалось, что просто арифметический обсчёт)
Здравствуйте, Erop
SC>>>1/2 Iso>>Тоже хороший ответ. Iso>>Я знаю два разных неправильных способа его получения E>А обещал, что по ответу можешь указать ошибку...
Да, есть такой косяк, что 0.5 неоднозначно указывает на ошибку.
Но если знать, сколько времени человек решал задачу, то можно весьма точно указать
Потому что одна ошибка получается на первых минутах решения, а другая — минут через 10-15.
E>Вот у меня ответ 0,42. И какая ошибка?
Sqrt(3)/4?
Это весьма типичный ответ.
И ошибку можно характеризовать как "неверный чертёж"
В том смысле, что рисуется не очень корректная картинка, которая навязывает неправильные алгебраические действия.
S>Получил такой же ответ. Подвоха только не нашел. Задача показалась очень простой. Наверное, ошибся. S>0.5 * sin(pi/3) = sqrt(3)/4
В этом и прелесть задачки, что она кажется простой
Более того, она простая, только обманки раскиданы вокруг решения, поэтому получаются неверные ответы (как и в Вашем случае).
Так и хочется сказать про задачку "сейчас таких не делают"... увы, это правда.
А было время, когда такая задача считалась нормальной вступительной в ВУЗ...
Здравствуйте, Iso, Вы писали:
S>>Получил такой же ответ. Подвоха только не нашел. Задача показалась очень простой. Наверное, ошибся. S>>0.5 * sin(pi/3) = sqrt(3)/4
Iso>В этом и прелесть задачки, что она кажется простой Iso>Более того, она простая, только обманки раскиданы вокруг решения, поэтому получаются неверные ответы (как и в Вашем случае).
Iso>Так и хочется сказать про задачку "сейчас таких не делают"... увы, это правда. Iso>А было время, когда такая задача считалась нормальной вступительной в ВУЗ...
Да. Я осознал правильное решение. Только осознал своим сопособом. Представил, что конусы развернуты вершинами в противоположные стороны. Тогда они касаются основанием в самой нижней точке. Если их начинать поворачивать вершинами друг к другу, то точка касания начнет подниматься. Решение sqrt(3)/4 получится в момент, когда конусы лежат параллельно (их высоты параллельны). Поворачивая их дальше, получаем еще большую высоту. и Максимум получим, когда вершины сомкнуться.
При поступлении в ВУЗ все таки голова лучше работает, чем через N лет после его окончания. Я уже к 5-му курсу не решил бы и половины вступительных задач.
Здравствуйте, Iso, Вы писали:
B>>sqrt(1/5). Да? Iso>Увы.
Iso>Напишите, пожалуйста, как решали. Iso>Уже второй раз вижу такую версию ответа, поэтому интересно разобраться, где ошибка Iso>(первый раз показалось, что просто арифметический обсчёт)
Iso>Заранее спасибо!
1. По условию, вершины обоих конусов лежат на плоскости. Представим немного другую картину — вершина находится на расстоянии 1/2 от плоскости. В этом случае оси конусов будут параллельны плоскости.
2. Обозначим вершину конусов как B, точку соприкосновения оснований конусов как A. Опустим из точки А перпендикуляр на плоскость. Получим точку C на плоскости. У нас получился прямоугольный треугольник ABC с прямым углом в точке A. AB = 1, AC = 1/2. Откуда BC = sqrt(5) / 2
3. Теперь вернем вершину на место — на плоскость — "повернем" конусы При этом треугольник ABC ляжет на плоскость своей гипотенузой BC. Опустим из точки A высоту AD на гипотенузу BC. AD — это и есть искомая величина.
Т.к. ACD и ADB — прямоугольные треугольник, составляем уравнения:
CD^2 + AD^2 = AC^2 = 1/4
BD^2 + AD^2 = AB^2 = 1
BD + CD = CB = sqrt(5) / 2
Из первых двух: BD^2 — CD^2 = (BD-CD)(BD+CD) = 3/4
Далее находим (BD-CD), BD, а затем и AD = sqrt(5) / 2
S>Да. Я осознал правильное решение. Только осознал своим сопособом. Представил, что конусы развернуты вершинами в противоположные стороны. Тогда они касаются основанием в самой нижней точке. Если их начинать поворачивать вершинами друг к другу, то точка касания начнет подниматься.
Спасибо, что так подробно записали. Я иногда работаю со школьниками, поэтому мне важны различные взгляды на одинаковые вещи Чтобы их лучше понимать.
S>При поступлении в ВУЗ все таки голова лучше работает, чем через N лет после его окончания. Я уже к 5-му курсу не решил бы и половины вступительных задач.
Это верно, если Вы говорите о тех задачах, что пришлось решать "тогда давно". А нынешние вступительные стали совсем простыми. Иногда не понятно, как замотивировать ребёнка учиться, если школьные выпускные и ВУЗовские вступительные варианты больше похоже на отбор из подготовительной группы детского сада в первый класс
B>Далее находим (BD-CD), BD, а затем и AD = sqrt(5) / 2 B>Мне тоже интересно, где ошибка...
Спасибо большое, что так подробно всё записали.
Ошибка у Вас в чертеже, если хотите, то укажу точнее.
Но полагаю, что гораздо интереснее найти её без чьих-то помех
Удачи!
Здравствуйте, Spiceman, Вы писали:
S>Представил, что конусы развернуты вершинами в противоположные стороны. Тогда они касаются основанием в самой нижней точке. Если их начинать поворачивать вершинами друг к другу, то точка касания начнет подниматься. Решение sqrt(3)/4 получится в момент, когда конусы лежат параллельно (их высоты параллельны). Поворачивая их дальше, получаем еще большую высоту. и Максимум получим, когда вершины сомкнуться.
Во! Я тоже два пятака на столе крутил, чтобы понять неверность гипотезы о срединной точке касания.
Iso>>Ошибка у Вас в чертеже, если хотите, то укажу точнее. B>Хочу...
Хорошо.
Давайте посмотрим на третий шаг:
"3. Теперь вернем вершину на место — на плоскость — "повернем" конусы При этом треугольник ABC ляжет на плоскость своей гипотенузой BC."
Если честно нарисовать, то часть конуса уйдёт "под" плоскость (Вы же повернули относительно точки C?).
Если же повернуть относительно точки с основания конуса, то точка C оторвётся от плоскости.
В обоих случаях дальнейшие вычисления имеют не очень много смысла.
А>А у меня получилось (2*sqrt(3)+3)/8
Да, знакомая картинка
Это, скорее всего, ошибка в понимании чертежа на последнем этапе.
Вы близки к верному решению.
Здравствуйте, Iso, Вы писали:
E>>Вот у меня ответ 0,42. И какая ошибка? Iso>Sqrt(3)/4? Iso>Это весьма типичный ответ.
Это было бы 0,43, ну 0,44, на крайняк, если совсем неточно прикинуть
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
E>>>Вот у меня ответ 0,42. И какая ошибка? Iso>>Sqrt(3)/4? Iso>>Это весьма типичный ответ. E>Это было бы 0,43, ну 0,44, на крайняк, если совсем неточно прикинуть
Ух ты, и правда.
Тогда делитесь своим решением — буду знать, как 0.42 получить!
Заранее спасибо.
_>sin(Pi/3) _>Неожиданный вариант.
Вполне типичный. Обычно это означает неправильный чертёж.
Это начало пути от одного неправильного ответа к другому, пока не будет достигнут правильный.
В теме выше было уже подробно записано два решения, но особенно интересно решить самому, нарвавшись на все ошибки Или увернувшись от них. Удачи!
Здравствуйте, Iso, Вы писали:
_>>sin(Pi/3) _>>Неожиданный вариант. Iso>Вполне типичный. Обычно это означает неправильный чертёж. Iso>Это начало пути от одного неправильного ответа к другому, пока не будет достигнут правильный. Iso>В теме выше было уже подробно записано два решения, но особенно интересно решить самому, нарвавшись на все ошибки Или увернувшись от них. Удачи!
Я имел ввиду случай, когда конусы совпадают.
Правильный ответ видел выше в теме и с ним согласен. -)
Помнится, в школе такие хитрые стереометрические задачи? которые еще хрен представишь, решали через векторы
Введем базис X — линия касания первого конуса с плоскостью, Y — линия каcания второго конуса, Z — перпендикулярно плоскости. Центр координат — в вершине конусов.
Вектор из вершины в центр основания первого конуса O1 длиной sqr(3)/2 как высота конуса.
выразим через базис. O1 лежит в плоскости XZ, и является катетом прямоугльного треугольника вершина-центр основания-точка касания конуса и плоскости. Его высота sqr(3)/4, высота делит гипотенузу на отрезки 3/4 и 1/4. O1 = 3/4*X + sqr(3)/4 * Z
Вектор, по которому касаются конусы — L. вектор из центра первого конуса в точку касания оснований R1. L = O1 + R1. z-коэффициент в разложении L по базису — L_z и будет искомой величиной.
вектор R1 из соображений симметрии перпендикулярен плоскости XZ, поэтому его z-коэффициент R1_z = 0.
получаем, что L_z = O1_z = sqr(3)/4.
Здравствуйте, Iso, Вы писали:
Iso>Идеальная программа всегда имеет код возврата OK, потому что всегда работает правильно (при этом она, к сожалению, почти не встречается). Iso>Хорошая программа имеет код возврата OK, если справилась с задачей, а ERR, если не справилась.
Iso>А желаемый компромис такой: если справилась, то OK, а иначе — подробная диагностика: почему не вышло, на каком этапе пошли косяки и так далее. Причём, хочется это всё получить одним числом, как обычно
Iso>Что характерно, такое бывает не только в программировании, но и в жизни. Следующая задачка по геометрии прикольна тем, что разные люди дают разные ответы И настаивают на них. А самое смешное, что по ответу можно весьма точно указать на ошибку. Поэтому данная задачка является образцом и примером "эталонной изящной геометрической задачки"
Iso>Итак, сама задача:
Iso>Два одинаковых конуса с равносторонними треугольниками со стороной 1 в осевых сечениях лежат на плоскости (т.е. в плоскости находится вершина каждого конуса, ровно одна точка с окружности и отрезок между ними). При этом конусы касаются друг друга так, что их вершины совпадают. Надо найти расстояние от плоскости до самой далёкой точки касания одного конуса другим.
Iso>Пожалуйста, не пишите здесь решение, чтобы не лишать других удовольствия справиться самостоятельно.
Да уж, задачка с кучей подводных камней. Сначала кажется, что точка касания "в силу симметрии" на расстоянии 1/2, затем хочется как-то сопоставить точку касания конусов или ее проекцию на плоскость, а также точки касания конусов с плоскостью и их центры оснований между собой -- тоже ни к чему хорошему не приводит.
Возникает простая картинка: приподнимем оба конуса за вершину над плоскостью так, чтобы их оси оказались параллельны плоскости. Теперь действительно в силу симметрии расстояние от точки касания до плоскости равно одной второй. Начнем теперь изменять угол плоскости так, чтобы конусы по-прежнему касались плоскости своими основаниями, а их общая вершина становилась все ближе к плоскости. Т.е. вместо того, чтобы класть вершины конусов на плоскость, мы оставляем их в зафиксированном положении и "поднимаем" плоскость с одной стороны. Сконцентрируемся на трех точках. Одна -- интересующая нас точка касания конусов M. Две другие -- точки A и B касания оснований конусов и плоскости. Изначально точки A и B -- проекции центров оснований конусов на плоскость, так как мы установили плоскость параллельно осям конусов. Сами основания находятся под каким-то углом друг к другу и перпендикулярны плоскости. Т.е. проекция точки M на плоскость и точки A и B образуют треугольник на плоскости. Поворот плоскости мы осуществляем вокруг прямой AB, т.к. нам надо, чтобы конусы продолжали касаться плоскости. Т.е. мы как бы поворачиваем треугольник ABM. При таком повороте, проекция точки M на плоскость сначала приблизится к отрезку AB, затем пересечет его и уедет с обратной стороны. В тот момент когда проекция точки M падает на AB, расстояние от M до плоскости наибольшее. Т.е. что происходит с расстоянием. Изначально 1/2, затем увеличивается до какого-то значения, которое можно, в принципе посчитать, оно равно высоте треугольника 1/sqrt(2), 1/sqrt(2), sqrt(3)/2, т.е. равно sqrt(5)/4, а затем обратно уменьшается. Так? Нет, не так. Оказывается, что при повороте плоскости точки касания меняют расстояние! Т.е. это уже не точки A и B. Проще всего это понять, если представить только два сцепленных основания (такие "очки" с погнутой душкой нулевой длины). Изначально душка на расстоянии 1/2 от плоскости. Теперь, когда мы изменяем угол плоскости, это тоже самое, что "покатить" очки по плоскости, при этом обе точки касания изменятся, они разъедутся.
Можно было бы в начальном положении накрыть конусы другой плоскостью с противоположной стороны так, что изначально обе параллельны осям конусов (и параллельны друг другу). Теперь наклоняем обе плоскости одновременно к вершине. В итоге получится симметричная картинка. Симметричная-то симметричная, но если соединить точки касания одного основания с двумя плоскостями, то такой отрезок не будет диаметром (как раз из-за того эффекта "катания очков", описанного выше, т.к. изначально это диаметр, а при изменении угла плоскостей, точки уезжают, причем симметрично).
Таким образом, ничего существенно полезного это не дает, зато помогает понять большинство ошибок ложных рассуждений.
Вот так это выглядит (на правом основании показаны точки касания основания и двух плоскостей, отрезок между ними и центр основания):
Здравствуйте, Iso, Вы писали:
Iso>Два одинаковых конуса с равносторонними треугольниками со стороной 1 в осевых сечениях лежат на плоскости (т.е. в плоскости находится вершина каждого конуса, ровно одна точка с окружности и отрезок между ними). При этом конусы касаются друг друга так, что их вершины совпадают. Надо найти расстояние от плоскости до самой далёкой точки касания одного конуса другим.
Без вашего рисунка они могут лежать на плоскости с разных сторон, то тогда 0.
Z>Без вашего рисунка они могут лежать на плоскости с разных сторон, то тогда 0.
В самом деле. Спасибо!
В следующий раз буду тщательнее проверять условие на однозначность его понимания.
V>Да уж, задачка с кучей подводных камней. Сначала кажется, что точка касания "в силу симметрии" на расстоянии 1/2, затем хочется как-то сопоставить точку касания конусов или ее проекцию на плоскость, а также точки касания конусов с плоскостью и их центры оснований между собой -- тоже ни к чему хорошему не приводит.
[skipped...]
Спасибо за такой детальный разбор!
Могу предложить ещё одну версию, рассматривающую более подробно некоторые типичные ошибки.