Ребята очень сильно нужна ваша помошь, есть код на MATLABE измененный вариант Orbitode. его нужно переделать на скайлаб сегодня, мне научник сказал это сегодня, завтра надо сдать, я даже представления е имею как это делается .... кто сомжет помочь напиши варианты перевода. Вот сам код.
fprintf ('\ nСкорее пример события место, где способность к \ п'); fprintf ('указать направление пересечения нуля является необходимым не только \ п.'); fprintf ('точку возврата в исходную точку и точку \ п'); fprintf ('Максимальное расстояние имеют то же значение функции событие, и \ п'); fprintf ('направление пересечения используется, чтобы отличить их \ п \ п.');
fprintf ('Вызов ode45 с событием функций активной ... \ п \ п');
fprintf ('Обратите внимание, что шаг размеры используемых интегратор НЕ \ п'); fprintf ('определяется место проведения мероприятия и события \ п'); fprintf ('по-прежнему расположен точно \ п \ п.');
% Параметров задачи % Му = 1 / 82,45; MU = 0,012277471; mustar = 1 - му; y0 = [0,994; 0; 0; -2,00158510637908252240537862224]; tspan = [0 25,5];
варианты = odeset ('RelTol, 1e-3, "AbsTol, 1e-5,' OutputFcn ', @ odephas2);
[T, Y] = ode23 (@ F, tspan, y0);
фигуры; участка (Y (:, 1), Y (:, 2), "O"); Название ("ограниченная задача трех тел"); ylabel ('у (Т)'); xlabel ('Х (Т)');
% ------------------------------------------------- ---------------------- % Вложенные функции - задача параметров предоставляемых внешней функции. %
Функция dydt = F (T, Y) % Производная функции - му и mustar совместно с внешней функции. R13 = ((у (1) + MU) ^ 2 + Y (2) ^ 2) ^ 1,5; r23 = ((у (1) - mustar) ^ 2 + Y (2) ^ 2) ^ 1,5; dydt = [у (3) у (4) 2 * у (4) + у (1) - mustar * ((у (1) + MU) / R13) - му * ((у (1)-mustar) / R23) -2 * Y (3) + у (2) - mustar * (у (2) / R13) - му * (у (2) / R23)]; конец
% ------------------------------------------------- ----------------------
Функция [значение, isterminal, направление] = события (T, Y) % Функция-событие - y0 совместно с внешней функции. % Найдите время, когда объект возвращается ближе к начальной точке у0 % И начинает отходить, и остановить интеграции. Также найдите время, когда % Объект удален от начальной точки у0 и начинает двигаться ближе. % % Текущее расстояние от тела % DSQ% = (Y (1)-у0 (1)) ^ 2 + (Y (2)-y0 (2)) ^ 2 = <у (1:2)-y0 (1:2), у (1: 2)-y0 (1:2)> % % Локальный минимум DSQ происходит при D / Dt DSQ проходит через нуль в заголовке % Положительном направлении. Мы можем вычислить D / Dt DSQ как % % D / Dt DSQ = 2 * (у (1:2)-y0) '* DY (1:2) / DT = 2 * (у (1:2)-y0)' * Y (3:4) % % Y0 используется совместно с внешней функции.
dDSQdt = 2 * ((у (1:2)-y0 (1:2)) '* Y (3:4)); значение = [dDSQdt; dDSQdt]; isterminal = [1, 0];% останавливаться на локальный минимум Направление = [1; -1];% [локальный минимум, локальный максимум] конец
% ------------------------------------------------- ----------------------
orbitode конца%
|