Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Изменение величины по высоте или времени в MatLab.

Марат Суспенский Ученик (111), на голосовании 14 часов назад
Помогите с кодом. Как видоизменить или что добавить к формуле, что бы величины менялись от высоты или времени в каждом цикле ?
while y(i)>=0 % цикл продолжается, пока высота полета материальной точки положительна или равно 0 (м.т. приземлилась);
Vx(i+1) = Vx(i)+ax(i)*dt; % обновление скорости вдоль оси x по дискретному аналогу первого порядка точности;
Vy(i+1) = Vy(i)+ay(i)*dt; % обновление скорости вдоль оси y по дискретному аналогу первого порядка точности;
x(i+1) = x(i)+ Vx(i)*dt; % обновление координаты x по дискретному аналогу первого порядка точности;
y(i+1) = y(i)+Vy(i)*dt; % обновление координаты y по дискретному аналогу первого порядка точности;
t(i+1) = t(i) + dt; % временная ось;
X(i+1) = (ro*(Vx(i+1)^2+ Vy(i+1)^2)*S*Cx)/2; % обновление силы лобового сопротивления;
A(i+1) = atan(Vy(i+1)/Vx(i+1))*180/pi; % угол наклона вектора начальной скорости, градусы;
ax(i+1) = -X(i+1)* cosd(A(i+1))/m; % обновление ускорения вдоль оси x;
ay(i+1) = -X(i+1)* sind(A(i+1))/m-g; % обновление ускорения вдоль оси y;
i = i+1; % обновление счетчика итераций;
end
if Lmax<x(i) % условие, если текущая дальность полета больше максимальной дальности;
Lmax=x(i); % обновление максимальной дальности;
Aopt=A(1)*180/pi; % присваивание оптимального угла наклона вектора начальной скорости;
end
end
Голосование за лучший ответ
Centurio Просветленный (34328) 1 месяц назад
Какие величины и каким образом должны меняться?
Марат СуспенскийУченик (111) 1 месяц назад
Любые из этих величин должны меняться либо по времени, либо по высоте
Centurio Просветленный (34328) Марат Суспенский, нужна формула зависимости, не от фонаря же зависимость выдумывать. Где вы взяли эту задачу, как она полностью выглядит?
Марат СуспенскийУченик (111) 1 месяц назад
Задание звучит так ( Определение оптимального угла вектора начальной скорости). Мой преподаватель дал этот исходный код и сказал изменить то, про что я говорил.
Марат СуспенскийУченик (111) 1 месяц назад
% m*(dVx/dt) = - X*cosA;
% m*(dVy/dt) = - m*g - X*sinA;
clc % очистка командного окна;
%%Начальные данные
Lmax = 0; % инициализация максимальной дальности;
Aopt = 0; % инициализация оптимального угла вектора начальной скорости, при котором достигается максимальная дальность полета материальной точки, при наличии аэродинамической составляющей;
for Ak = 0:1:90 % цикл значения угла от 0 до 90 градусов с шагом 1;
V(1) = 23; % начальная скорость, м/с;
A(1) = Ak; % угол наклона вектора начальной скорости, градусы;
ax(1) = 0; % ускорение вдоль оси х, м/с^2
ay(1) = 0; % ускорение вдоль оси y, м/с^2
Vx(1) = V(1)*cosd(A(1)); % скорость вдоль оси х, м/с
Vy(1) = V(1)*sind(A(1)); % скорость вдоль оси y, м/с
Марат СуспенскийУченик (111) 1 месяц назад
x(1) = 0; % перемещение вдоль оси х, м;

y(1) = 0; % перемещение вдоль оси y, м;

m = 86; % масса материальной точки, кг;

g = 9.8; % ускорение свободного падения, м/с^2;

t(1) = 0; % начальное время, с;

dt = 0.001; % шаг интегрирования, с;

A(1) = atan(Vy(1)/Vx(1)); % угол наклона вектора скорости, рад;

i = 1; % счетчик;

ro = 1.2205; % плотность воздуха, кг/м^3;

D = 0.93; % диаметр миделя, м;

S = pi*D^2/4; % площадь миделя, м^2;

Cx = 1.06; % коэффициент лобового сопротивления;

X = ro*V^2/2*Cx*S; % сила лобового сопротивления, Н;
Centurio Просветленный (34328) Марат Суспенский, организуйте цикл for Ak=0:90 перед циклом while. Начальные значения скоростей для каждой итерации цикла for также высчитываете перед while. Полученные значения L записывайте по завершении while. Потом после окончания работы всех циклов из значений Д выберете максимальное и соответствующее ему значение Ak. Это и будет оптимальный угол.
Похожие вопросы