LINUX.ORG.RU
 

[геометрия] Задача за 6й класс


0

2

Попалась тут одна задачка, ходящая последние несколько дней по интернету. Задачка за 6й класс, решается без помощи тригонометрии, координат и транспортиров. Всем любителям размять мозг — посвящается.

Суть: http://pics.livejournal.com/twinkie_twink/pic/000xzarr

Для Ъ: треугольник АВС, равнобедренный, угол при вершине 80 градусов. На площади треугольника произвольно взята точка D, от которой проведены отрезки к вершинам. В получившемся треугольнике АDС угол DАС равен 10 градусам, угол DСА - 30 градусам. Требуется найти угол ВDС (ну, или ВDА, всё равно).


[#] Ответ на: комментарий от r_asian 28.05.2011 1:34:55  

> Капитан, а что, у нас теперь сумма углов треугольника не 180? И полный угол не 360? А в военное время синус может достигать 50-ти?

Проверка неприменима, поскольку она не проверяет правильность решения. То есть вычисления-то верные, но они ничего не доказывают.

А синус, кстати, может достигать и 50-ти запросто.

**** ()
[#]  
observer

Пруф

#include "stdio.h"
#include "math.h"
#define _USE_MATH_DEFINES

struct coord {
  double x;
  double y;
};

struct coord A, B, C, D;

double deg2rad(double deg) {
  return deg/180 * M_PI;
}

double rad2deg(double rad) {
  return rad*180 / M_PI;
}

void setValues() {
  A.x = 0.0;
  A.y = 0.0;

  C.x = 10.0; //припустим
  C.y = 0.0;

  B.x = (C.x - A.x) / 2;
  B.y = tan(deg2rad(50)) * 5;
}

double getBDC() {
  double BD = sqrt(pow(fabs(B.x - D.x), 2) + pow(fabs(B.y - D.y), 2));
  double CD = sqrt(pow(fabs(C.x - D.x), 2) + pow(fabs(C.y - D.y), 2));
  double BC = sqrt(pow(fabs(B.x - C.x), 2) + pow(fabs(B.y - C.y), 2));

  return rad2deg(acos( (pow(BD, 2) + pow(CD, 2) - pow(BC, 2)) / (2 * BD * CD) )) ; //теорема косинусов
}

void find() {
  double angle;
  D.x = 0.0;
  
  while (D.x <= 10.0) {
    D.y = tan(deg2rad(10)) * D.x;
    angle = rad2deg(atan(D.y / (C.x-D.x)));

    if (fabs(angle - 30) < 0.0001) {
      printf("D.x = %f, D.y = %f, angle BCD = %f\n", D.x, D.y, getBDC());
     }

    D.x += 0.00001;
  }
}

int main() {
  setValues();
  find();
  
  return 0;
}

Собственно, вывод:

D.x = 7.660440, D.y = 1.350742, angle BCD = 149.999893
D.x = 7.660450, D.y = 1.350744, angle BCD = 150.000134

* ()
[#] Ответ на: комментарий от adriano32 28.05.2011 5:25:40  
observer

А в какой софтине рисовал?

* ()
[#] Ответ на: комментарий от prorok2k 27.05.2011 21:58:38  

спасибо) а то я думал, что мои 5 минут  — диагноз

** ()
[#] Ответ на: комментарий от arsi 27.05.2011 23:11:12  

> md5 сумма ответа: 7ef605fc8dba5425d6965fbd4c8fbe1f

У меня вышло 176ef0dfef8803a9ff66c1fd346824cc

()
[#] Ответ на: комментарий от prorok2k 28.05.2011 9:37:33  
arsi

> > md5 сумма ответа: 7ef605fc8dba5425d6965fbd4c8fbe1f
> У меня вышло 176ef0dfef8803a9ff66c1fd346824cc

ты перевод строки зацепил ;)

$ echo 150 | md5sum -
176ef0dfef8803a9ff66c1fd346824cc  -
$ echo -n 150 | md5sum -
7ef605fc8dba5425d6965fbd4c8fbe1f  -
**** ()
[#] Ответ на: комментарий от prorok2k 28.05.2011 9:37:33  
GotF

>> У меня вышло 176ef0dfef8803a9ff66c1fd346824cc

Считай без перевода строки и будет так же :)

echo -n $number | md5sum

***** ()
[#] Ответ на: комментарий от dikiy 28.05.2011 0:54:51  

> уравнение по площадям треугольников составить

А как площади с углами связывать будете? Без тригонометрии-то.

()
[#] Ответ на: комментарий от backbone 28.05.2011 0:57:12  

Это верно, но для >9 класса. В шестом таких вещей не знают. Есть более элегантное и просто решение.

()
[#]  
Xellos

Я так и не понял, почему проверка углами для 100 и 132 градусов неверна. Я не хочу как r_asian спорить, да, решение 150, но в чём ошибка при проверке суммами углов других решений?

**** ()
[#]  
Xellos

Задача никак не шестого класса, а класса восьмого. И задача вообще говоря олимпиадная.

**** ()
[#] Ответ на: комментарий от r 28.05.2011 0:20:00  
Xellos

>Вершина вписанного по основанию треугольника будет находится со стороны большего угла вписанного треугольника относительно биссектрисы верхнего угла описанного равнобедренного треугольника

Можно то же самое выразить более другими словами? Кто на ком стоял, я не понял.

**** ()
[#] Ответ на: комментарий от r_asian 28.05.2011 1:42:01  

> ТС, выходи уже

Ночь же была, все разумны люди спали.

А множество «подходящих» углов — результат решения уравнения 0 = 0, справедливого для любого x.

()
[#] Ответ на: комментарий от r_asian 28.05.2011 2:02:36  
GreyDoom

Теорема "Жена всегда права", которую многие принимают за аксиому?

*** ()
[#] Ответ на: комментарий от ados 28.05.2011 2:04:54  
GreyDoom

И похер, что геометрия только с 7 класса, ага.

*** ()
[#] Ответ на: комментарий от prorok2k 28.05.2011 10:06:31  
backbone

При том, оно так и не прозвучало, если не ошибаюсь =)
Надо ещё помучаться, не хочется пока смотреть в ответ.

А это элегантное решение останется таковым в случае других углов? Было бы здорово. :)

// 6колота смотрит на нас как на...

** ()
[#] Ответ на: комментарий от Xellos 28.05.2011 10:10:35  

> но в чём ошибка при проверке суммами углов других решений?

Углы однозначно задают соотношение сторон в треугольники (по теореме синусов, на пример). При произвольных углах, стороны выйдут произвольные, и не состыкуются. Как сказал AX: «Твоя система описывает три ОТДЕЛЬНЫХ треугольника». В задаче же они все чётко состыкованы.

()
[#] Ответ на: комментарий от Xellos 28.05.2011 10:11:08  

> Задача никак не шестого класса

В школе обычно решают задачку, и потом выносят на контрольную что-то аналогичное (по легенде — задачка с контрольной). Задачка — отличная демонстрация применения дополнительных построений. Если знать, в каком направлении копать, она совсем не сложная.

()
[#] Ответ на: комментарий от Xellos 28.05.2011 10:10:35  

В том, что там число линейно независимых уравнений меньше числа неизвестных. Поэтому из решения системы получается лишь условие на сумму углов, но не на сами углы. Поэтому, мало того что треугольников с заданными углами бесконечное количество, так у нас ещё системе удовлетворяет бесконечное множество углов.

Проверка должна проверять соответствие решения _условию_, а не части решения.

Проблема в том, что не все из удовлетворяющих системе треугольников можно сложить в форме равнобедренного треугольника. В частности, решения с углами 100 и 132 нельзя.

** ()
[#] Ответ на: комментарий от backbone 28.05.2011 10:30:32  

> А это элегантное решение останется таковым в случае других углов? Было бы здорово. :)

В случае произвольных углов — нет, но подобрать другие углы, для которых оно будет применимо — можно.

()
[#] Ответ на: комментарий от prorok2k 28.05.2011 10:15:12  
Dobriy_i_Prostoy
>>-----Цитата---->>

Ночь же была, все разумны люди спали

<<-----Цитата----<<

И это человек, запостивший когда-то вот этот тред, считает себя разумным

()
[#] Ответ на: комментарий от prorok2k 28.05.2011 10:43:48  
backbone

не удержался, подсмотрел... > Круто получилось у товарища tyrex http://farm3.static.flickr.com/2706/5758896857_d88836b715_z.jpg

> В случае произвольных углов — нет, но подобрать другие углы, для которых оно будет применимо — можно.
ABC = 2 * (DAC + DCA) - действительно, элегантно =)

** ()
[#] Ответ на: комментарий от kernelpanic 28.05.2011 11:33:06  
Terrens

Да. Но осторожнее - есть люди, готовые за этот ответ сжечь.

* ()
[#] Ответ на: комментарий от Terrens 28.05.2011 11:34:08  
kernelpanic

Я тред не читал. Там все так плохо?

**** ()
[#] Ответ на: комментарий от kernelpanic 28.05.2011 11:34:45  
AX

>Я тред не читал. Там все так плохо?

Даже ещё хуже! :)

**** ()
[#]  
x905

какой годный тред, даже ответ не нужен

** ()
[#] Ответ на: комментарий от Xellos 28.05.2011 10:11:58  
r

>Можно то же самое выразить более другими словами? Кто на ком стоял, я не понял.

Представь равнобедренный треугольник. Углы при основании равны. Теперь смещай вершину влево от биссектрисы-перпендикуляра к основанию - левый угол увеличивается правый становиться острее. Смещай вправо - противоположный сценарий. Когда углы равны - середина по центру - треугольник равнобедренный. То есть вершина всегда со стороны большего угла относительно перпендикуляра к середине основания треугольника. Это у нас точка D. Она правее перпендикуляра к середине основания(DCA > DAC). А перпендикуляр этот совпадает с биссектрисой ABC.

***** ()
[#] Ответ на: комментарий от Xellos 28.05.2011 10:10:35  
r

>Я так и не понял, почему проверка углами для 100 и 132 градусов неверна. Я не хочу как r_asian спорить, да, решение 150, но в чём ошибка при проверке суммами углов других решений?

Посмотри систему уровнений с x,y,z которую я приводил. Она тоже описывает связь 3х переменных по неким правилам. Но решений там безграничное количество. То же самое сделал и r_asian. От того что он взял эти правила из геометрии не следует того что они полностью описывают указанную ситуацию. Например там не описана взаимная ориентация треугольников ABC и ADC. А это важное условие задачи - четкое ограничение. Нет правила говорящего о том что основания треугольников совпадают по длинне - то есть потеряно минимум 2 ограничения множества допустимых решений.

Все равно что взять уравнение вида X - Y = 5. (2 переменные одно уравнение). Ну и какими могут быть X,Y? Да "любыми". Тут недостаточно ограничений для однозначного решения.

***** ()
[#] Ответ на: комментарий от r 28.05.2011 19:39:43  
Xellos

Вот, теперь понял. Спасибо.

**** ()
[#] Ответ на: комментарий от r 28.05.2011 20:00:15  
Xellos

Это я знаю. Я хотел понять как геометрически выглядит ошибка. Что получается при других "решениях".

**** ()
[#]  
Igron

Получил 150 за пару минут: нарисовав треугольник побольше и продолжив линии.

***** ()
[#] Ответ на: комментарий от r 28.05.2011 21:41:28  
r

Только с одним уточнением AB || A'B"

***** ()
[#] Ответ на: комментарий от Igron 28.05.2011 20:36:16  

Ну вот, есть ещё, оказывается, люди, не забывшие курс средней школы.

()
[#] Ответ на: комментарий от r 28.05.2011 21:42:12  
r

И еще с одним B"A'D = BAD :)

***** ()