русский
Germany.ruForen → Архив Досок→ Programmierung

VBA Школьная задачка

835  1 2 3 alle
reviz посетитель13.03.10 11:13
NEW 13.03.10 11:13 
Круглая поляна. Д=100м
на границе поляны колышек вбит. К колышку коза привязана. На верёвочке.Коза ходит равномерно вокруг и ест траву.
Вопрос: какой длинны должна быть верёвочка, чтоб коза ровно половину поверхности поляны объела.
Есть какая нибудь формула с пом. которой можно вычислить площадь пересекающихся окружностей?
http://foren.germany.ru/wissen/t/15662409.html?Cat=&page=0&view=collapsed&sb=5
Я не знаю программирование. Ну немного представляю VBA,даже что-то пытаюсь сделать. Я и эту задачку хотел решить. Но вижу,что не смогу.
У меня вопрос,а решается ли вообще эта задачка на VBA.
A = 2500 * arccos(1 - H / 50) - Sqr(100 * H - H ^ 2 * (50 - H))
Компьютер(Макро) не признаёт это. Чем заменить?
#1 
  Daddy Karlo местный житель13.03.10 13:17
13.03.10 13:17 
in Antwort reviz 13.03.10 11:13, Zuletzt geändert 13.03.10 13:27 (Daddy Karlo)
на VBA все решается
скобок не хватает, однако. мой ексел умер, не могу проверить
#2 
reviz посетитель13.03.10 15:45
NEW 13.03.10 15:45 
in Antwort Daddy Karlo 13.03.10 13:17, Zuletzt geändert 13.03.10 15:47 (reviz)
В ответ на:
на VBA все решается

Я тоже так считаю. Если задачка имеет решение,то она должна решаться и на VBA Но как?
Какое задание сформулировать для программы,какой алгоритм составить? (не знаю,правильно я выражаюсь)
В ответ на:
A = 2500 * arccos(1 - H / 50) - Sqr(100 * H - H ^ 2 * (50 - H))
- - - - -
скобок не хватает, однако. мой ексел умер, не могу проверить

Я вижу,что зря привел этот пример. Может он и не нужен вообще для решения задачи.
Меня интересовало почему написание «arccos» считается ошибкой и как надо это писать.
Мне надо было чётко задать вопрос: почему комп(Макро) считает запись « A= arccos(X) »ошибочной.
#3 
voxel3d коренной житель13.03.10 15:57
voxel3d
NEW 13.03.10 15:57 
in Antwort reviz 13.03.10 11:13, Zuletzt geändert 13.03.10 15:58 (voxel3d)
В ответ на:
Чем заменить?

Public Function acos(x As Double) As Double
If Abs(x) < 1 Then
acos = atn(-x / sqr(1 - x * x)) + 2 * atn(1)
ElseIf x = 1 Then
acos = 0
ElseIf x = -1 Then
acos = 4 * atn(1)
Else
msgbox "Not defined for |x|>1"
End If
End Function


Dropbox - средство синхронизации и бэкапа файлов.
#4 
Murr коренной житель13.03.10 18:18
Murr
NEW 13.03.10 18:18 
in Antwort reviz 13.03.10 11:13
Есть какая нибудь формула с пом. которой можно вычислить площадь пересекающихся окружностей?
-----
Да, разумеется. У тебя две криволинейных фигуры и условие равенства площадей. Пишешь два интеграла по "площади фигуры ограниченной функцией" и решаешь в общем виде относительно нужного значения. Там не сложно, 10-й класс советской средней школы...

У меня вопрос,а решается ли вообще эта задачка на VBA.
------
Решается. Вопрос в том, каким методом надо решать... Я бы взял Монте-Корло...
#5 
Vijon знакомое лицо13.03.10 19:07
NEW 13.03.10 19:07 
in Antwort reviz 13.03.10 11:13, Zuletzt geändert 13.03.10 20:13 (Vijon)
Если считать центр поляны центром координат (0, 0), а точку привязки козы (100, 0), то точки пересечения окружностей имеют координаты...
x=100-r^2/200
y=(+/-)r*(1-r^2/40000)^0.5
где r - радиус "окружности козы".
Площадь искомой фигуры равна сумме площадей сектора "окружности козы" и двух сегментов "окружности поляны". Все три площади считаются через координаты центра "окружности козы" и точек пересечения. Затем, из полученного уравнения, находится радиус "окружности козы".
ЗЫ А решать задачу по тригонометрии для шестого класса посредством интегрирования и особенно, методом Монте-Карло - это внушаить, да...
ЗЗЫ А вообще-то говоря, тут и считать ничего не стоит (полученное уравнение, имеется в виду). Банальное половинное деление. r - в интервале от 100 до 200. Думаю, шагов за тридцать искомый радиус найдется с очень большой точностью.
I find my way through night and day
'cause I know I just can't stay
here in heaven
I find my way through night and day'cause I know I just can't stayhere in heaven
#6 
katran76 коренной житель13.03.10 19:31
NEW 13.03.10 19:31 
in Antwort Vijon 13.03.10 19:07
В ответ на:
Все три площади считаются через координаты центра "окружности козы" и точек пересечения.

Вас не затруднит привести способ расчёта этих площадей?
#7 
Murr коренной житель13.03.10 20:07
Murr
NEW 13.03.10 20:07 
in Antwort Vijon 13.03.10 19:07
точки пересечения окружностей имеют координаты
Площадь искомой фигуры равна сумме площадей...
------
Ну насмешил - у тебя есть координаты двух точек - центра окружности и места пересечения двух окружностей и ты считаешь площади и строишь дополнительное уравнение... Смотри определение радиуса на Вики... и подумай как посчитать длину отрезка, заданного двумя координатами...
Единственное - НО - сумей рассчитать точки пересечения.
#8 
Murr коренной житель13.03.10 20:15
Murr
NEW 13.03.10 20:15 
in Antwort Vijon 13.03.10 19:07
ЗЫЫ Банальное половинное деление.
------
Что ты собираешься половинить - понятно. Осталось банально посчитать площади... таки - Монте-Карло?
#9 
Vijon знакомое лицо13.03.10 20:23
NEW 13.03.10 20:23 
in Antwort Murr 13.03.10 20:07
У меня есть: центр первой окружности, центр второй окружности, обе точки пересечения. Исходя из этих четырех точек, вывести в общем виде формулу площадей сектора и сегментов сможет любой шестиклассник.
Так, площадь сектора "окружности козы" будет равна...
S=r*2*arccos((100-x)/r)
где x - абсцисса точек пересечения (см. мое предыдущее сообщение)
Площади сегментов "окружности поляны" считаются с не меньшей легкостью
Полученное уравнение относительно r, насколько я понимаю, решить в общем виде будет довольно затруднительно. А вот методом половинного деления наоборот - легче легкого.
ЗЫ А ссылка на Вики для понимания определения "радиус"- это внушаить еще поболе... Аффтар по-прежнему жжот.
I find my way through night and day'cause I know I just can't stayhere in heaven
#10 
Murr коренной житель13.03.10 20:24
Murr
NEW 13.03.10 20:24 
in Antwort katran76 13.03.10 19:31
С этими площадями он справится - сектор как сегмент минус треугольник... но вот с координатами... таки диффур выйдет? или заменим систему координат?
#11 
Murr коренной житель13.03.10 20:37
Murr
NEW 13.03.10 20:37 
in Antwort Vijon 13.03.10 20:23
У меня есть: центр первой окружности, центр второй окружности, обе точки пересечения.
-----
Ндааа...
Центр окружности - (0,100)
Точка пересечения (x1, y1)
Чем является растояние от Центра-Окружности до Точки-Лежащей-На-Окружности? (подсказка - см ссылку выше)
И как его посчитать, имея координаты двух точек?
сможет любой шестиклассник.
------
Ждем.
#12 
Vijon знакомое лицо13.03.10 20:58
NEW 13.03.10 20:58 
in Antwort Murr 13.03.10 20:37
Рисунок.
I find my way through night and day'cause I know I just can't stayhere in heaven
#13 
Vijon знакомое лицо13.03.10 21:02
NEW 13.03.10 21:02 
in Antwort Vijon 13.03.10 20:58, Zuletzt geändert 13.03.10 21:03 (Vijon)
Почему-то во мне живет надежда, что люди с высшим естественным образованием в состоянии вывести формулу общей площади заштрихованных областей относительно параметра r и прировнять его к половине площади всей окружности.
...Хотя если честно, то эта надежда уже практически при смерти.
I find my way through night and day'cause I know I just can't stayhere in heaven
#14 
Murr коренной житель13.03.10 21:28
Murr
NEW 13.03.10 21:28 
in Antwort Vijon 13.03.10 21:02
в состоянии вывести формулу общей площади заштрихованных областей
------
Хи-хи... Именно это Я и предлагал сделать в самом первом посте - посчитать площадь (интеграл, сумму) двух областей, ограниченных двумя уравнениями в условиях равенства площадей...
Ну если тебе поможет - область решения немного другая - дуга "козы" будет пересекать вертикальную линию (твоя картинка) делящую окружность пополам в двух местах.
Подсказка 2. При этом, площадь выпуклого участка в центре будет равна площади "кривых" треугольников по бокам.
ЗЫ. Ты так и не определился как посчитать длину отрезка. Еще подсказка - см определение гипотенузы.
#15 
Vijon знакомое лицо13.03.10 21:42
NEW 13.03.10 21:42 
in Antwort Murr 13.03.10 21:28, Zuletzt geändert 13.03.10 21:45 (Vijon)
В ответ на:
Хи-хи... Именно это Я и предлагал сделать в самом первом посте - посчитать площадь (интеграл, сумму) двух областей, ограниченных двумя уравнениями в условиях равенства площадей...

Нет, уважаемый. Вы написали достаточно четко: берешь интеграл. Интеграл по корню из квадратного многочлена - милое дело. Подстановка тригонометрических функций либо подстановки Эйлера. Как раз для школьника.
В ответ на:
Ну если тебе поможет - область решения немного другая - дуга "козы" будет пересекать вертикальную линию (твоя картинка) делящую окружность пополам в двух местах.

Это абсолютно не важно. Площади сектора и сегментов будут вычисляться по тем же элементарным формулам.
В ответ на:
Подсказка 2. При этом, площадь выпуклого участка в центре будет равна площади "кривых" треугольников по бокам.

Чушь.
В ответ на:
ЗЫ. Ты так и не определился как посчитать длину отрезка. Еще подсказка - см определение гипотенузы.

Какого еще отрезка?
Вам бы в школе поучиться. В средней. Это ж п..ц. Полный.
I find my way through night and day'cause I know I just can't stayhere in heaven
#16 
Murr коренной житель13.03.10 22:18
Murr
NEW 13.03.10 22:18 
in Antwort Vijon 13.03.10 21:42
берешь интеграл
------
Читай внимательнее. Написано было - "пишешь интеграл".
Чушь.
------
Да ну? Вот уж не думал, что площади двух половинок окружности хоть как-то отличаются...
А если принять... ну как аксиому... что они все же не отличаются, т.е. равны, то требуемое по задаче равенство таки определяет равные "слева" и "справа" части.
Подсказка 3. Если ограничится рассмотрением половинки дуги... скажем - только верхней части, то картинка упростится... возможно - до уровня понимания проблемы.
Какого еще отрезка?
------
Ну, вообще-то, того самого радиуса, который пор задаче требуется вычислить. Да и вычисления элементарные - sqrt((x1-0)^2 + (y1-100)^2)...
ЗЫ. Таки все, что тебе надо найти - координаты любой точки окружности... Ну скажем, для простоты, при Х=0... Еще раз - любой - выбирай какую проще искать...
<--- nobody harmed in this action -->
#17 
Vijon знакомое лицо13.03.10 23:23
NEW 13.03.10 23:23 
in Antwort Murr 13.03.10 22:18, Zuletzt geändert 14.03.10 11:30 (Vijon)
Диаметр поляны - 100 м. Значит, радиус - 50 м. Немножко перепутал. Но не суть...
По моему рисунку...
Площадь красного сектора:
S1=r^2*arcsin(y1/r)/PI
где y1 - ордината верхней точки пересечения.
Площадь одного из синих сегментов:
S2=1250*arcsin(y1/50)/PI-50^2*(y1/50)/2=1250*arcsin(y1/50)/PI-25*y1
Суммарная площадь:
S=S1+S2*2=r^2*arcsin(y1/r)/PI+2500*arcsin(y1/50)/PI-50*y1=r^2*arcsin((1-r^2/10000)^.5)/PI+2500*arcsin(r*(1-r^2/10000)^.5/50)/PI-50*r*(1-r^2/10000)^.5
При этом, S=1250*PI, r={50, 100}
r находится алгоритмом половинного деления по приведенным формулам.
I find my way through night and day'cause I know I just can't stayhere in heaven
#18 
Murr коренной житель14.03.10 00:08
Murr
NEW 14.03.10 00:08 
in Antwort Vijon 13.03.10 23:23
Хммм... А как насчет упростить? Ну хотя бы до уровня R2 = k * R1...
Ну или посчитать каков же этот радиус...
#19 
Vijon знакомое лицо14.03.10 00:21
NEW 14.03.10 00:21 
in Antwort Murr 14.03.10 00:08, Zuletzt geändert 14.03.10 00:22 (Vijon)
В морге упростят...
Уважаемый, у Вас есть свое алгоритмическое или даже аналитическое решение? Ну так приведите его, хрена ли?.. Будет с чем сравнивать.
Про метод Монте-Карло я уже слышал. Или это тоже опечатка как с "интегралами"?
I find my way through night and day'cause I know I just can't stayhere in heaven
#20 
1 2 3 alle