A A A A Автор Тема: Движение луны относительно земли  (Прочитано 3484 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн bes93Автор темы

  • Новичок
  • *
  • Сообщений: 5
  • Благодарностей: 0
  • Мне нравится этот форум!
    • Сообщения от bes93
Привет, уважаемые форумчане. Привела меня на ваш форум, безысходность. В универе мне задали задание, написать программу на любом языке программирования, движения луны относительно земли. Проблема состоит в том, что нужно не то что бы просто две окружности двигались относительно друг друга, а сам алгоритм движения включал в себя все силы взаимодейсвия и тд. Пересчитывались координаты для бесконечно малого разбиения времени. По пиксельно как то что ли это реализовывать, вообщем не получается)) Прочитал много лит-ры в интернете, не помогло. Выкладываю алгоритм который нам предлагал преподаватель. В нем кое как можно разобраться, но как реализовать на языке программирования не знаю. Помоги пожалуйста  =)  https://astronomy.ru/forum/radikal/s019/i633/1204/fd/05fc3d3ae355.jpg

P.S После того как будет написала эта модель, мне еще нужно будет додумать как учесть в ней лобовое сопротивление и солнечный ветер, но это уже потом) Учусь на физфаке 1 курс

taurus

  • Гость
Re: Движение луны относительно земли
« Ответ #1 : 17 Апр 2012 [21:52:41] »
Ну так все же написано пошагово.  8)

Вы не понимаете написанные формулы, не знаете программирования или не можете придумать пользовательский интерфейс? Где именно проблема?

Оффлайн bes93Автор темы

  • Новичок
  • *
  • Сообщений: 5
  • Благодарностей: 0
  • Мне нравится этот форум!
    • Сообщения от bes93
Re: Движение луны относительно земли
« Ответ #2 : 17 Апр 2012 [22:04:02] »
Не знание программирования наверное. Технически не могу реализовать. Хотя, говорят это не сложно. :)

AlAn

  • Гость
Re: Движение луны относительно земли
« Ответ #3 : 17 Апр 2012 [22:27:42] »
Не знание программирования наверное. Технически не могу реализовать. Хотя, говорят это не сложно. :)
Для Луны сложно, уравнение движения имеет более 120 членов.

Оффлайн bes93Автор темы

  • Новичок
  • *
  • Сообщений: 5
  • Благодарностей: 0
  • Мне нравится этот форум!
    • Сообщения от bes93
Re: Движение луны относительно земли
« Ответ #4 : 17 Апр 2012 [22:33:43] »
Ну какие 120 членов на первом курсе) Многим пренебрегается. Алгоритм то уже есть, как написать программу вопрос.

123- у программистов был) Они к вам посылают) Говорят, мол не хотим писать астрономические задачи, математику им подавай.

Оффлайн konstkir

  • *****
  • Сообщений: 30 785
  • Благодарностей: 499
    • Сообщения от konstkir
Re: Движение луны относительно земли
« Ответ #5 : 17 Апр 2012 [22:34:09] »
Не знание программирования наверное. Технически не могу реализовать. Хотя, говорят это не сложно. :)
Для Луны сложно, уравнение движения имеет более 120 членов.

Самые серьезные уравнения содержат еще круче.  :)

Основой современных расчётов является теория Брауна. Созданная на рубеже XIX—XX веков, она объясняла движение Луны с точностью измерительных приборов того времени. При этом в расчёте использовалось более 1400 членов (коэффициентов и аргументов при тригонометрических функциях).

Современная наука может рассчитывать движение Луны и проверять расчёты на практике с ещё более высокой точностью. Так, для расчёта позиции Луны с точностью измерений лазерной локации применяются выражения с десятками тысяч членов и не существует предела количества членов в выражении, если потребуется ещё более высокая точность.

http://ru.wikipedia.org/wiki/%CB%F3%ED%E0

AlAn

  • Гость
Re: Движение луны относительно земли
« Ответ #6 : 17 Апр 2012 [22:53:49] »
Ну какие 120 членов на первом курсе) Многим пренебрегается. Алгоритм то уже есть, как написать программу вопрос.

123- у программистов был) Они к вам посылают) Говорят, мол не хотим писать астрономические задачи, математику им подавай.
Если в первом приближении, то просто используются :
1. Закон Всемирного Тяготения;
2. Второй закон Ньютона;
3. Третий закон Ньютона;
4. Разложить вектора на составляющие вдоль выбранных осей;
5. Не забыть, что если центральное тело остановить, то его ускорение прикладывается с обратным знаком к спутнику;
6. Написать уравнения кинематики по каждому из направлений;
7. Для реального спутника задать начальные условия на какую-либо дату.

Оффлайн bes93Автор темы

  • Новичок
  • *
  • Сообщений: 5
  • Благодарностей: 0
  • Мне нравится этот форум!
    • Сообщения от bes93
Re: Движение луны относительно земли
« Ответ #7 : 17 Апр 2012 [23:30:25] »
Физически то да. А как программно написать это? Компьютерной моделью!

Оффлайн Darth Sirius

  • *****
  • Забанен!
  • Сообщений: 538
  • Благодарностей: 13
    • Сообщения от Darth Sirius
Re: Движение луны относительно земли
« Ответ #8 : 17 Апр 2012 [23:42:51] »
bes 93:

Если брать Паскаль и руководствоваться тем, что на Вашем снимке, то "ядро" программы можно сделать примерно так:

Program TheFuckingMoon; {название}

var
m,{масса Земли}
m1,{масса Луны}
x,{координата}
y,{координата}
vx,
vy,
f,
gamma,
alpha,
fx,
fy,
delta_t,
ax,
ay:real;

k:integer;

begin

m:=(нужное вставить);
m1:=(нужное вставить);
x:=(нужное вставить);
y:=(нужное вставить);
vx:=(нужное вставить);
vy:=(нужное вставить);
delta_t:=(нужное вставить);
gamma:=(нужное вставить);

for k:=0 to 100500 do
begin
r:=sqrt(sqr(x)+sqr(y));

if x>0
then
 begin
 if y>0
 then alpha:=arcsin(abs(y)/r)
 else alpha:=3*pi/2+arccos(abs(y)/r)
 end
else
  begin
  if y>0
  then alpha:=pi/2+arccos(abs(y)/r)
  else alpha:=pi+arcsin(abs(y)/r)
  end;

f:=gamma*m*m1/sqr(r);
fx:=f*cos(alpha);
fy:=f*sin(alpha);
ax:=fx/m1;
ay:=fy/m1;
vx:=vx+ax*delta_t;
vy:=vy+ay*delta_t;

x:=x+vx*delta_t;
y:=y+vy*delta_t;

end;
 
end.


Нужное там надо вставлять не  от фонаря, а с подгонкой под круговую орбиту.

AlAn

  • Гость
Re: Движение луны относительно земли
« Ответ #9 : 18 Апр 2012 [00:27:42] »
Я бы рекомендовал не использовать цикл For..., а применить цикл Repeat... Until KeyPressed; и внутри цикла изменять delta_t, предварительно  подключив модуль CRT.
Красиво все это оформить в графике ::),  приходилось моделировать "ограниченную задачу трех тел" и " захват/обмен системой двух звезд пролетающей вблизи пары третьей звезды", те еще кренделя выписывались. 8)
Darth Sirius, в таком виде программы спутник сойдет с орбиты, проверено, поскольку не выполнен пункт:
5. Не забыть, что если центральное тело остановить, то его ускорение прикладывается с обратным знаком к спутнику;
либо нужно двигать и планету.
« Последнее редактирование: 18 Апр 2012 [00:49:50] от AlAn »

Оффлайн Darth Sirius

  • *****
  • Забанен!
  • Сообщений: 538
  • Благодарностей: 13
    • Сообщения от Darth Sirius
Re: Движение луны относительно земли
« Ответ #10 : 18 Апр 2012 [03:02:26] »
Я бы рекомендовал не использовать цикл For..., а применить цикл Repeat... Until KeyPressed; и внутри цикла изменять delta_t, предварительно  подключив модуль CRT.

Это можно, но мина замедленного действия во всей этой схеме - линейная зависимость относительно delta_t. До Until KeyPressed с произвольным параметром скорее всего дело не дойдет - сход с орбиты наступит намного раньше из-за накопления погрешности интегрирования.

либо нужно двигать и планету.

Это-то само-собой - у них на рисунке вроде геоцентрическая система. А насчет "кренделей" и полной задачи трех тел - там надо удерживать нелинейные члены относительно delta_t и как-то проверять решение на адекватность - основной проблемой будет именно учет погрешностей.
« Последнее редактирование: 18 Апр 2012 [03:09:18] от Darth Sirius »

AlAn

  • Гость
Re: Движение луны относительно земли
« Ответ #11 : 18 Апр 2012 [09:01:06] »
Если программы сохранились, могу поискать и прислать, работали на многие многие обороты. Прекращение работы программы по нажатию клавиши именно поэтому и предложено.

Насчет накопления ошибок -- не суть важно, мы же решаем задачу в первом приближении. Кроме того не следует забывать, что "Вселенная" программы состоит всего из двух тел (материальных точек), что тоже отражается на их движении. ::)
« Последнее редактирование: 18 Апр 2012 [09:09:13] от AlAn »

Оффлайн xd

  • *****
  • Сообщений: 17 982
  • Благодарностей: 378
    • Skype - deimos.belastro.net
  • Награды Открытие комет, астероидов, сверхновых звезд, научно значимые исследования.
    • Сообщения от xd
    • Белорусская любительская астрономическая сеть
Re: Движение луны относительно земли
« Ответ #12 : 18 Апр 2012 [09:19:21] »
Астрономический календарь, постоянная часть. Страницы 70-73, плюс вспомогательные формулы на странице 31.
Если этой точности не хватает - смотрите в ту литературу, на которую ссылается автор.
У природы нет плохой погоды, у неё просто на нас аллергия.

Учение без размышления бесполезно, но и размышление без учения опасно /Конфуций/
Слово есть поступок. /Л. Толстой/

AlAn

  • Гость
Re: Движение луны относительно земли
« Ответ #13 : 18 Апр 2012 [09:23:33] »
Астрономический календарь, постоянная часть. Страницы 70-73, плюс вспомогательные формулы на странице 31.
Если этой точности не хватает - смотрите в ту литературу, на которую ссылается автор.
Проблема в том, что Предложенное Вами -- эмпирические формулы, физики там нет.

Оффлайн xd

  • *****
  • Сообщений: 17 982
  • Благодарностей: 378
    • Skype - deimos.belastro.net
  • Награды Открытие комет, астероидов, сверхновых звезд, научно значимые исследования.
    • Сообщения от xd
    • Белорусская любительская астрономическая сеть
Re: Движение луны относительно земли
« Ответ #14 : 18 Апр 2012 [10:29:52] »
За физикой можно обратиться к литературе, на которую автор ссылается.
Хотя что-то мне подсказывает, что задача была сформулирована не совсем так, как описывает её топикстартер. Или постановщик этой задачи подразумевал несколько иную задачу, например смоделировать систему из трёх тел, взяв выборочно 3 тела солнечной системы и взяв их физические параметры и параметры движения. А это уже совсем другая история.
У природы нет плохой погоды, у неё просто на нас аллергия.

Учение без размышления бесполезно, но и размышление без учения опасно /Конфуций/
Слово есть поступок. /Л. Толстой/

Оффлайн Darth Sirius

  • *****
  • Забанен!
  • Сообщений: 538
  • Благодарностей: 13
    • Сообщения от Darth Sirius
Re: Движение луны относительно земли
« Ответ #15 : 18 Апр 2012 [12:07:32] »
А куда топикстартер подевался?

И, кстати, подход откровенно странный - на первом курсе начинать с численного интегрирования нелинейной системы диффуров четвертого порядка. То, что она в явном виде интегрируется в виде конических сечений не отменяет того, что к собственно математике надо относиться уважительно - почитать минимум справочник Камке или "Методы вычислений" Березина и Жидкова.

Всё же сейчас можно найти в формате djvu и почитать - всё бесплатно и не надо никуда записываться как раньше!

...А потом удивляемся и чего же это у нас спутники падают?  >:D
« Последнее редактирование: 18 Апр 2012 [12:44:31] от Darth Sirius »

Оффлайн bes93Автор темы

  • Новичок
  • *
  • Сообщений: 5
  • Благодарностей: 0
  • Мне нравится этот форум!
    • Сообщения от bes93
Re: Движение луны относительно земли
« Ответ #16 : 18 Апр 2012 [14:29:12] »
Товарищи) Какие страшные слова вы пишите  ;D Все не так усложнено как вы описываете. Я собственно хотел попросить помощи с написанием программы, а не разработку алгоритма :) Алгоритм вроде как есть. В начале темы, фоткой. Я не знаю как мне работать по пиксельно на зкране, если разбивать монитор на координатную сетку. И как правильно реализовать этот алгоритм программно, в каком языке программирования и тд. Просто нужно что бы земля была не подвижной, а луна вокруг нее двигалась. Как окружности, без учета всяких тонкостей элипсов и всех тех страшных слов которые вы писали) И что б это движения осуществлялось благодаря второму закону ньютона. Проекции сил высчитавались, потом скорость, ускорение и координаты.

Оффлайн xd

  • *****
  • Сообщений: 17 982
  • Благодарностей: 378
    • Skype - deimos.belastro.net
  • Награды Открытие комет, астероидов, сверхновых звезд, научно значимые исследования.
    • Сообщения от xd
    • Белорусская любительская астрономическая сеть
Re: Движение луны относительно земли
« Ответ #17 : 18 Апр 2012 [14:37:01] »
Берёшь систему дифур и интегрируешь. Что может быть проще?
У природы нет плохой погоды, у неё просто на нас аллергия.

Учение без размышления бесполезно, но и размышление без учения опасно /Конфуций/
Слово есть поступок. /Л. Толстой/

taurus

  • Гость
Re: Движение луны относительно земли
« Ответ #18 : 18 Апр 2012 [14:44:16] »
Какие страшные слова вы пишите
Вам же уже даже написали код на Паскале! 8)

Сначала научитесь получать пары чисел (x,y). Попробуйте просто выводить их построчно в файл. Удостоверьтесь, что координаты получаются осмысленные. Потом можно будет думать, как это выводить на экран.

P.S. Язык - паскаль вполне себе подходящий, легко осваиваемый, прозрачный. Можно и на VB. Писать-то все равно на чем, но нужно выбрать то, что знаете, а если не знаете ничего, то начинать можно с VB (visual basic).

AlAn

  • Гость
Re: Движение луны относительно земли
« Ответ #19 : 18 Апр 2012 [22:17:56] »
Я не знаю как мне работать по пиксельно на зкране, если разбивать монитор на координатную сетку.
В графическом режиме  за начало координат принят левый верхний угол экрана. Горизонтальная ось направлена вправо. Вертикальная вниз. Размер экрана для Паскаля 640Х480 пикселей.