Найти уравнение скорости движения тела и положение тела как функцию от времени - Turbo Pascal

Узнай цену своей работы

Формулировка задачи:

здравствуйте, помогите пожалуйста) Найти уравнение скорости движения тела и положение тела как функцию от времени. Входные данные: v(0)=2м/с; s(0)=0м. Определить положение. скорость и ускорение на отрезке времени t=[0;5] с шагом 1 с. Построить графики s(t), v(t), a(t).

Решение задачи: «Найти уравнение скорости движения тела и положение тела как функцию от времени»

textual
Листинг программы
uses crt,graph;
const v0=2;
      s0=0;
function a(k:byte;t:real):real;
begin
a:=k*cos(t);
end;
function v(k:byte;t:real):real;
var u:real;
begin
u:=a(k,t);
v:=v0+u*t;
end;
function s(k:byte;t:real):real;
var u:real;
begin
u:=a(k,t);
s:=s0+v0*t+u*t*t/2;
end;
var k,i,x0,y0,x1,x2:integer;
    t,u,max,mx,my:real;
    st:string;
begin
clrscr;
writeln('Значения x,v,a при k=[1..3] t=[0..5]');
for k:=1 to 3 do
 begin
  t:=0;
  while t<=5 do
   begin
    write('k=',k,' t=',t:0:0,' x=',s(k,t):5:2,' v=',v(k,t):5:2,' a=',a(k,t):5:2);
    writeln;
    t:=t+1;
  end;
 end;
write('Нажмите Enter для перехода в графический режим');
readln;
k:=0;
initgraph(k,i,'');
x0:=50;
y0:=getmaxY div 2;
x1:=0;
x2:=5;{интервал по Х}
t:=x1;
{построим графики при к=2, иначе нужно строить 9 графиков}
max:=a(2,t);
while t<=x2 do
 begin
  if abs(a(2,t))>max then max:=abs(a(2,t));
  if abs(v(2,t))>max then max:=abs(v(2,t));
  if abs(s(2,t))>max then max:=abs(s(2,t));
  t:=t+0.1;
 end;
mx:=(getmaxX-x0-30)/x2;{масштаб по Х}
my:=(y0-20)/max;
settextstyle(0,0,1);
line(0,y0,getmaxX,y0);{оси}
line(x0,0,x0,getmaxY);
for i:=1 to trunc(max)+1 do{максимальное количество засечек в одну сторону}
 begin
  line(x0-3,y0-round(i*my),x0+3,y0-round(i*my));{засечки на оси У}
  line(x0-3,y0+round(i*my),x0+3,y0+round(i*my));
  {подпись оси У}
  str(i,st);
  outtextXY(x0-35,y0-round(i*my),st);{соответственно засечкам}
  outtextXY(x0-40,y0+round(i*my),'-'+st);
  line(x0+round(i*mx),y0-3,x0+round(i*mx),y0+3); {засечки на оси Х}
  {подпись оси Х}
  outtextXY(x0+round(i*mx)+5,y0+10,st);
 end;
{центр}
outtextXY(x0-15,y0+10,'0');
{подписи концов осей}
outtextXY(getmaxX-10,y0-10,'X');
outtextXY(x0+5,10, 'Y');
{графики}
t:=x1;
setcolor(12);{при k=2}
while t<=x2 do
 begin
  if t=x1 then moveto(x0+round(t*mx),y0-round(s(2,t)*my))
  else lineto(x0+round(t*mx),y0-round(s(2,t)*my));
  t:=t+0.1;
 end;
t:=x1;
setcolor(13);
while t<=x2 do
 begin
  if t=x1 then moveto(x0+round(t*mx),y0-round(v(2,t)*my))
  else lineto(x0+round(t*mx),y0-round(v(2,t)*my));
  t:=t+0.1;
 end;
t:=x1;
setcolor(14);
while t<=x2 do
 begin
  if t=x1 then moveto(x0+round(t*mx),y0-round(a(2,t)*my))
  else lineto(x0+round(t*mx),y0-round(a(2,t)*my));
  t:=t+0.1;
 end;
{название}
setcolor(15);
outtextXY(100,10,'k=2  t=[0..5]');
setcolor(12);
outtextXY(100,30,'s(k,t)=s0+v0*y+a*t^2/2');
setcolor(13);
outtextXY(100,50,'v(k,t)=v0+a*t');
setcolor(14);
outtextXY(100,70,'a(k,t)=k*cos(t)');
readln
end.

Объяснение кода листинга программы

В данном коде используется функция a, которая вычисляет скорость движения тела как функцию от времени. Функция v вычисляет положение тела как функцию от времени, а функция s вычисляет ускорение тела как функцию от времени. Для построения графика используются функции line и outtextXY. Функция line используется для построения линий на графике, а функция outtextXY используется для вывода текста на график. В цикле while происходит построение графика для каждого значения k. При этом используются различные цвета для отображения различных функций. Также в коде присутствуют строки с текстом, которые выводятся на график. Они используются для подписи осей и названия графика. В конце кода происходит вывод названия графика и некоторых формул, описывающих зависимости функций от времени.

Оцени полезность:

5   голосов , оценка 5 из 5
Похожие ответы