49073 (608909), страница 2
Текст из файла (страница 2)
Под кнопкой «Меню» на панели располагаются 8 окон ввода, в которые можно вносить заданные параметры: диаметр шара, массу шара, длину стержня, плотность среды, вязкость среды, начальный угол, начальная угловая скорость, конечное время и изменять их.
За ячейками располагается кнопка «Видео», при нажатии которой воспроизводится демонстрационное видео. На данном видео можно посмотреть порядок выполнения эксперимента.
При нажатии на кнопку «Старт» справа выводятся 4 графика:
-
график зависимости угла от времени
-
график зависимости угловой скорости от времени
-
график зависимости полной энергии колебаний от времени
-
анимация движения маятника
При нажатии на кнопку «Стоп» программа прекращает свою работу, и начинает считывать значения: собственной частоты, собственного периода, декремента затухания, частоты, периода, добротности, плотности шарика, которые обработались до определенного момента, и записывает значения в поля, которые расположены за кнопкой видео.
При нажатии на кнопку «Очистить графики» происходит очищение графических полей:
-
графика зависимости угла от времени
-
графика зависимости угловой скорости от времени
-
графика зависимости полной энергии колебаний от времени
-
анимация движения маятника возвращается в исходное начальное положение
При нажатии на кнопку «Выход» форма закрывается.
Заключение
Целью курсовой работы было «создание программы, моделирующей виртуальный эксперимент».
Электронные наглядные пособия играют исключительно важную роль в образовании. Облегчая проведение экспериментов, они снимают психологический барьер в изучении физике, и делают этот процесс интересным и более простым. При грамотном применении их в учебном процессе, пособия обеспечивают повышение фундаментальности физического образования, содействуют интеграции нашей образовательной системы с образовательной системой наиболее развитых западных стран, где подобные методы обучения применяются уже давно.
В ходе работы над курсовым проектом были решены следующие задачи:
-
проведен анализ теоретической и научно-методической литературы по данной теме;
-
разработана программа для виртуальной лабораторной работы «Колебания материальной точки на жестком стержне в вязкой среде»;
-
подготовлена методическая рекомендация лабораторной работы «Колебания материальной точки на жестком стержне в вязкой среде».
Таким образом, задачи исследования были решены и цель достигнута.
Разработанный программа может быть использован в практике работы учителей. Это будет служить не только расширению и углублению теоретических знаний, умений и навыков школьников по физике, но предполагает и практическую подготовку, усиливающую профориентационную направленность обучения.
Список использованной литературы
-
Культин Н.Б. Основы программирования в Delphi 7.- СПб.: БХВ-Петербург, 2003. - 608 с.: ил.
-
Галисеев Г.В. Программирование в среде Delphi.. Самоучитель:
— М.: Издательский дом "Вильяме", 2004. — 304 с.: ил.
-
М.В. Сухарев. Основы Delphi. Профессиональный подход — СПб.: Наука и Техника, 2004. — 600 с.: ил.
-
Стивене Р. Delphi. Готовые алгоритмы / Род Стивене; Пер. с англ. Мерещука П. А. - 2-е изд., стер. - М.: ДМК Пресс ; СПб.: Питер, 2004. - 384 с.: ил.
-
Фленов М. Программирование в Delphi глазами хакера. — СПб.: БХВ-Петербург, 2004. - 368 с.: ил.
Приложения
Приложение 1
Программный код
privat
{ Private declarations }
B_Close : boolean;
X,Y,t,Dt,fi0,fi,X_O,Y_O,tend: real;
X1,Y1 : real;
w0,b: real;
m,d,p,w,delta,j,E,m0,a,en,sch: real;
OT ,width, height : integer;
L,LVector : integer;
fiFc, Xfc, Yfc, Xfcnad, Yfcnad, c: real;
outalfa,outomega,k1a,k1w, k2a, k2w, k3a, k3w,k4a,k4w:real;
s: string;
public
{ Public declarations }
end;
var
Form1: TForm1;
const g=9.814; dl=3.7;
implementation
{$R *.dfm}
Uses Unit4, Unit5, Unit3, Unit6;
//создание графиков и движения маятника
procedure TForm1.BStartClick(Sender: TObject);
begin
if (LabeledEdit1.Text='') or (LabeledEdit2.Text='') or (LabeledEdit3.Text='')
or (LabeledEdit4.Text='') or (LabeledEdit5.Text='') or (LabeledEdit6.Text='')
or (LabeledEdit7.Text='') or (LabeledEdit8.Text='') or (StrToFloat(LabeledEdit5.Text)=0)
or (StrToFloat(LabeledEdit4.Text)=0) and (StrToInt(LabeledEdit3.Text)=0)
or (StrToFloat(LabeledEdit8.Text)=0)
then
begin
ShowMessage('Проверте правильность ввода данных!');
exit;
end;
B_Close:=false;
BitBtn3.Enabled:=false;
BitBtn4.Enabled:=true;
BitBtn2.Enabled:=false;
LabeledEdit1.Enabled:=false;
LabeledEdit2.Enabled:=false;
LabeledEdit3.Enabled:=false;
LabeledEdit4.Enabled:=false;
LabeledEdit5.Enabled:=false;
LabeledEdit6.Enabled:=false;
LabeledEdit7.Enabled:=false;
LabeledEdit8.Enabled:=false;
Form4.LabeledEdit4.Enabled:=false;
L:=StrToInt(LabeledEdit3.Text); //длина нити
fi0:=StrToFloat(LabeledEdit2.Text);//начальный угол
d:=StrToFloat(LabeledEdit4.Text); //диаметр шара
m:=StrToFloat(LabeledEdit5.Text); //масса шарика
p:=StrToFloat(LabeledEdit6.Text); //плотноть среды
tend:=StrToFloat(LabeledEdit8.Text); //конечное время
w0:=StrToFloat(LabeledEdit7.Text); //начальная скороть
b:=StrToFloat(LabeledEdit1.Text); //вязкость среды
m0:=(p*PI*d*d*d)/6;
w:=w0;
t:=0;
fi0:=fi0*PI/180;
fi:=fi0;
delta:=(3*PI*b*d)/(2*m);
dt:=(2*PI*sqrt(L/g))/(StrToFloat(Form4.LabeledEdit4.Text));
j:=abs(g/l*(1-m0/m));
sch:=g/l*(1-m0/m);
en:=g*l*(m-m0);
E:=(en*(1 - cos(fi)) + (m*l*l*w*w)/2);
c:=(sqrt(j));
s:=FloatToSTR(round(c*10000)/10000);
Label16.Caption:=s+' Гц';
c:=(2*PI/sqrt(j));
s:=FloatToSTR(round(c*10000)/10000);
Label17.Caption:=s+' 1/c';
c:=delta;
s:=FloatToSTR(round(c*10000)/10000);
Label18.Caption:=s;
if delta a:=sqrt(j-delta*delta); if delta>sqrt(j) then a:=sqrt(delta*delta-j); if delta=sqrt(j) then a:=0; c:=a; s:=FloatToSTR(round(c*10000)/10000); Label9.Caption:=s+' Гц'; c:=(2*PI)/a; s:=FloatToSTR(round(c*10000)/10000); Label11.Caption:=s+' 1/c'; c:=delta*((2*PI)/a); s:=FloatToSTR(round(c*10000)/10000); Label14.Caption:=s; if delta<>0 then begin c:=PI/(delta*((2*PI)/a)); s:=FloatToSTR(round(c*10000)/10000); Label15.Caption:=s; end else Label15.Caption:='-'; c:=(6*m)/(PI*sqr(d)*d); s:=FloatToSTR(round(c*1000)/1000); Label12.Caption:=s+' кг/куб.м'; Chart2.BottomAxis.Maximum:=tend; Chart3.BottomAxis.Maximum:=tend; Chart4.BottomAxis.Maximum:=tend; Chart4.LeftAxis.Maximum:=E+0.5*E; Chart4.LeftAxis.Minimum:=StrToFloat(Form4.LabeledEdit3.Text); Chart2.LeftAxis.Maximum:=StrToFloat(Form4.LabeledEdit1.Text); Chart2.LeftAxis.Minimum:=-Chart2.LeftAxis.Maximum; Chart3.LeftAxis.Maximum:=StrToFloat(Form4.LabeledEdit2.Text); Chart3.LeftAxis.Minimum:=-StrToFloat(Form4.LabeledEdit2.Text); outalfa:=fi0; outomega:=w0; while (not B_Close) and (t<=tend) do begin fi:=outalfa; w:=outomega; k1a:=dt*w; k1w:=-dt*(2*delta*w+sch*sin(fi)); fi:=outalfa+k1a/2; w:=outomega+k1w/2; k2a:=dt*w; k2w:=-dt*(2*delta*w+sch*sin(fi)); fi:=outalfa+k2a/2; w:=outomega+k2w/2; k3a:=dt*w; k3w:=-dt*(2*delta*w+sch*sin(fi)); fi:=outalfa+k3a; w:=outomega+k3w; k4a:=dt*w; k4w:=-dt*(2*delta*w+sch*sin(fi)); fi:=outalfa+(k1a+k2a*2+k3a*2+k4a)/6; w:=outomega+(k1w+k2w*2+k3w*2+k4w)/6; E:=en*(1 - cos(fi)) + (m*l*l*w*w)/2; outalfa:=fi; outomega:=w; Chart2.Series[0].AddXY(t,fi * 180 / PI); Chart3.Series[0].AddXY(t,w); Chart4.Series[0].AddXY(t,E); t:=t+Dt; X:=X_O+dL*sin(fi); Y:=Y_O-dL*cos(fi); X1:=X_O+LVector*sin(fi); Y1:=Y_O-LVector*cos(fi); Xfc:=X-sign(w)*cos(fi); Yfc:=Y-sign(w)*sin(fi); Xfcnad:=X-sign(w)*(cos(fi)+0.5); Yfcnad:=Y-sign(w)*sin(fi); Series14.AddArrow(X,Y,Xfc,Yfc); Series16.AddXY(Xfcnad,Yfcnad,'Fc'); Series2.Clear; Series3.Clear; Series6.Clear; Series7.Clear; Series8.Clear; Series9.Clear; Series13.Clear; Series14.Clear; Series15.Clear; Series16.Clear; Series2.AddXY(X_O,Y_O,'',clBlack); Series2.AddXY(X,Y,'',clBlack); Series6.AddArrow(X,Y,X1,Y1,'T'); Series7.AddArrow(X,Y,X,Y-LVector,'G'); Series8.AddXY(X1+0.5,Y1,'T'); Series9.AddXY(X+0.5,Y-LVector,'G'); Series15.AddXY(X+0.5,Y+1,'Fa'); Series13.AddArrow(X,Y,X,Y+1); Series14.AddArrow(X,Y,Xfc,Yfc); Series16.AddXY(Xfcnad,Yfcnad,'Fc'); if (round((fi*180)/PI) = 0)and (round((w*180)/PI) = 0) and (round(E) = 0) then begin Series14.AddArrow(0,0,0,0); Series16.Clear; Series14.Clear; end else begin Series14.AddArrow(X,Y,Xfc,Yfc); Series16.AddXY(Xfcnad,Yfcnad,'Fc'); end; Timer1.Enabled := true; Series3.AddXY(X,Y,'',clRed); OT:=0; while (OT = 0) do Application.ProcessMessages; end; Timer1.Enabled := false; BitBtn4.Enabled:=false; BitBtn2.Enabled:=true; end; //создание формы procedure TForm1.FormCreate(Sender: TObject); begin width:=GetSystemMetrics(SM_CXSCREEN); height:=GetSystemMetrics(SM_CYSCREEN); form1.height:=height; form1.width:=width; Chart1.Height:=((Form1.Height) div 2)-80; Chart1.Width:=((Form1.width) div 2)-160; Chart2.Height:=((Form1.Height) div 2)-50; Chart2.Width:=((Form1.width) div 2)-120; Chart3.Height:=((Form1.Height) div 2)-50; Chart3.Width:=((Form1.width) div 2)-120; Chart4.Height:=((Form1.Height) div 2)-50; Chart4.Width:=((Form1.width) div 2)-120; Chart2.Top:=Panel2.Top+20; Chart1.Top:=Panel2.Top+Chart2.Height+50; Chart3.Top:=Chart2.Top; Chart3.Left:=Chart2.Left+Chart2.Width; Chart4.Top:=Chart1.Top-20; Chart4.Left:=Chart2.Left+Chart2.Width; if (Form1.width<1024) and (Form1.Height<768) then begin LabeledEdit4.Height:=LabeledEdit4.Height-5; LabeledEdit4.Width:=LabeledEdit4.Width-5; LabeledEdit1.Height:=LabeledEdit1.Height-5; LabeledEdit1.Width:=LabeledEdit1.Width-5; LabeledEdit2.Height:=LabeledEdit2.Height-5; LabeledEdit2.Width:=LabeledEdit2.Width-5; LabeledEdit3.Height:=LabeledEdit3.Height-5; LabeledEdit3.Width:=LabeledEdit3.Width-5; LabeledEdit5.Height:=LabeledEdit5.Height-5; LabeledEdit5.Width:=LabeledEdit5.Width-5; LabeledEdit6.Height:=LabeledEdit6.Height-5; LabeledEdit6.Width:=LabeledEdit6.Width-5; LabeledEdit7.Height:=LabeledEdit7.Height-5; LabeledEdit7.Width:=LabeledEdit7.Width-5; LabeledEdit8.Height:=LabeledEdit8.Height-5; LabeledEdit8.Width:=LabeledEdit8.Width-5; LabeledEdit4.Top:=LabeledEdit4.Top-15; LabeledEdit1.Top:=LabeledEdit1.Top-53; LabeledEdit2.Top:=LabeledEdit2.Top-78; LabeledEdit3.Top:=LabeledEdit3.Top-23; LabeledEdit5.Top:=LabeledEdit5.Top-19; LabeledEdit6.Top:=LabeledEdit6.Top-50; LabeledEdit7.Top:=LabeledEdit7.Top-80; LabeledEdit8.Top:=LabeledEdit8.Top-82; StaticText2.Top:=StaticText2.Top-6; StaticText6.Top:=StaticText6.Top-105; StaticText7.Top:=StaticText7.Top-110; StaticText8.Top:=StaticText8.Top-115; StaticText1.Top:=StaticText1.Top-120; StaticText5.Top:=StaticText5.Top-126; StaticText3.Top:=StaticText3.Top-130; StaticText4.Top:=StaticText4.Top-135; StaticText9.Top:=StaticText9.Top-140; BitBtn2.Top:=BitBtn2.Top-147; BitBtn3.Top:=BitBtn3.Top-147; BitBtn4.Top:=BitBtn4.Top-155; BitBtn1.Top:=BitBtn1.Top-155; BitBtn1.Height:=BitBtn1.Height-5; BitBtn1.Width:=BitBtn1.Width-5; BitBtn2.Height:=BitBtn2.Height-5; BitBtn2.Width:=BitBtn2.Width-5; BitBtn3.Height:=BitBtn3.Height-5; BitBtn3.Width:=BitBtn3.Width-5; BitBtn4.Height:=BitBtn4.Height-5; BitBtn4.Width:=BitBtn4.Width-5; Label16.Top:=Label16.Top-105; Label17.Top:=Label17.Top-109; Label18.Top:=Label18.Top-116; Label9.Top:=Label9.Top-117; Label11.Top:=Label11.Top-125; Label14.Top:=Label14.Top-130; Label15.Top:=Label15.Top-137; Label12.Top:=Label12.Top-140; end; if (Form1.width>1024) and (Form1.Height>768) then begin LabeledEdit4.Height:=LabeledEdit4.Height+5; LabeledEdit4.Width:=LabeledEdit4.Width+5; LabeledEdit1.Height:=LabeledEdit1.Height+5; LabeledEdit1.Width:=LabeledEdit1.Width+5; LabeledEdit2.Height:=LabeledEdit2.Height+5; LabeledEdit2.Width:=LabeledEdit2.Width-5; LabeledEdit3.Height:=LabeledEdit3.Height+5; LabeledEdit3.Width:=LabeledEdit3.Width+5; LabeledEdit5.Height:=LabeledEdit5.Height+5; LabeledEdit5.Width:=LabeledEdit5.Width-5; LabeledEdit6.Height:=LabeledEdit6.Height+5; LabeledEdit6.Width:=LabeledEdit6.Width+5; LabeledEdit7.Height:=LabeledEdit7.Height+5; LabeledEdit7.Width:=LabeledEdit7.Width+5; LabeledEdit8.Height:=LabeledEdit8.Height+5; LabeledEdit8.Width:=LabeledEdit8.Width+5; LabeledEdit4.Top:=LabeledEdit4.Top+15; LabeledEdit1.Top:=LabeledEdit1.Top+58; LabeledEdit2.Top:=LabeledEdit2.Top+78; LabeledEdit3.Top:=LabeledEdit3.Top+30; LabeledEdit5.Top:=LabeledEdit5.Top+23; LabeledEdit6.Top:=LabeledEdit6.Top+53; LabeledEdit7.Top:=LabeledEdit7.Top+80; LabeledEdit8.Top:=LabeledEdit8.Top+82; StaticText2.Top:=StaticText2.Top+6; StaticText6.Top:=StaticText6.Top+125; StaticText7.Top:=StaticText7.Top+130; StaticText1.Top:=StaticText1.Top+135; StaticText3.Top:=StaticText3.Top+135; StaticText4.Top:=StaticText4.Top+135; StaticText5.Top:=StaticText5.Top+135; StaticText8.Top:=StaticText8.Top+135; StaticText9.Top:=StaticText9.Top+135; BitBtn2.Top:=BitBtn2.Top+157; BitBtn3.Top:=BitBtn3.Top+157; BitBtn4.Top:=BitBtn4.Top+165; BitBtn1.Top:=BitBtn1.Top+165; BitBtn1.Height:=BitBtn1.Height+5; BitBtn1.Width:=BitBtn1.Width+5; BitBtn2.Height:=BitBtn2.Height+5; BitBtn2.Width:=BitBtn2.Width+5; BitBtn3.Height:=BitBtn3.Height+5; BitBtn3.Width:=BitBtn3.Width+5; BitBtn4.Height:=BitBtn4.Height+5; BitBtn4.Width:=BitBtn4.Width+5; Label16.Top:=Label16.Top+125; Label17.Top:=Label17.Top+130; Label18.Top:=Label18.Top+135; Label9.Top:=Label9.Top+135; Label11.Top:=Label11.Top+135; Label14.Top:=Label14.Top+135; Label15.Top:=Label15.Top+135; Label12.Top:=Label12.Top+135; end; tend:=10; fi0:=StrToFloat(LabeledEdit2.Text); Chart2.BottomAxis.Maximum:=tend; Chart2.LeftAxis.Maximum:=fi0; Chart2.LeftAxis.Minimum:=-fi0; Chart3.BottomAxis.Maximum:=tend; Chart4.BottomAxis.Maximum:=tend; fi0:=fi0*PI/180; LVector:=2; X_O:=5; Y_O:=6; OT := 0; B_Close:=false; X:=X_O+dl*sin(fi0); Y:=Y_O-dl*cos(fi0); if (fi < 0) then begin fiFc:=90; Xfc:=X+1*sin((fiFc*180)/PI); Yfc:=Y-1*cos((fiFc*180)/PI); end else begin fiFc:=-90; Xfc:=X+1*sin((fiFc*180)/PI); Yfc:=Y-1*cos((fiFc*180)/PI); end; Series1.AddXY(4,6,'',clBlack); Series1.AddXY(6,6,'',clBlack); Series5.AddXY(X_O,Y_O,'',clBlack); Series5.AddXY(5,0.5,'',clBlack); Series2.AddXY(X_O,Y_O,'',clBlack); Series2.AddXY(X,Y,'',clBlack); Series3.AddXY(X,Y,'',clRed); //Силы, действующие на тело X1:=X_O+LVector*sin(fi0); Y1:=Y_O-LVector*cos(fi0); Series6.AddArrow(X,Y,X1,Y1); Series7.AddArrow(X,Y,X,Y-LVector); Series8.AddXY(X1+0.5,Y1,'T'); Series9.AddXY(X+0.5,Y-LVector,'G'); Series13.AddArrow(X,Y,X,Y+1); Series14.AddArrow(X,Y,Xfc,Yfc); Series15.AddXY(X+0.5,Y+1,'Fa'); Series16.AddXY(Xfc+0.5,Yfc,'Fc'); end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin B_Close:=true; end; procedure TForm1.Timer1Timer(Sender: TObject); begin OT:=1; end; procedure TForm1.BStopClick(Sender: TObject); begin Form4.LabeledEdit4.Enabled:=false; Chart3.LeftAxis.RoundFirstLabel:=true; Chart2.LeftAxis.RoundFirstLabel:=true; BitBtn3.Enabled:=false; if BitBtn3.Enabled=false then begin BitBtn2.Enabled:=true; BitBtn4.Enabled:=false; B_Close:=true end else exit; end; procedure TForm1.LabeledEdit1KeyPress(Sender: TObject; var Key: Char); begin Case Key of #8,'0'..'9',',':; else Key:=Chr(0); end; end; procedure TForm1.LabeledEdit2KeyPress(Sender: TObject; var Key: Char); begin Case Key of #8,'0'..'9',',':; else Key:=Chr(0); end; end; procedure TForm1.LabeledEdit3KeyPress(Sender: TObject; var Key: Char); begin Case Key of #8,'0'..'9',',':; else Key:=Chr(0); end; end; procedure TForm1.LabeledEdit4KeyPress(Sender: TObject; var Key: Char); begin Case Key of #8,'0'..'9',',':; else Key:=Chr(0); end; end; procedure TForm1.LabeledEdit5KeyPress(Sender: TObject; var Key: Char); begin Case Key of #8,'0'..'9',',':; else Key:=Chr(0); end; end; procedure TForm1.LabeledEdit6KeyPress(Sender: TObject; var Key: Char); begin Case Key of #8,'0'..'9',',':; else Key:=Chr(0); end; end; procedure TForm1.LabeledEdit7KeyPress(Sender: TObject; var Key: Char); begin Case Key of #8,'0'..'9',',':; else Key:=Chr(0); end; end; procedure TForm1.LabeledEdit8KeyPress(Sender: TObject; var Key: Char); begin Case Key of #8,'0'..'9',',':; else Key:=Chr(0); end; end; procedure TForm1.N10Click(Sender: TObject); begin if MessageDlg('Вы действительно хотите выйти из программы?',MtConfirmation,[MbYes,mbNo],0)=MrYes then Form1.Close; end; //очистить графики procedure TForm1.BitBtn2Click(Sender: TObject); begin Form4.LabeledEdit4.Enabled:=true; Chart3.LeftAxis.Maximum:=3; Chart3.LeftAxis.Minimum:=-3; Chart2.LeftAxis.Maximum:=85; Chart2.LeftAxis.Minimum:=-85; Chart4.LeftAxis.Maximum:=2; Chart4.LeftAxis.Minimum:=0; BitBtn2.Enabled:=false; BitBtn3.Enabled:=true; BitBtn4.Enabled:=false; Timer1.Enabled := false ; Chart4.LeftAxis.AutomaticMaximum:=false; Chart4.LeftAxis.AutomaticMinimum:=false; Chart2.LeftAxis.AutomaticMaximum:=false; Chart2.LeftAxis.AutomaticMinimum:=false; LabeledEdit1.Enabled:=true; LabeledEdit2.Enabled:=true; LabeledEdit3.Enabled:=true; LabeledEdit4.Enabled:=true; LabeledEdit5.Enabled:=true; LabeledEdit6.Enabled:=true; LabeledEdit7.Enabled:=true; LabeledEdit8.Enabled:=true; Chart2.Series[0].Clear; Chart3.Series[0].Clear; Chart4.Series[0].Clear; B_Close:=true; LVector:=2; fi0:=StrToFloat(LabeledEdit2.Text); fi0:=fi0*PI/180; X_O:=5; Y_O:=6; OT := 0; B_Close:=false; X:=X_O+dL*sin(fi0); Y:=Y_O-dL*cos(fi0); //очистить прошлый кадр Series2.Clear; //нить Series3.Clear; // шар Series6.Clear; // стрелка красная Series7.Clear; // стрелка синяя Series8.Clear; // T Series9.Clear; // G // рисуем нить и шарик Series2.AddXY(X_O,Y_O,'',clBlack); Series2.AddXY(X,Y,'',clBlack); Series3.AddXY(X,Y,'',clRed); //Силы действующие на тело X1:=X_O+LVector*sin(fi0); Y1:=Y_O-LVector*cos(fi0); Series6.AddArrow(X,Y,X1,Y1); Series7.AddArrow(X,Y,X,Y-LVector); Series8.AddXY(X1+0.5,Y1,'T'); Series9.AddXY(X+0.5,Y-LVector,'G'); Series13.Clear; Series14.Clear; Series15.Clear; Series16.Clear; Series13.AddArrow(X,Y,X,Y+1); //Fa стрелка Series15.AddXY(X+0.5,Y+1,'Fa'); // Fa fiFc:=-90; Xfc:=X+1*sin((fiFc*180)/PI); Yfc:=Y-1*cos((fiFc*180)/PI); Series14.AddArrow(X,Y,Xfc,Yfc); Series16.AddXY(Xfc+0.5,Yfc,'Fc'); end; procedure TForm1.N2Click(Sender: TObject); begin ShellExecute(Handle,'open','теоретическая справка.htm',nil,nil,SW_RESTORE); end; procedure TForm1.N4Click(Sender: TObject); begin Form4.Show; end; procedure TForm1.N6Click(Sender: TObject); begin Form5.Show; end; procedure TForm1.Button1Click(Sender: TObject); begin with Form6.MediaPlayer1 do begin Filename := 'Video.mpg'; Open; Form6.Show; Display := Form6.Panel1; DisplayRect := Form6.Panel1.ClientRect; end; end; end. При запуске программы перед пользователем открывается главное окно, содержащие поля ввода параметров физического эксперимента, поля вывода посчитанных значений, поле для вывода графика и кнопки. Внесём значения в поля ввода физического эксперимента: диаметр шара, массу шара, длину стержня, плотность среды, вязкость среды, начальный угол, начальная угловая скорость, конечное время. В пункте меню в разделе настройки введём значение: предел угла Нажмём кнопку «Старт», наблюдаем построение графиков: график зависимости угла от времени график зависимости угловой скорости от времени график зависимости полной энергии колебаний от времени анимация движения маятника А также в полях вывода посчитанных значений выводится значение: собственная частота, собственный периода, декремент затухания, частота, период, добротность, плотность шарика. В любой момент мы можем остановить построение, нажав кнопку «Стоп». При нажатии на кнопку «Очистить графики» происходит очищение графических полей: графика зависимости угла от времени графика зависимости угловой скорости от времени графика зависимости полной энергии колебаний от времени анимация движения маятника возвращается в исходное начальное положение При нажатии на кнопку «Видео» воспроизводится демонстрационное видео. На данном видео можно посмотреть порядок выполнения эксперимента. По завершению выполнения эксперимента нажимаем кнопку «Выход».
Приложение 2
Методические рекомендации к выполнению лабораторной работы
на графике, предел угловой скорости
на графике, нижний предел энергии Е на графике и шаг интегрирования, те значения которые вы считаете нужными. Нажмём ОК.
















