Найти уравнение скорости движения тела и положение тела как функцию от времени - Turbo Pascal
Формулировка задачи:
Решение задачи: «Найти уравнение скорости движения тела и положение тела как функцию от времени»
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
. При этом используются различные цвета для отображения различных функций.
Также в коде присутствуют строки с текстом, которые выводятся на график. Они используются для подписи осей и названия графика.
В конце кода происходит вывод названия графика и некоторых формул, описывающих зависимости функций от времени.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д