LINUX.ORG.RU
ФорумTalks

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

 


0

2

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

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

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



Последнее исправление: prorok2k (всего исправлений: 2)
Ответ на: комментарий от r_asian

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

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

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

Xenius ★★★★★
()

Пруф

#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

observer ★★★
()
Ответ на: комментарий от prorok2k

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

jeuta ★★★★
()
Ответ на: комментарий от prorok2k

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

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

$ echo 150 | md5sum -
176ef0dfef8803a9ff66c1fd346824cc  -
$ echo -n 150 | md5sum -
7ef605fc8dba5425d6965fbd4c8fbe1f  -
arsi ★★★★★
()
Ответ на: комментарий от prorok2k

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

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

echo -n $number | md5sum

GotF ★★★★★
()
Ответ на: комментарий от dikiy

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

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

prorok2k
() автор топика
Ответ на: комментарий от backbone

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

prorok2k
() автор топика

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

Xellos ★★★★★
()

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

Xellos ★★★★★
()
Ответ на: комментарий от r

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

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

Xellos ★★★★★
()
Ответ на: комментарий от r_asian

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

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

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

prorok2k
() автор топика
Ответ на: комментарий от r_asian

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

GreyDoom ★★★★
()
Ответ на: комментарий от prorok2k

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

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

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

backbone ★★★★★
()
Ответ на: комментарий от Xellos

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

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

prorok2k
() автор топика
Ответ на: комментарий от Xellos

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

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

prorok2k
() автор топика
Ответ на: комментарий от Xellos

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

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

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

Alan_Steel ★★
()
Ответ на: комментарий от backbone

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

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

prorok2k
() автор топика
Ответ на: комментарий от prorok2k

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

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

Dobriy_i_Prostoy
()
Ответ на: комментарий от prorok2k

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

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

backbone ★★★★★
()
Ответ на: комментарий от kernelpanic

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

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

AX ★★★★★
()

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

x905 ★★★★★
()
Ответ на: комментарий от Xellos

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

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

r ★★★★★
()
Ответ на: комментарий от Xellos

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

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

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

r ★★★★★
()
Ответ на: комментарий от r

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

Xellos ★★★★★
()

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

Igron ★★★★★
()
Ответ на: комментарий от Igron

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

prorok2k
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.