Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Структура программы.




Отчет по построению орбиты луны в гелиоцентрической системе отчета при помощи matlab.

Автор: студент гр. Т07-35 Погосбекян Э.Л.

Москва - 2012 г.


 

Цель работы.

Получить навык моделирования процесса движения небесных тел.

Постановка задачи.

Построить графический интерфейс, в котором:

1. Отображаются параметры, влияющие на вид траектории движения Луны, а именно:

· Радиус орбиты Земли

· Радиус орбиты Луны

· Период обращения Земли вокруг Солнца

· Период обращения Луны вокруг земли

2. Есть возможность редактировать эти параметры

3. В соответствии с введенными параметрами строится траектория движения Луны в гелиоцентрической системе координат.

4. В соответствии с введенными параметрами строится график зависимости мгновенных значений разности между модулем скорости Земли и проекцией скорости движения Луны на направление скорости движения Земли.

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

Структура программы.

Программа состоит из ряда функций. Ниже будет приведено их описание.

1. Функция luna.m. В этой функции выполняются все вычисления, необходимые для построения указанных в постановке задачи графиков. У этой функции входные параметры:

· r1 – радиус траектории Земли

· r2 - радиус траектории Луны в системе отсчета, связанной с Землей

· t1 – период обращения Земли вокруг Солнца

· t2 – период обращения Луны вокруг Земли

выходные параметры:

· Xotn, Yotn – Точки, из которых состоит траектория движения Луны в гелиоцентрической системе координат. Xotn – x-вая компонента, Yotn – y-вая компонента.

· V - мгновенное значение разности между модулем скорости Земли и проекцией скорости движения Луны на направление скорости движения Земли

· t11 – вектор значений времени, при которых вычисляются указанные выше выходные параметры. Представляет собой столбец из 2000 точек, полученных путем разбиения интервала от 0 до t1 на равные промежутки.

Текст подпрограммы luna.m:

 

function [Xotn Yotn V t11] = luna(r1,r2,t1,t2)

 

dt = t1/2000; %разбиение интервала времени на равные промежутки

t = 0:dt:t1;

Xz = r1*cos(2*pi*t/t1); %координаты Земли в гелиоцентрической системе координат

Yz = r1*sin(2*pi*t/t1);

Xm = r2*cos(2*pi*t/t2); %координаты Луны в системе отсчета, связанной с Землей

Ym = r2*sin(2*pi*t/t2);

Xotn = Xz+Xm; %координаты Луны в гелиоцентрической системе координат

Yotn = Yz+Ym;

Vx = diff(Xz)/dt; %скорость Земли в гелиоцентрической системе координат

Vy = diff(Yz)/dt;

vx = diff(Xm)/dt; %скорость Луны в системе отсчета, связанной с Землей

vy = diff(Ym)/dt;

V = (Vx.^2 + Vy.^2).^0.5 - (Vx.*vx + Vy.*vy)./((Vx.^2+Vy.^2).^0.5); %абсолютное значение скорости Луны

%в гелиоцентрической системе координат

 

t11 = 0:dt:t1 - dt;

 

2. Функция petli2.m. В этой функции вычисляется предельное значение параметра, при котором появляются петли на траектории движения Луны. Предельные значения, на выбор, вычисляются для:

· радиуса траектории Земли - r1

· радиуса траектории Луны - r2

· периода обращения Земли вокруг Солнца - t1

· периода обращения Луны вокруг Земли – t2

входные параметры:

· r1 – радиус траектории Земли

· r2 - радиус траектории Луны в системе отсчета, связанной с Землей

· t1 – период обращения Земли вокруг Солнца

· t2 – период обращения Луны вокруг Земли

· n – переменная, обозначающая для какого параметра искать предельное значение

· V - мгновенное значение разности между модулем скорости Земли и проекцией скорости движения Луны на направление скорости движения Земли

 

Выходной параметр один – искомое предельное значение, при котром появляются петли.

Текст подпрограммы petli2.m:

 

function X = petli2(r1,r2,t1,t2,n,V )

 

if n == 1

dt = t1/2000;

t = 0:dt:t1;

cosFi = cos(2*pi*t*(t1 - t2)/(t1*t2));

mcos = max(cosFi);

r11 = r2 * (t1/t2) * mcos; %при этом значении или меньшем появляются петли

X = r11;

end;

 

if n == 2

dt = t1/2000;

t = 0:dt:t1;

cosFi = cos(2*pi*t*(t1 - t2)/(t1*t2));

mcos = max(cosFi);

r22 = r1*t2/(t1*mcos); %при этом значении или большем появляются петли

X = r22;

end;

 

if n == 3

dt = t1/2000;

t = 0:dt:t1;

cosFi = cos(2*pi*t*(t1 - t2)/(t1*t2));

mcos = max(cosFi);

t11 = r1*t2/(r2 * mcos); %при этом значении или большем появляются петли

X = t11;

end;

 

if n == 4

dt = t1/2000;

t = 0:dt:t1;

cosFi = cos(2*pi*t*(t1 - t2)/(t1*t2));

mcos = max(cosFi);

t22 = r2*t1*mcos/r1; %при этом значении или меньшем появляются петли

X = t22;

end;

 

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

Указанные выше функции luna.m и petli2.m вызываются из файла Interface.m. Он был создан после того, как интерфейс программы был нарисован и сохранен. Так как в нашей программе действия происходят после нажатия кнопки «start», то запускать наши подпрограммы будем из секции файла, связанного с этим элементом интерфейса.

Секция «pushbutton1_Callback» отвечает за нажатие кнопки «Пуск». В эту секцию добавляем следующий текст:

 

function pushbutton1_Callback(hObject, eventdata, handles)

% hObject handle to pushbutton1 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

 

%получаем значаения параметров из полей ввода

r1 = str2double(get(handles.editR1,'String'));

r1 = r1*(10^8);

r2 = str2double(get(handles.editR2,'String'));

r2 = r2*(10^5);

t1 = str2double(get(handles.editT1,'String'));

t1 = t1*(10^7);

t2 = str2double(get(handles.editT2,'String'));

t2 = t2*(10^6);

 

[Xm Ym V t11] = luna(r1,r2,t1,t2);

 

%определяем положение радиокнопки

v(4) = 0;

v(1) = get(handles.radiobutton1,'Value');

v(2) = get(handles.radiobutton2,'Value');

v(3) = get(handles.radiobutton3,'Value');

v(4) = get(handles.radiobutton4,'Value');

for i = 1:4

if v(i) == 1

n = i;

end;

end;

Res = petli2(r1,r2,t1,t2,n,V; %находим предельное значение

set(handles.resultText,'String',Res); %выводим его в окне

 

%строим графики

axes(handles.axes1);

plot(Xm,Ym);

axes(handles.axes2);

plot(t11,V);

 


Поможем в написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой





Дата добавления: 2015-09-06; просмотров: 759. Нарушение авторских прав; Мы поможем в написании вашей работы!

Studopedia.info - Студопедия - 2014-2022 год . (0.024 сек.) русская версия | украинская версия
Поможем в написании
> Курсовые, контрольные, дипломные и другие работы со скидкой до 25%
3 569 лучших специалисов, готовы оказать помощь 24/7