Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.59/29: Рейтинг темы: голосов - 29, средняя оценка - 4.59
0 / 0 / 0
Регистрация: 21.01.2015
Сообщений: 13

Посчитать, когда будет следующий парад планет

21.01.2015, 16:25. Показов 6741. Ответов 36
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Собственно сама задача:
"В звездной системе КП планет. i-я планета обращается вокруг звезды за ВО(i) лет (земных). В начальный момент времени планеты находятся строго на одной прямой с одной стороны от звезды. Через сколько лет произойдет следующий «парад планет», т.е. направления на всех них от звезды будут отличаться не более чем на D градусов?"

Продвижение по задаче есть, выведены формулы для расчета "парада" двух планет и, возможно, точное расположение на окружности в градусах. И все, дальше я в ступоре. Если есть у кого-то мысли, прошу поделится.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.01.2015, 16:25
Ответы с готовыми решениями:

Когда следующий АП?
Здравствуйте. хотелось бы знать хотябы примерно когда следующий ап у гугла?

Когда следующий ап?
Кто подскажет когда апы на гугле и яше будут следующие

Когда следующий АП гугла?
Охота подгадать и за пару тройку недель до апа купить пару морд с пр 6-7, кто как думает, когда он будет? :)

36
0 / 0 / 0
Регистрация: 21.01.2015
Сообщений: 13
21.01.2015, 19:43  [ТС]
Студворк — интернет-сервис помощи студентам
У нас в группе минимум месяц тратили, и то самые продвинутые (у кого был свой комп!).
Я все понимаю, просто я не очень сильно шарю в программировании, половину задачи я решил, а дальше просто не могу додуматься
0
6180 / 945 / 313
Регистрация: 25.02.2011
Сообщений: 1,381
Записей в блоге: 1
21.01.2015, 20:06
И меня так получилось, минимум VBA
Вложения
Тип файла: xls Планеты.xls (42.5 Кб, 28 просмотров)
3
0 / 0 / 0
Регистрация: 21.01.2015
Сообщений: 13
21.01.2015, 20:23  [ТС]
Цитата Сообщение от m-ch Посмотреть сообщение
И меня так получилось, минимум VBA
Спасибо огромное. Как раз таки нужно было полностью VBA, ну я попробую переписать сам
0
0 / 0 / 0
Регистрация: 21.01.2015
Сообщений: 13
24.01.2015, 20:42  [ТС]
Цитата Сообщение от m-ch Посмотреть сообщение
И меня так получилось, минимум VBA
к сожалению, это не правильное решение. Преподаватель пытался подтолкнуть к правильному решению, но у него это плохо получилось. Единственное что я усвоил: рассматриваем случай для двух планет, планеты стартуют с одной линии, через какое-то время они встретились. Вторая планета прошла расстояние в Г2 градусов, а первая в Г1=360+Г2, от этого и нужно плясать, а в какую сторону плясать я так и не понял. Препод еще добавил, что решением будет ответ на условие, в котором сравниваются две переменных. Ну это вроде все то, что мне известно. Если есть идеи по условию и по этим загадочным переменным, то прошу подтолкнуть в сторону правильного решения.
Миниатюры
Посчитать, когда будет следующий парад планет  
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
24.01.2015, 23:32
Возможно Г1 mod 360 = Г2 mod 360
1
 Аватар для Sasha_Smirnov
5562 / 1370 / 150
Регистрация: 08.02.2009
Сообщений: 4,109
Записей в блоге: 30
25.01.2015, 00:14
Это похоже: так планеты снова в одной фазе с т. зр. звезды-матки.

Возможно и тут что-то полезное для темы:
1
6180 / 945 / 313
Регистрация: 25.02.2011
Сообщений: 1,381
Записей в блоге: 1
25.01.2015, 00:15
Цитата Сообщение от LongStrong Посмотреть сообщение
к сожалению, это не правильное решение
Решение не правильное, потому что находит неверный ответ, либо потому что подход не правильный, не так как задумал преподаватель?

Для того чтобы решить ее по другому, предложите математические формулы, для нахождения парада для двух планет
1
 Аватар для chumich
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,234
25.01.2015, 03:43
Если есть идеи по условию и по этим загадочным переменным, то прошу подтолкнуть в сторону правильного решения.
Парад планет - это когда планеты находятся на одной линии с одной стороны от звезды. Допустим, что планеты вторично встретились на линии, находящейся под углом https://www.cyberforum.ru/cgi-bin/latex.cgi?\Delta \varphi от исходной.
В соответствии с формулами, описывающими движение тел по окружности:
https://www.cyberforum.ru/cgi-bin/latex.cgi?\Delta \varphi = \omega *\Delta t, где https://www.cyberforum.ru/cgi-bin/latex.cgi?\omega - угловая скорость, а https://www.cyberforum.ru/cgi-bin/latex.cgi?\Delta t - промежуток времени
и
https://www.cyberforum.ru/cgi-bin/latex.cgi?\omega =\frac{2\pi }{T}, где T - период обращения тела
можно вывести формулу местоположения i-ой планеты через промежуток времени https://www.cyberforum.ru/cgi-bin/latex.cgi?\Delta t:
https://www.cyberforum.ru/cgi-bin/latex.cgi?\Delta \varphi (i)=\frac{2\pi \Delta t}{T(i)}
Если рассмотреть случай с двумя планетами, то их совпадение на одной линии случится, когда их углы будут отличаться на https://www.cyberforum.ru/cgi-bin/latex.cgi?2\pi n.
Следовательно:
https://www.cyberforum.ru/cgi-bin/latex.cgi?\Delta \varphi =\frac{2\pi \Delta t}{T(1)}
https://www.cyberforum.ru/cgi-bin/latex.cgi?\Delta \varphi +2\pi n=\frac{2\pi \Delta t}{T(2)}
Если взять синус от обеих частей, то левые части окажутся равны и можно записать:
https://www.cyberforum.ru/cgi-bin/latex.cgi?sin(\frac{2\pi \Delta t}{T(1)})=sin(\frac{2\pi \Delta t}{T(2)})
А отсюда, уже, наверно, можно найти и https://www.cyberforum.ru/cgi-bin/latex.cgi?\Delta t.
1
призрак
 Аватар для ikki
3266 / 894 / 119
Регистрация: 11.05.2012
Сообщений: 1,702
Записей в блоге: 2
25.01.2015, 05:00
Цитата Сообщение от m-ch Посмотреть сообщение
математические формулы, для нахождения парада для двух планет
ну это-то дело нехитрое.
если считать, что вся заваруха начинается с момента, когда "парадом" считаем нахождение обеих планет строго на одной линии и отсчитывать следующие парады начинаем с момента, когда более быстрая (предположим. что внутренняя) планета уйдёт на дельту градусов вперёд, то

tn=(360*n-d)/(v1-v2)
где n - номер очередной "встречи" (точнее - момент, когда внутренняя догоняет внешнюю на дельту)
d - дельта в градусах
v2 и v1 - угловые скорости (градусов/лет) соответственно внешней и внутренней планет

Добавлено через 3 минуты
соответственно, для момента точной встречи дельту отнимать не нужно.
а для момента, когда внутренняя уйдёт в обгон - её надо прибавить.
1
призрак
 Аватар для ikki
3266 / 894 / 119
Регистрация: 11.05.2012
Сообщений: 1,702
Записей в блоге: 2
25.01.2015, 05:14
Лучший ответ Сообщение было отмечено LongStrong как решение

Решение

я вот тут благодаря ТС-у провёл оч.увлекательные три ночных часа, исчиркал три листочка в клеточку и разукрасил несколько листов в Excel

сделал пока для трёх планет формулами на листе, сил переводить на VBA пока нет (таки спать хочу), да и точный момент начала парада допилить надоть (диапазон известен, но на формулу что-то никак не пробьёт, а на VBA просто - хоть тем же половинным делением, ибо диапазон известен и условие определено)

оч.надеюсь, что по файлу всё будет понятно, ибо словами я это не опишу - не писатель потому что.
на пальцах показал бы, но они мне самому нужны.

остались мелочи - перевести на VBA, добавить половинное деление и экстраполировать это всё на N планет.
доверяю это любому желающему.
Вложения
Тип файла: xlsx парад планет.xlsx (45.1 Кб, 12 просмотров)
1
призрак
 Аватар для ikki
3266 / 894 / 119
Регистрация: 11.05.2012
Сообщений: 1,702
Записей в блоге: 2
25.01.2015, 05:30
Лучший ответ Сообщение было отмечено LongStrong как решение

Решение

чуть поправил файл - удалил один лишний столбец, чтобы поменьше путаницы и поправил пару заголовков в шапке
Вложения
Тип файла: xlsx парад планет.xlsx (48.3 Кб, 12 просмотров)
1
призрак
 Аватар для ikki
3266 / 894 / 119
Регистрация: 11.05.2012
Сообщений: 1,702
Записей в блоге: 2
25.01.2015, 06:50
Лучший ответ Сообщение было отмечено LongStrong как решение

Решение

Цитата Сообщение от Sasha_Smirnov Посмотреть сообщение
аналог задачи математических олимпиад про часовую, минутную и секундную стрелки
я в своём файлике для 12-часовых часов насчитал 23 таких временных промежутка (за половину суток), когда три стрелки (равномерно движущихся) находятся максимум в 1-й секунде (часовой, т.е. 6 градусов) друг от друга.
Вложения
Тип файла: rar стрелки.rar (186.7 Кб, 15 просмотров)
1
призрак
 Аватар для ikki
3266 / 894 / 119
Регистрация: 11.05.2012
Сообщений: 1,702
Записей в блоге: 2
25.01.2015, 10:19
осторожно! нифига не экстраполируется (легко) для общего случая N планет!
я сейчас попробую-таки накропать код, есть идейка...
1
 Аватар для chumich
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,234
25.01.2015, 11:09
Цитата Сообщение от chumich Посмотреть сообщение
А отсюда, уже, наверно, можно найти и .
Продолжение:
https://www.cyberforum.ru/cgi-bin/latex.cgi?\frac{2\pi \Delta t}{T(1)}=\frac{2\pi \Delta t}{T(2)}+2\pi n, где n - натуральные числа
отсюда (арифметику пропускаю):
https://www.cyberforum.ru/cgi-bin/latex.cgi?\Delta t=n*\frac{T(1)*T(2)}{T(2)-T(1)}
Теперь, если рассматривать https://www.cyberforum.ru/cgi-bin/latex.cgi?\Delta t как промежуток времени через который i-я планета встретится с 1-ой, то формула примет такой вид:
https://www.cyberforum.ru/cgi-bin/latex.cgi?\Delta t (i)=n*\frac{T(1)*T(i)}{T(i)-T(1)}
Остается сделать цикл по n для всех https://www.cyberforum.ru/cgi-bin/latex.cgi?\Delta t (i) с условием, что при равенстве всех https://www.cyberforum.ru/cgi-bin/latex.cgi?\Delta t (i) это время является искомым.

Добавлено через 7 минут
Цитата Сообщение от chumich Посмотреть сообщение
Остается сделать цикл по n для всех
А точнее нужно сделать цикл по n для 1-ой и последней планеты и при совпадении их дельта t, проверять совпадения всех дельта t подстановкой этого n в их формулы.
1
призрак
 Аватар для ikki
3266 / 894 / 119
Регистрация: 11.05.2012
Сообщений: 1,702
Записей в блоге: 2
25.01.2015, 12:36
в итоге как-то так...
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
DefBool F
 
Sub parad()
  Const n = 5, d = 1
  Dim a#(1 To n), b#(1 To n), c#(1 To n - 1, 2 To n, 1 To 2)
  Dim dic As Object, i&, j&, k&, ii&, t1#, t2#, tm1#, tm2#, tt#, ti1#, ti2#, tii1#, tii2#
  Dim nn&, f, ff, ffj, ffii, s$
  
  Dim x: x = VBA.Array(0.6, 1, 1.7, 8, 23)
  For i = 1 To n: a(i) = x(i - 1): b(i) = 360 / a(i): Next
  Set dic = CreateObject("scripting.dictionary")
  
  For i = 1 To n - 1
    For j = i + 1 To n
      c(i, j, 1) = 0: c(i, j, 2) = 0: t2 = d / (b(i) - b(j))
      dic.Item(i & "|" & j & "|f|0") = 0#: dic.Item(i & "|" & j & "|l|0") = t2
  Next j, i
  
  jTest = jTest + 1
  f = False: k = 0: nn = 0: s = ""
  Do Until f Or k >= 100000
    dic.Remove "1|2|f|" & k
    dic.Remove "1|2|l|" & k
    k = k + 1
    tm1 = (360 * k - d) / (b(1) - b(2)): tm2 = (360 * k + d) / (b(1) - b(2))
    c(1, 2, 1) = k: c(1, 2, 2) = k: dic("1|2|f|" & k) = tm1: dic("1|2|l|" & k) = tm2
    
    For i = 1 To n - 1
      For j = i + 1 To n
        If i > 1 Or j > 2 Then
          tt = dic(i & "|" & j & "|l|" & c(i, j, 2))
          Do While tt < tm2
            c(i, j, 2) = c(i, j, 2) + 1
            dic(i & "|" & j & "|f|" & c(i, j, 2)) = (360 * c(i, j, 2) - d) / (b(i) - b(j))
            tt = (360 * c(i, j, 2) + d) / (b(i) - b(j))
            dic(i & "|" & j & "|l|" & c(i, j, 2)) = tt
          Loop
          tt = dic(i & "|" & j & "|l|" & c(i, j, 1))
          Do While tt < tm1
            dic.Remove i & "|" & j & "|f|" & c(i, j, 1)
            dic.Remove i & "|" & j & "|l|" & c(i, j, 1)
            c(i, j, 1) = c(i, j, 1) + 1
            tt = dic(i & "|" & j & "|l|" & c(i, j, 1))
          Loop
          If c(i, j, 2) - c(i, j, 1) > 1 Then nn = nn + 1
        End If
    Next j, i
    
    i = 0: ff = True: ti1 = tm1: ti2 = tm2
    Do While ff And i < n - 1
      i = i + 1: j = i: ffj = True
      Do While ffj And j < n
        j = j + 1: ffii = True
        If Not (i = 1 And j = 2) Then
          ii = c(i, j, 1) - 1: ffii = False
          Do Until ffii Or ii >= c(i, j, 2)
            ii = ii + 1
            tii1 = max(dic(i & "|" & j & "|f|" & ii), ti1)
            tii2 = min(dic(i & "|" & j & "|l|" & ii), ti2)
            If tii1 < tii2 Then ffii = True: ti1 = tii1: ti2 = tii2
          Loop
        End If
        If Not ffii Then ffj = False
      Loop
      If Not ffj Then ff = False
    Loop
    If ff Then
      For i = 1 To n:  s = s & vbCr & "(" & i & "):" & Evaluate("mod(" & b(i) * ti1 & ",360)"): Next
      MsgBox ti1 & vbCr & s
      f = True
    End If
  Loop
End Sub
 
Function max(n1#, n2#)
  max = IIf(n1 > n2, n1, n2)
End Function
 
Function min(n1#, n2#)
  min = IIf(n1 < n2, n1, n2)
End Function
не оптимизировано и не вылизано.
есть мусор - лишние переменные, флаги и немножко ненужных проверок.

Добавлено через 3 минуты
исх. данные:
кол-во планет и допустимый градус - в строке #4 (n и d соответственно)
массив периодов обращения (строго по возрастанию!!!) - в строке 9 (x, понятно дело)

вывод - в msgbox

ограничение - 100000 циклов проверок максимум (строка 21)
1
 Аватар для chumich
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,234
25.01.2015, 16:47
LongStrong, а D - это обязательный параметр? Ведь, если его нет, то задача примитивно сводится к нахождению наименьшего общего кратного (функции нахождения НОК и НОД написаны не мной):
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Private Sub CommandButton1_Click()
Dim n, i, S
Dim T(100)
n = CInt(TextBox1.Text)
For i = 1 To n
T(i) = i
Next i
S = NOK(T(1), T(2))
If n >= 3 Then
For i = 3 To n
S = NOK(S, T(i))
Next i
End If
MsgBox (S)
End Sub
 
Private Function NOK(ByVal a As Long, ByVal b As Long) As Long
    NOK = (a * b) / NOD(a, b)
End Function
 
Function NOD(ByVal a As Long, ByVal b As Long) As Long
     While a <> b
           If a > b Then
              a = a - b
           Else
              b = b - a
           End If
     Wend
     NOD = a
End Function
T(i) - период обращения i-ой планеты (для примера), S - время парада

ПарадПланет.rar
1
0 / 0 / 0
Регистрация: 21.01.2015
Сообщений: 13
26.01.2015, 04:44  [ТС]
Цитата Сообщение от ikki Посмотреть сообщение
чуть поправил файл - удалил один лишний столбец, чтобы поменьше путаницы и поправил пару заголовков в шапке
Большое спасибо, мне только не понятно одно, зачем сравнивать разность положений планет со 180-ю и -180-ю в ячейках J9:L9?

И да, что же все таки означают эти ячейки?

Добавлено через 54 минуты
А, все, разобрался
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.01.2015, 04:44

Когда следующий Google Dance?
Только не нужно вставлять обязательную в таких случаях реплику &quot;Это знает только Господь Бог и Google. Всё-таки интересно, когда...

ну что когда ждать следующий пересчёт?
Народ когда будет следующий пересчёт ? какие мнения что от него ожидать? У мен покрайней мере сайту 1,5 месяца и ТИЦ поднялся на 40,...

Ну когда следующий УУпдейт тица и индекса?
Ну когда следующий УУпдейт тица и индекса?

Гирлянда: определить, когда лампочки вспыхнут одновременно в следующий раз
Есть n лампочек, для каждой задан период времени, через который лампочка вспыхивает, в секундах. В начальный момент времени все лампочки...

Когдав будет следующий пересчёт?
когда будет следующий пересчёт ТИЦ ?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
37
Ответ Создать тему
Новые блоги и статьи
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru