Математикалық маятник
Мазмұны
Кіріспе.................................................................................................................... 3
1. Математикалық маятник тербелісі және оның түрлері, заңдылықтары......................................................................................................
5
1.1 Маятниктің қозғалыс заңы және Эйлер әдісі............................................... 5
1.2 Математикалық маятник және гармоникалық тербелістер........................ 8
1.3 Айналмалы математикалық маятник............................................................ 11
2. Pascal программалау тілінде математикалық маятник тербелісін моделдеу.................................................................................................................
14
2.1 Математикалық маятниктің epкiн тербелісін моделдеу.............................. 14
2.2 Математикалық маятниктің epкiн тербелісін моделдеу.............................. 16
Қорытынды........................................................................................................... 25
Қолданылған әдебиеттер.................................................................................... 27
Кіріспе
Қазіргі кезде кеңінен қолданылатын программалау жүйесінің негізі Турбо
Қарастырылып отырған курстық жұмыс программалау тілдері пәндерінің көмегімен
Курстық жұмыстың мақсаты: Паскаль программалау тілінде математикалық маятник
Кез келген сурет жеткілікті түрде қарапайым геометриялық фигуралардан
Курстық жұмыстың міндеттері:
Маятник және оның түрлері туралы ақпаратты игеру;
Паскаль программалау тіліндегі математикалық маятник тербелісін моделдеуге қатысты
Graph және Crt модулдерін пайдалану арқылы программа құру;
Математикалық маятник тербелісін моделдеудің негізгі ерекшеліктерін зерттеу;
Математикалық маятник тербелісін моделдеу тақырыбына есептер шығару.
Қазіргі таңда Галилейдің собордағы мінәжат ету кезінде қола
Математикалық маятник деп салмағы дененің салмағына қарағанда әлдеқайда
1. Математикалық маятник тербелісі және оның түрлері, заңдылықтары
1.1 Маятниктің қозғалыс заңы және Эйлер әдісі
Математикалық маятник – механикалық жүйеден құралған, созылмайтын салмақсыз
Маятниктің аз бұрылу қозғалысы – белгілі гармониялық тербелістер.
x=acos( + )
мұнда - тербелістің жиілігі, a -
Маятниктің қозғалысының зерттеу нәтижелерін (x,v) жазықтықта қисықтар жиыны
Сызықты осциллятордың фазалық траекториялары энергияның сақтау заңымен анықталатын
(2)-теңдеудің аналитикалық шешімі өте күрделі болғандықтан, маятниктің қозғалысы
x=v,
v=-w02sinx
Кәдімгі дифференциалдық теңдеулерді (КДТ) сандық түрде шешкенде [1]
,
.
мұнда мейлінше аз шама. Соңғы
,
,
Бұдан нүктесінде координаттар мен жылдамдықтың
,
.
Осындай есептеулерді көп рет қайталап, x(t) және v(t)
Бағдарламаны құруға кірісуден бұрын, қолданатын бағдарламалау тіліне сай,
1. Бастапқы шарттарды белгілеу.
2. Функцияны белгілеу.
3. Бойында шешім табылатын кесіндіні және интегралдау қадамын
4. Дифференциалдық теңдеудің шешімдері анықталатын нүктелердің координаттарын есептеу.
5. Зерттелетін теңдеуді шешу.
6. Нәтижені шығару.
Эйлер әдісінің дәлдік бойынша шектелулері бар. Дәлірек 4-ретті
(7)
мұндағы k1, k2, k3, k4 - мына формулалармен
,
,
,
.
MatLab пакетінде кәдімгі дифференциалдық теңдеулерді 4-ретті Рунге-Кутт әдісімен
% oscil.т файл-функцияның листингі function F=oscil(t,y)
% (3)-КДТ жүйесіндегі оң жағындағы % функцияны анықтау,
F=[у(2); -omega^2tsin(y(1))];
Файл-функцияны дискде міндетті түрде oscil. атымен сақтау қажет.
% маятниктің қозғалыс теңдеуін сандық шешуге
% және бейнелеуге арналған программаның листингі
% айнымалыны ауқымды жариялау global omega;
% х(0)=2, бастапқы шарттарды беру
Ү0=[2;3];
%х және мәндерін табу және экранға
кезіндегі
% бейсызық маятниктің фазалық портреттің қисықтар үйірін
% шығару for omega=1:0.3:4
[T,Y]=ode45{‘oscir,[0:0.005:4*pi],Y0);
% oscil - функцияның анықтамасы бар файл-функцияның
% [0:0.Ö05:4*pi] - интегралдау интервалын анықтайтын вектор;
% хО - бастапқы шарттар векторы
plot(T, Ү(;11),’г’) % x(t) графигі grid on
xlabel('t'); % абсцисса өсінің аты
ylabel (‘х’); % ордината өсінің аты
end
figure(2);
plot(Y(:,1),Y{:,2),’k’); % (х) графигі
figure(3);
plot(T,Y(:,2);kJ);
% графигі
Сурет 1. Координатаның уақытқа тәуелді сызбасы
Сурет 2. Тербеліс жылдамдығының уақытқа тәуелді сызбасы
Сурет 3. Фазалық портрет
1.2 Математикалық маятник және гармоникалық тербелістер
Математикалық маятник деп салмағы дененің салмағына қарағанда әлдеқайда
Маятник тепе-теңдік жағдайында ауырлық күші
Маятниктің тепе-теңдік жағдайынан кейбір бұрыштарға
Бұл формуладағы «минус» таңбасы жанаманың маятниктің бұрылу бағытына
Сурет 4. Математикалық маятник. –
Егер радиусы l шеңбердің доғасы бойынша тепе-теңдік жағдайында
(11)
Бұл қатынас математикалық маятниктің, маятникті тепе-теңдік күйіне келтіруге
.
Осылайша, маятниктің тангенстік үдеуі оның
; .
Бұл формула математикалық маятниктің шағын тербелісінің меншікті жиілігін
.
Ауырлық өрісінде еркін тербеліс жасай алатын, айналмалы көлденең
Маятникті бұрышына бұру кезінде маятникті
M = –(mg sin φ)d.
Мұндағы d – айналу осі мен С массасының
Сурет 5. Физикалық маятник
Формуладағы «минус» таңбасы әдеттегідей күш моменті маятникті тепе-теңдік
M = –mgdφ.
Сызықтық емес маятник. Үлкен амплитудамен тербелетін маятниктің қозғалыс
(17)
мұндағы — бұл Якоби синусы,
параметрі мына өрнек арқылы орындалады:
(18)
иұнда —t−2 бірлігіндегі маятник энергиясы
Сызықтық емес маятник тербелісінің периоды.
(19)
мұнда K — бірінші түрі эллиптикалық интеграл.
Тәжірибе жүзінде есептеуде эллиптикалық интегралды қатарға жіктеген ыңғайлы:
(20)
мұнда — шағын тербеліс
1 радианға дейінгі бұрыштарда (≈60°) қолайлы дәлдікпен (қателік
.
Егер ауытқыған маятник бастапқы жылдамдығын хабарласа, онда С
Физикалық маятник аспаның айналасындағы көлденең ось ауырлық күшінің
(22)
мұндағы l маятниктің аспалы осіне қатысты инерция моменті,
Аспаның осінен l0 қашықтықта орналасқан К нүктесі түзуінің
Маятник құрамы түрлі құрылғыларда қолданылады, мысалы, сағаттар, еркін
1.3 Айналмалы математикалық маятник
Маятник – қозғалмайтын нүктенің немесе осьтің айналасында күшпен
Егер тепе-теңдік қалпынан бұрылған маятникті жіберетін болса, онда
Егер байланысқан күштердің әсерінен материалдық нүкте берілген қисықпен
Сурет 6. Айналмалы математикалық маятник
Ортақ айналу осі бар екі математикалық маятник. Бұл
Сурет 7. Ортақ айналу осі бар екі математикалық
Серпімді байланыстағы екі математикалық маятник. Аталған тербелмелі жүйе
Сурет 8. Серпімді байланыстағы екі математикалық маятник
2. Pascal программалау тілінде математикалық маятник тербелісін моделдеу
2.1 Математикалық маятниктің epкiн тербелісін моделдеу
Math_01 программасын орындау кезінде CRT.TPU және GRAPH.TPU стандартты
OpenGraph процедурасы 640х480 өлшемді монитор жұмысының графикалық режимдегі
Glimmer процедурасы суреттердің алмасуы кезінде қажетті кідірісті қамтамасыз
Компьютерлік программаның келесі жолдарын
SetColor(Black);
SetFillStyle(SolidFill, Black);
Line(x0, y0, Round(xx), Round(yy));
FillEllipse(Round(xx), Round(yy), r, r);
бір жолмен алмастыруға болады:
ClearDevice;
алайда бұл процесс кейбір компьютерлерде экрандағы суреттердің жартысы
Программаның негізгі бөлімінде алдымен монитор жұмысының графикалық режимдегі
Кейін экранға аспаның суреті шығарылады. Содан соң бастапқы
{Айналмалы математикалық маятниктің еркін тербелісінің программасы}
Program Math_01;
{Программа модулдерін іске қосу}
Uses Crt, Graph;
{Тұрақтылар сипаттамасы}
Const phi0=30; //Маятник көлбеуінің бастапқы бұрышы
w0=0; // Маятниктің бастапқы бұрыш
l=400; // Жіптің ұзындығы
r=8; // Жүктің радиусы
light=2; // Дақтың радиусы
k=0.02; // Кедергiнiң коэффициентi
m=1; // Жүктің массасы
xp=320; // x координатасы аспалы нуктелері
yp=10; // у координатасы аспалы нуктелері
g=9.8; // Еркiн түсу үдеуi
tau=0.4; // Уақыт бойынша адым
{Айнымалылар сипаттамасы}
Var x, y, xx, yy, w, eps, phi:
{Графикалық режимді инициализациялау процедурасы 640x480}
Procedure OpenGraph;
Var Driver, Mode, ErrorCode: Integer;
Begin
Driver:=Detect;
InitGraph(Driver, Mode, 'c:\bp\bgi');
ErrorCode:=GraphResult;
If ErrorCode grOK Then Halt(1);
End;
{Суреттердің жарқылын ерекшелеу процедуралары}
Procedure Glimmer;
Begin
Repeat
Until Port[$3da] And 8 0;
End;
{Экранға маятниктің суретін шығаратын процедура}
Procedure Display;
Begin
Glimmer;
SetColor(Black);
SetFillStyle(SolidFill, Black);
Line(xp, yp, Round(xx), Round(yy));
FillEllipse(Round(xx), Round(yy), r, r);
SetLineStyle(SolidLn, 0, NormWidth);
SetColor(DarkGray);
Line(xp, yp, Round(x), Round(y));
SetLineStyle(SolidLn, 0, NormWidth);
SetColor(DarkGray);
SetFillStyle(SolidFill, DarkGray);
FillEllipse(Round(x), Round(y), r, r);
SetColor(LightGray);
SetFillStyle(SolidFill, White);
FillEllipse(Round(x)-3, Round(y)-3, light, light);
End;
{Программаның негізгі бөлімі}
Begin
OpenGraph;
SetFillStyle(SolidFill, DarkGray);
Bar(xp-20, yp-5, xp+20, yp-1);
phi:=phi0*Pi/180;
w:=w0;
x:=xp+l*sin(phi);
y:=yp+l*cos(phi);
Repeat
Begin
xx:=x;
yy:=y;
eps:=-k*w/m-g*sin(phi)/l;
w:=w+eps*tau;
phi:=phi+w*tau;
x:=xp+l*sin(phi);
y:=yp+l*cos(phi);
Display;
End;
Until KeyPressed;
CloseGraph;
End.
2.2 Математикалық маятник тербелісін моделдеу программалары
1) Науаның ішіндегі материалық нүктенің қозғалысын модельдеуге арналған
{Науадағы шардың тербелісіне арналған программа}
Program Ball_01;
{ Программа модулдерін іске қосу }
Uses Crt, Graph;
{Тұрақтыларды сипаттау}
Const phi0=80; // Шар көлбеуінің бастапқы бұрышы
w0=0; // Шардың бастапқы
l=300; // Науаның радиусы
m=1; // Шардың
r=14; // Дененің радиусы
light=4; // Дақтың радиусы
mu=0.005; // Кедергінің коэффициенті
xp=320; // Науаның x центрінің координатасы
yp=10; // Науаның у центрінің
g=10; // Еркiн түсу
tau=0.3; // Уақыт бойынша адым
{Айнымалылар сипаттамасы}
Var x, y, xx, yy, w, eps, phi:
{ Графикалық режимді инициализациялау процедурасы}
Procedure OpenGraph;
Var Driver, Mode, ErrorCode: Integer;
Begin
Driver:=Detect;
InitGraph(Driver, Mode, 'c:\bp\bgi');
ErrorCode:=GraphResult;
If ErrorCode grOK Then Halt(1);
End;
{Суреттердің жарқылын ерекшелеу процедуралары}
Procedure Glimmer;
Begin
Repeat
Until Port[$3da] And 8 0;
End;
{ Экранға тербелетін дененің суретін шығаратын процедура }
Procedure Display;
Begin
Glimmer;
SetColor(Black);
SetFillStyle(SolidFill, Black);
FillEllipse(Round(xx), Round(yy), r, r);
SetColor(DarkGray);
SetLineStyle(SolidLn, 0, NormWidth);
SetFillStyle(SolidFill, DarkGray);
FillEllipse(Round(x), Round(y), r, r);
SetColor(LightGray);
SetFillStyle(SolidFill, White);
FillEllipse(Round(x)-5, Round(y)-5, light, light);
End;
{Программаның негізгі бөлігі}
Begin
OpenGraph;
SetFillStyle(SolidFill, DarkGray);
Bar(0, 0, 640, 480);
SetColor(Black);
SetFillStyle(SolidFill, Black);
FillEllipse(Round(xp), Round(yp), l+r, l+r);
w:=w0;
phi:=phi0*Pi/180;
x:=xp+l*sin(phi);
y:=yp+l*cos(phi);
Repeat
Begin
xx:=x;
yy:=y;
eps:=-mu*w/m-g*sin(phi)/l;
w:=w+eps*tau;
phi:=phi+w*tau;
x:=xp+l*sin(phi);
y:=yp+l*cos(phi);
Display;
End;
Until KeyPressed;
CloseGraph;
End.
2) Математикалық маятник қозғалысының (еркін тербелісін) кодын құру
Программасы:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, QCPUspeedLabel, StdCtrls, ExtCtrls, ComCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Timer1: TTimer;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Button2: TButton;
TrackBar1: TTrackBar;
Label4: TLabel;
procedure Button1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
s,a,t,q,w:real;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
a:=strtofloat(edit1.Text);
w:=strtofloat(edit2.Text);
q:=strtofloat(edit3.Text);
timer1.Enabled:=true;
trackbar1.Max:=round(a);
trackbar1.Min:=-1*round(a);
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
t:=t+1;
s:=A*sin(w*t+q);
label3.Caption:=floattostr(s);
trackbar1.Position:=round(s);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
t:=0;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
timer1.Enabled:=false;
end;
end.
Unit Z_PENDULM;
Interface
Implementation
Begin
writeln('Математикалық маятниктің аспасының координаталық нүктесі және ең үлкен
End.
Program z_pendulum;
Uses z_pendulm.pas; {* Бұл жолды жоюға болады *}
Uses crt; {* Сыртқы функциянышақыру *}
Var {* Жұмыс кезінде қажетті айнымалылар *}
PointAx : real;
PointAy : real;
PointAz : real;
PointBx : real;
PointBy : real;
PointBz : real;
Begin
clrscr; {* Экраннан бәрін кетіреміз*}
writeln('Математикалық маятниктің аспасының координаталық нүктесін енгізіңіз, A нүктесі');
writeln('A нүктесінің х координатасын енгізіңіз');
readln(PointAx);
writeln('A нүктесінің y координатасын енгізіңіз');
readln(PointAy);
writeln('A нүктесінің z координатасын енгізіңіз');
readln(PointAz);
writeln; {* Бос жол *}
writeln('Ең үлкен өрлеу нүктесінің бірінің координаталарын енгізіңіз, B
writeln('В нүктесінің х координатасын енгізіңіз');
readln(PointBx);
writeln('В нүктесінің у координатасын енгізіңіз');
readln(PointBy);
writeln('A нүктесінің z координатасын енгізіңіз');
readln(PointBz);
writeln; {* Бос жолды шығару *}
writeln('Маятник траекториясының ең төмен нүктесінің координатасы');
writeln('X = ', PointAx : 0 : 2,
writeln('Екінші ең үлкен нүктенің координатасы');
writeln('X = ', PointAx + PointAx - PointBx
readln; {* Enter басқанша күтеміз *}
3) N маятниктер тербеліс жасайды, олардың соқтығысуын есептеу
program Pendulum;
{$N+}
uses crt, graph;
const
x2 : word = 0;
y2 : word = 0;
type
TPendulum = object
public
constructor Init(xC, yC, len, radius : word; min,
destructor Done;
function GetX(a : single) : word;
function GetY(a : single) : word;
function GetAngle : single;
procedure Show;
procedure Hide;
procedure Next;
private
x0, y0 : word;
l, r, x, y, c :
minAngle, maxAngle, angle : single;
end;
constructor TPendulum.Init(xC, yC, len, radius : word; min,
begin
x2 := GetMaxX div 2;
y2 := GetMaxY div 2;
minAngle := min;
maxAngle := max;
angle := minAngle;
l := len;
r := radius;
c := 5;
if (x = 0) and (y = 0)
x0 := x2;
y0 := 0;
end else begin
x0 := xC;
y0 := yC;
end;
end;
destructor TPendulum.Done;
begin
writeln('Bye ...');
end;
function TPendulum.GetX(a : single) : word;
begin
GetX := round(l * cos(a)) + x0;
end;
function TPendulum.GetY(a : single) : word;
begin
GetY := round(l * sin(a)) + y0;
end;
function TPendulum.GetAngle : single;
const
step : single = 0.5;
begin
if (angle > maxAngle) or (angle < minAngle)
sound(7);
nosound;
step := -step;
if angle > maxAngle then
minAngle := minAngle + c
else
maxAngle := maxAngle - c;
end;
angle := angle + step;
GetAngle := angle * PI / 180;
end;
procedure TPendulum.Next;
var
a : single;
begin
a := GetAngle;
x := GetX(a);
y := GetY(a);
end;
procedure TPendulum.Show;
begin
SetColor(White);
line(x0, y0, x, y);
circle(x, y, r);
end;
procedure TPendulum.Hide;
begin
SetColor(Black);
line(x0, y0, x, y);
circle(x, y, r);
end;
var
gd, gm : integer;
p : TPendulum;
begin
gd := detect;
initgraph(gd, gm, 'c:\bp7\bgi');
p.Init(GetMaxX div 2, GetMaxY div 2, 200, 20,
repeat
p.Hide;
p.Next;
p.Show;
delay(10);
until keypressed or (p.minAngle > p.maxAngle);
repeat until keypressed;
p.Done;
CloseGraph;
end.
Қорытынды
Осы курстық жумысымды қорытындылай келе, оқу-компьютерлік біліктерінің ішінде
Қазіргі заманда адам көп істі компьютерді пайдалану арқылы
Алгоритмнің машиналық тілдегі бейнесі программа деп аталады. Ал
Маятник – қозғалмайтын нүктенің немесе осьтің айналасында күшпен
Егер тепе-теңдік қалпынан бұрылған маятникті жіберетін болса, онда
Физикалық маятник аспаның айналасындағы көлденең ось ауырлық күшінің
Сызықты осциллятордың фазалық траекториялары энергияның сақтау заңымен анықталатын
Маятник құрамы түрлі құрылғыларда қолданылады, мысалы, сағаттар, еркін
Математикалық маятник өзінің қарапайымдылығына қарамастан қызықты құбылыстармен байланысты
Егер маятник тербелісінің амплитудасы -ге сәкес
Егер аспаның нүктесі қозғалыссыз қалпында тұрса да, тербеліс
Пайдаланылған әдебиеттер тізімі
1. О. Камардинов. Информатика, Алматы «Қарасай» баспасы,
2. Дәулетқұлов А.Б., Алғазы С.С. «Паскаль» программалау негіздері:
3. А.Н. Моргун. Решение задач средствами языка Turbo
4. Ю.А. Шпак. Turbo Pascal 7.0 на примерах
5. Т. А. Павловская. Паскаль пргаммирование на
6. С. А. Немнюген. Turbo Pascal практикум –
7.Мухамбетова Ғ.Г. “Паскаль тілінен практикум”Орал, РИО 2006ж.
8. «Тurbo Pascal» - Ж.Қ. Масанов, Б.А. Бельгибаев,
9 .«Практикум программирования на Тurbo Pascal» - О.П.
Петербург, Киев, 2002г.
10. Культин. Программирование в Turbo Pascal 7.0 и
11. И.Г. Семакин.А.П. Шестаков, Основвы программирования -
Москва, баспасы «Мастерство» 2008.
12. Д. Гуденко, Д. Петрченко, Сборник задач по
Питер 2003.
13. Федоренко Ю. М. «Алгоритмы и программы
2001.
14. В.В. Фаронов Turbo Pascal учебное пособие, «Питер
15. Н.С. Заурбеков, Б.Ж. Жұмажанова. Алгоритмдеу және программалау
16. Turbo Pasсal в задачах и премерах. Санкт-Петербург
17. О.А. Меженный самоучитель Turbo Pasсal «Диалектика» 2003.
26
Pascal программалау тілінде математикалық маятник тербелісін моделдеу
Бір еркіндік дәрежесі бар механикалық жүйенің тербеліс теңдеулеріне талдау жасау, тербелістің сөну дәрежесінің жүйенің қатаңдығы мен демпферлік қасиеттеріне тәуелділігі
Қарапайым гармоникалық осциллятор
Тербелмелі қозғалыстар
Оқушыларды табиғаттағы тербелмелі және толқындық құбылыстарды меңгертуде жасалынатын физикалық практикумдар және оны ұйымдастырып өткізудің әдістері
Физикалық маятник
Тербелмелі қозғалыс
Мектепте физика курсын оқытуда физикалық есептерінің алатын орны
Тербелмелі қозғалыстар. Тербеліс параметрлері. Резонанс
Механикалық тербелістер мен тербелмелі жүйелер