|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
09.01.2017, 21:59 | #1 |
Регистрация: 09.01.2017
Сообщений: 8
|
Delphi - Это уравнение возможно решить только численно.. Делфи
Доброго времени суток, товарищи! Очень сильно нуждаюсь в вашей помощи и поддержке.
Задача звучит так: Известны и задаются изначально T, tay и e. Необходимо найти множество значений Е на интервале времени t. t изменяется в диапазоне от 0 до Т(период) Е – угол Исходное уравнение: 0=tay+(T/2П)*(E-e*sin(E))-t Это уравнение возможно решить только численно. Потом полученное множество значений Е используется для нахождения двух промежуточных, а затем двух искомых углов по значениям которых необходимо построить график зависимости друг от друга, но мне хотя бы для начала разобраться с решением уравнения для различных моментов времени. Ниже мои тщетные попытки что-то накодить: Код HTML:
var a,b,d,e,g,y,i,xk,xk1:double; k:integer; function F(x:double): double; begin F:=a+(b/6.28)*(x-e*sin(x))-i; end; function F1(x:double): double; begin F1:=(b/6.28)*(1-e*cos(x)); end; begin a:=strtofloat(edit1.text); b:=strtofloat(edit2.text); i:=0; d:=strtofloat(edit4.text); e:=strtofloat(edit5.text); g:=strtofloat(edit6.text); while i=>b do begin y:=F(xk); while abs(y)<=0.0001 do begin xk1:=xk-F(xk)/F1(xk); xk:=xk1; y:=F(xk1); end; i:=i+10; end; edit7.text:=floattostr(xk1); end; end. |
09.01.2017, 22:27 | #2 |
Старожил
Регистрация: 02.03.2008
Сообщений: 2,499
|
Уравнение Кеплера?
M=E-e*sin(E) Делал как-то . Вот : Код:
e - эксцентриситет eps - погрешность ( у вас 0.0001) А для больших e (e>0.8)лучше : Код:
Последний раз редактировалось type_Oleg; 09.01.2017 в 23:36. |
10.01.2017, 22:36 | #3 |
Регистрация: 09.01.2017
Сообщений: 8
|
Да это действительно уравнение Кеплера. Спасибо огромное)
Есть возможность ответить ещё на пару вопросов?)) 1. Что необходимо добавить в ваш код чтобы можно было задавать М, е, eps? А ещё лучше, если можно было бы задавать период Т или даже а-большую полуось 2. Ваш код работает для t=0. Как сделать и возможно ли это вообще, чтобы результатом был массив чисел в интервале времени t от 0 до T(что я собственно и пытался безуспешно сделать)? Конечной целью программы является построение трассы полёта КА. Ещё раз огромное спасибо)) |
10.01.2017, 23:56 | #4 | |
Старожил
Регистрация: 02.03.2008
Сообщений: 2,499
|
Цитата:
Код:
Только имейте в виду, что в Паскале E и e - это будет одно и то же имя. Что-то одно. Ибо период T однозначно определяется большой полуосью и массой центрального тела. 2. Я сам только что обратил внимание, что у вас есть tau и t . Что они значат? Потому что используют одно время - время от прохождения перигелия ( или перицентра в общем случае). По нему вычисляют среднюю аномалию M , и т.д. Хорошо расписано в книге Монтенбрук О., Пфлегер Т. Астрономия на персональном компьютере . Только надо издание 1993 г, там на Паскале, в более новом - на Си. Еще есть Даффет-Смит П. Практическая астрономия с калькулятором , Меёс Ж. Астрономические формулы для калькуляторов Кстати, вы не используете еще 3 элемента орбиты i, ω, Ω . То есть, вам надо только случай с нулевым наклонением орбиты i=0 ? И еще вопросы: - вокруг чего все вращается ? Вокруг Солнца ? То есть надо ли менять массу центрального тела, или она постоянна? - движение только по эллипсу, или может быть параблическое/гиперболичское? - в каком виде должен быть результат - сферические координаты ( геоцентрическая долгота , радиус-вектор), или прямоугольные (X,Y) Последний раз редактировалось type_Oleg; 11.01.2017 в 00:32. |
|
11.01.2017, 02:31 | #5 |
Старожил
Регистрация: 02.03.2008
Сообщений: 2,499
|
Вот, держите, дорабатывайте как надо.
Сделал простой вариант: - движение в одной плоскости . Наклонение i =0, долгота перигелия = 0 - центральное тело - Солнце. Поэтому const K_GAUSS - выходные координаты - сферические эклиптические гелиоцентрические - только эллиптические орбиты (0<e<1), или круговые (e=0) - расчет на 1 период. Число шагов можно задать, начало ( дней от перигелия) - тоже. |
11.01.2017, 22:30 | #6 |
Регистрация: 09.01.2017
Сообщений: 8
|
Нам давали уравнение Кеплера в таком виде: t-tau=(T/2pi)*(E-e*sin(E))
Другие 3 элемента, которые вы назвали, будут использоваться дальше. Я ничего не понимаю в программировании да и со временем у меня не очень, поэтому и двигаюсь медленно, шаг за шагом. Нужны случаи с разными i. ИСЗ вращается вокруг Земли, масса постоянна. Для начала хотя бы по эллипсу, чтобы понять, а так в конечном итоге хотелось бы и для гиперболического и параболического движения рассчитывать. Результатом в конце концов должны стать геоцентрические широты и долготы всех точек за промежуток времени и график, который отображал бы вид трассы полёта (как выглядела бы трасса строй мы её на карте мира). |
12.01.2017, 00:13 | #7 |
Старожил
Регистрация: 02.03.2008
Сообщений: 2,499
|
Если тау - это момент перигея,то можно и так. Потому что M=2пи*(t-tau)/T
Тогда надо будет поменять значение K_GAUSS, потому что у вас масса Земли, у меня - Солнца. И у меня единицы - расстояние а.е., время - сутки, а у вас - наверное минуты и километры, или еще что. В остальном - принципиальной разницы нет. Только координаты будут называться не гелиоцентрические, а геоцентрические. И не эклиптические, а экваториальные. Тогда надо будет вычислять не только долготу lon, но и широту lat. Вот вам процедура для этого. Код:
w - аргумент перигея, Node - долгота восходящего узла i - наклонение. Все в радианах конечно. Потом надо будет учесть вращение Земли и перевести небесные координаты в земные, чтобы найти гринвичские координаты подспутниковой точки (чтоб трассу построить). Для этого вычисляется звездное время, делается поворот. |
12.01.2017, 23:50 | #8 |
Регистрация: 09.01.2017
Сообщений: 8
|
Я не знаю как вас благодарить за оказаную вами помощь!
Вы написали мне целую программу (которую я скорее всего выдам за свою). Теперь остались последние штрихи для её завершения, а у меня не получается ничего исправить. Мне очень неловко просить, но всё таки, не сочтите за труд, всё сказанное вами объединить. Я не настаиваю. Если по какой-либо причине вы откажитесь я всё пойму. |
13.01.2017, 00:28 | #9 |
Старожил
Регистрация: 02.03.2008
Сообщений: 2,499
|
Нет, это мне не интересно.
Вот небесная механика - это интересно. А делать все за кого-то - это нет. Так что изучайте Паскаль. А если не получается - значит не туда поступили. |
15.01.2017, 22:37 | #10 |
Регистрация: 09.01.2017
Сообщений: 8
|
Ну что ты начинаешь, нормально же общались)) Я просто не могу вставить в код последнюю написанную вами процедуру. Выходит редкосная дичь:
Код:
Последний раз редактировалось Rabbit777; 15.01.2017 в 23:21. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Решить квадратное уравнение в Delphi | snejnbumer | Помощь студентам | 8 | 19.09.2014 21:51 |
Плагины на C++ для программы на delphi. Это возможно? | Человек_Борща | Общие вопросы по программированию, компьютерный форум | 58 | 26.12.2011 15:06 |
подключение к Excel из delphi через ODBC.возможно ли это без глюков? | betirsolt | БД в Delphi | 0 | 13.06.2010 01:05 |
Автосохранение исходников в Delphi. Это возможно? | Kottik | Софт | 16 | 20.09.2009 17:36 |
Пожалуйста,помогите решить в Delphi уравнение... | ALENA555 | Помощь студентам | 2 | 28.03.2009 16:17 |