Нас интересует, сколько времени будет падать парашютист с высоты H (например, H=1000м), если у него не раскроется парашют?
Экспериментально установлено, что сила сопротивления воздуха пропорциональна квадрату скорости, а коэффициент зависит от формы тела. Поэтому ускорение падающего тела имеет вид a=g-k*v2, здесь k – зависящий от массы и формы тела коэффициент (пусть k=0.004). Т.к. мы не знаем формулы, выражающей время падения от массы и формы, применим метод дискретизации непрерывных процессов. При дискретизации обычно время разбивается на небольшие интервалы времени. Считается, что на протяжении одного интервала ничего не происходит, зато по истечении этого интервала параметры, используемые в модели, скачком изменяются (в данном случае уменьшается высота и увеличивается скорость парашютиста), затем все повторяется. Плавно уменьшающаяся высота парашютиста, например, при этом оказывается замененной на последовательность значений высот в моменты времени t=0, t=0.01, t=0.02, … , если интервал дискретизации Δt=0.01. При моделировании таких дискретных процессов на ЭВМ компьютерная модель описывает состояние процесса в один из моментов времени, а состояние в следующий момент времени рассчитывается по реккурентным соотношениям.
Пусть g=10, для некоторого момента времени t известны высота h и скорость тела v. Тогда ускорение a=g-k*v2.
Высота и скорость тела через промежуток времени Δt равны:
Ht+ Δt=Ht-Vt* Δt (считаем, что v не меняется)
Vt+ Δt=Vt+at* Δt (считаем, что a не меняется)
Очевидно, что оба эти равенства тем точнее, чем меньше Δt. Приведенные соотношения и являются реккурентными, выражающими следующее состояние через предыдущее. Необходимо составить программу для проведения экспериментов с ней.
Дана программа на Delphi, а нужно упростить для Pascal. Помогите, пожалуйста!
Прикрепленные файлы
Parachute.rar ( 175.03 килобайт )
Кол-во скачиваний: 220
Lapp, я особо с физикой не дружу, поэтому не совсем понимаю, что требуется сделать, вот и пришлось искать хоть какой-то исходник. Прогу надо сдать на паскале. Очень надеюсь на твою помощь! буду рада даже алгоритму решения! Спасибо!
{simulating of a free falling in air}
{by Lapp for Pautina}
const
g=9.8;
var
t,h,v,dt,k:real;
begin
WriteLn('Введите данные:');
Write('высота падения в метрах, h = ');
ReadLn(h);
Write('коэффициент сопротивления воздуха, k = ');
ReadLn(k);
Write('шаг по времени, dt = ');
ReadLn(dt);
v:=0;
t:=0;
WriteLn('Полетели..');
while h>0 do begin
h:=h-v*dt;
v:=v+(g-k*Sqrt(v))*dt;
t:=t+dt;
{раскомментировать следующую строку для вывода промежуточных результатов}
{WriteLn('t=',t:8:4,'h=',h:8:4,'v=',v:8:4);}
end;
WriteLn('Ваш полет продолжался ',t:8:4,' секунд');
v:=v*3.6;
WriteLn('Скорость приземления равна ',v:8:4,' км/ч');
WriteLn('Приятных переломов!');
ReadLn
end.
Pautina, у меня к тебе просьба:
М | исправь, пожалуйста, название темы |
Спасибо огромное! ты мне очень помог! а как я могу изменить тему? что-то не выходит..