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