Қaзaқcтaн Pecпубликacы Бiлiм жәнe Ғылым миниcтpлiгi
Aбaй aтындaғы Қaзaқ Ұлттық Пeдaгoгикaлық унивepcитeтi
Сейсен Ұ., Қасымали Н., Қойшыбаева Ж., Узакбаева Ж.
«Физикалық процестерді
компьютерлік модельдеу»
(Оқу-әдістемелік құрал)
Ғылыми жетекшісі Рыстыгулова В.Б.
ф.-м.ғ.к., қауым. профессор м.а.
Aлмaты, 2021
Сызықтық құрылымды алгоритм немесе қарапайым сызықтық
алгоритм iс-әрекеттердiң орындалу ретiне қарай тiзбектеле орналасқан
блоктардан тұрады
№1.22 есеп. (Волькенштейн В.С., 1974 ж., 21-бет)
Дененің жүрген S жолының t уақытқа тәуелділігі теңдеу S=At-Bt2+Ct3
арқылы берілген. Мұндағы, A=2м/сек, B=3м/сек2 , C=4м/сек3. Мыналарды:
a) v жылдамдық пен a үдеудің уақытқа тәуелділігін;
b) дененің жүріп өткен жолын , қашықтығын яғни қозғалыс басынан 2
сек уақыт өткеннен кейін дененің жылдамдығы мен үдеуін табу керек. 0,5 с
өткеннен кейінгі, 0 ≤ t ≤ 3 интервалындағы жолдың, жылдамдықтың және
үдеудің графиктерін құрыңыздар.
Берілгені: Шешуі: Дененің жүрген S жолының t уақытқа тәуелділігі
A=2 м/сек теңдеуі:
B=3 м/сек2 s= At − B t 2 + C t 3 (1)
C=4м/сек3 .
Жылдамдықтың t уақытқа тәуелді теңдеуін алу үшін (1)-
v(t)-? теңдеуден туынды аламыз. Сонда
a(t)-? ds
s-? v = dt = A −2 Bt + 3 C t2 . (2)
v-?
a-? (2)- өрнек бойынша жылдамдықтың t уақытқа тәуелді
теңдеуін есептейміз:
v=2−6 t +12 t2 м / с.
алсақ а үдеудің уақытқа тәуелділік теңдеуін алу үшін жылдамдықтан туынды
a ( t )= dv ¿−2 B+6 Ct. (3)
dt
(3)- өрнек бойынша үдеудің t уақытқа тәуелді теңдеуін есептейміз:
a (t )=−6 +24 t.
Есептің шарты бойынша уақыт t=2 c өткеннен кейінгі дененің жүріп
өткен жолын , жылдамдығы мен үдеуін есептейік:
s= At −Bt 2+C t 3=2 ·2 c−3 · (2)2+ 4 · (2)3=24 м
v=2−6 t +12 t2=2−6 ·2+12 · (2)2=38 м / c
a=−6+ 24 t=−6+24 · 2=42 м / с2
Python тіліндегі программасы
print ('Дененің жүрген s жолының t уакытқа тауелділігі
теңдеу s=At-Bt**2+Ct**3 аркылы берілген. Мұндағы А=2
м/с,В=3 м/с**2')
A=2
B=3
C=4
v=print('Дененің қозғалыс жылдамдығы v=A-6*B*t+12*C*t**2
теңдеуі арқылы жазылады')
a=print('Дененің үдеуі a=-2*B+6*C*t теңдеуі арқылы
жазылады')
t=2
s=A*t-B*t**2+C*t**3
v=A-6*B*t+12*C*t**2
a=-2*B+6*C*t
print ('Дененің 2с уақытта жүріп өткен жолы s=', s, 'м')
print ('2с уақытта дененің жылдамдығы v=', v,'м/с' )
print ('2с уақытта дененің үдеуі a=', a, 'м/с^2')
Программалау нәтижесі:
Дененің жүрген s жолының t уакытқа тауелділігі теңдеу s=A*t-
B*t**2+C*t**3 аркылы берілген. Мұндағы А=2 м/с, В=3 м/с^2.
Дененің қозғалыс жылдамдығы v=A-6*B*t+12*C*t**2 теңдеуі арқылы
жазылады. Дененің үдеуі a=-2*B+6*C*t теңдеуі арқылы жазылады.
Дененің 2 с уақытта жүріп өткен жолы s= 24 м
2 с уақытта дененің жылдамдығы v= 158 м/с
2 с уақытта дененің үдеуі a= 42 м/с^2
№1022. Шынының бетіне 450 бұрышпен түскен сәуле өзінің бастапқы
бағытынан қандай бұрышқа ауытқиды? Алмастың бетінен ше?
Берілгені: Шешуі. Есептің суретін сызайық:
n1
n2
Жарықтың шағылу заңына сәйкес:
n21= sinα . (1)
sinβ
(1)-теңдіктен β сыну бұрышын табайық:
(1)-теңдіктегі сыну бұрышы . (2)
анықтаймыз: белгілі болғандықтан ауытқу бұрышын
Шыны ( ) мен алмас ( . (3)
) үшін ауытқу бұрышын есептейік:
.
.
Python тіліндегі программасы:
#Математикалық кітапхананы шақыру
import math
# тусу бурышы
a1=45
# n1-шыныны сыну корсеткши n1=1.46, n2- алмастын сыну корсеткиши
n2=2.42
n1=float(1.46)
n2= float(2.42)
# градусты радионга айналдыру
a=float (a1*(math.pi/180))
# Сыну бурышын табайык
b1= float (math.asin((math.sin(a))/n1))
b2= float ( math.asin((math.sin(a))/n2))
#радианды градуска айналдырам
b3= float (b1*(180/math.pi))
b4=float (b2*((180/math.pi)))
print('Шыны бетіндегі сыну бұрышының градустағы мәні b',
round(b3,1))
print ('Алмас бетіндегі сыну бұрышының градустағы мәні b',
round(b4,1))
# ауытку бурышын табайык
c1=a1-b3
c2= a1-b4
print ('Шыны үшін ауытқу бұрышы с=', round(c1, 1))
print ('Алмас үшін ауытқу бұрышы с=', round (c2,1))
Программалау нәтижесі:
Шыны бетіндегі сыну бұрышының градустағы мәні b= 29.0
Алмас бетіндегі сыну бұрышының градустағы мәні b= 17.0
Шыны үшін ауытқу бұрышы с= 16.0
Алмас үшін ауытқу бұрышы с= 28.0
Тармақталған алгоритм дегеніміз белгiлi бiр шарттың орындалуына
не орындалмауына байланысты тармақталып, алгоритмнің бiрнеше
жолдарға бөлiнуi.
Кирхгоф заңы. Кирхгоф заңының көмегімен токтарды есептеуге
арналған теңдеулерді құру
Күрделі тармақталған электр тізбектерін есептеу үшін электр
тармақтары мен түйіндер саны айтарлықтай мағынаға ие.
Тармақ деп тізіле жалғанған ЭҚК пен қабылдағыштан тұратын электр
тізбегінің бөлігін айтады. Түйін деп үш немесе одан да көп тармақтардың
жалғанған нүктесін немесе орнын айтады. Түйінге жалғанған тармақтар
бойынша айналсақ, онда электр тізбегінің тұйықталған контурын алуға
болады.
Барлық электр тізбектері Кирхгофтың екі заңына бағынады.
Кирхгофтың бірінші заңының екі тұжырымдамасы бар:
1) Түйінде жинақталған токтардың алгебралық қосындысы нөлге тең
(1-сурет);
2) Түйінге келетін токтардың қосындысы түйіннен шығатын
токтардың қосындысына тең
n
∑ Ik=0 . (1.3)
k =1
Бұл заңның физикалық мағынасы: электр тізбегіндегі зарядтардың
қозғалысы түйіндерде немесе тармақ бөліктерінің бірінде де
жинақталмайтындай болып өтеді, керісінше жағдайда түйіндер потенциалы
мен тармақтағы тоқтар өзгерер еді.
I3 I4 I5
I2 I1
Сурет 1. Түйінде жинақталған тоқтар
Кирхгофтың екінші заңы: кез келген тұйықталған контурдағы
элементтерге түсірілген кернеулерлердің алгебралық қосындысы осы
контурдың бойындағы ЭҚК-нің алгебралық қосындысына тең
mm n
∑ ∑ ∑Uk= I k Rk= Ek , (1.4)
k =1 k =1 k=1
мұндағы m− контурдағы резисторлық элементтердің саны, n− ЭҚК
саны.
Түсірілген кернеу мен ЭҚК бағыты контур айналымының бағытына
сәйкес келсе, онда олар қосындыға « + » таңбамен кіреді.
Кирхгоф заңы схема тармақтарындағы токтарды анықтау үшін
қолданылады.
Схема тармақтарының санын – b, ток көздері бар тармақ санын – bток көзі ,
түйіндер санын – y деп белгілейік. Әрбір тармақта өзінің тоғы ағады.
Теңдеулерді құру үшін мына ережелерді ұстану қажет:
1) тармақтардағы токтардың оң бағытын еркімізше таңдаймыз;
2) Кирхгофтың ІІ–заңы бойынша теңдеулер құру үшін контур
айналымының оң бағытын таңдаймыз (барлық контур бағыттарын сағат
тілінің бағытымен таңдаған дұрыс).
Сызықты тәуелсіз теңдеулерді алу үшін Кирхгофтың І–заңына сәйкес (y
– 1) теңдеу, ал ІІ–заңы бойынша – жетіспейтін (b – bток )көзі – (y – 1) теңдеулер
құру қажет; Кирхгофтың ІІ–заңы бойынша теңдеулер құрған кезде ток көзі
бар тармақты ескермей, әйтсе де схеманың барлық тармақтарын қамту
қажет. Осы кезде әрбір контурға алдыңғы контурға кірмей қалған бір
тармағы кіру қажет. Мұндай контурлар тәуелсіз деп аталады. Бұл шарт –
токтарды бір мәнді анықтауға арналған қажетті және жеткілікті шарт болып
табылады.
Суретте кескінделген схеманы мысалға ала отырып токтарды есептеуге
арналған теңдеулерді қарастырайық.
Сурет 2. Күрделі тізбектің схемасы
Түйін саны 3-еу, Кирхгофтың І–заңы бойынша y – 1=2 теңдеу;
тармақтар саны 5-еу, ток көзі бар тармақ саны 1-еу, сонда
Кирхгофтың ІІ–заңы бойынша (b – bток )көзі – (y – 1)=2 теңдеу құру қажет,
яғни
y – 1=2 теңдеу І–заңы бойынша
(b – bток )көзі – (y – 1)=2 теңдеу ІІ–заңы бойынша
2-түйін: J + I 2+I 3−I 4=0 .
3-түйін: .
I-контур: .
II-контур: .
Кез келген электрлік тізбекте энергетикалық баланс –
қуаттар балансы сақталу қажет. Қуаттар балансы түсінігі
энергияның сақталу заңынан шығады: электр тізбегіндегі
барлық қоректендіру көздерінің қуаты осы тізбектегі
қабылдағыштар қуаттарының қосындысына тең
nm
∑ ∑Ek Ik= I 2 R k .
k
k =1 k =1
Егер ЭҚК пен токтың бағыты сәйкес келсе, онда тоқ көзі
жүктемеге қуат береді. Бұл жағдайда Ek Ik көбейтіндісін
«+» таңбамен алу керек. Егер ЭҚК пен токтың бағыты
қарама-қарсы болса, онда тоқ көзі қабылдағыш тәртібімен
(мысалы, аккумулятордың зарядталу тәртібі) жұмыс
жасайды. Бұл жағдайда Ek Ik көбейтіндісін « - » таңбамен
алу керек.
Қабылдағыштың қуатына тоқ көзінің ішкі кедергісінде
бөлінетін қуатты да жатқызу керек.
Зертханалық сабақ № 2. Тармақталған алгоритмді физика
есептеріне қолдану. Кирхгоф заңының көмегімен токтарды есептеуге
программаны құру.
Есеп 2.10.5. (Брусиан Э.В.) Тармақталған тізбек. 15-суретте
көрсетілген тізбекте ε1=2 , 015 В , r1=0 , 013 Oм , ε2=2 В , r2=0 , 017 Oм ,
ε3=2, 031 В , r3=0, 021 Oм , R=5,37 Oм . Барлық токтарды және
клеммалардағы потенциалдар айырымын табыңыздар.
Берілгені:
ε1=2 , 015 В , r1=0 , 013 Oм ,
ε2=2 В , r2=0 , 017 Oм ,
ε3=2, 031 В , r3=0, 021 Oм ,
R=5,37 Oм .
Табу керек:
i1−? i2−? i3−? U ab−?
Барлық токтардың бағытын еркімізше жоғары қарай бағыттап,
Кирхгофтың I – заңы бойынша төмендегі теңдікті аламыз:
. (1)
және ( ) екі контурды таңдап, оларды сағат тілінің
бағытымен айналым жасап, Кирхгофтың I – заңы бойынша төмендегі
теңдіктерді аламыз:
, (2)
. (3)
(1), (2), (3) теңдеулер үш белгісізі бар үш жүйесіне келеді:
(4)
Есептің берілгендегі сан мәндерін (4)-теңдеуге қоямыз, сонда
Үш белгісізі бар үш сызықтық теңдеулер жүйесін шешу
(Брусиан Э.В. 75-бет)
(5)
Теңдеулер жүйесі анықтауыштың мәні болғанда, (5)-теңдеудің
шешімі келесі теңдікпен анықталады:
; ;. (6)
Егер анықтауыштың мәні және болса ( немесе ;
), онда шешімі белгісіз, егер ; ; ; , онда
шешімі жоқ. анықтауыш коэффициентін анықтау үшін теңдеудің сол жақ
коэффициенттерін кесте түрінде анықтауыштың оң жағына алдыңғы екі
бағанын жазады:
Сосын , , диагональдағы (бұл мүшелер «+»
таңбамен алынады) және , диагоналындағы (бұл
мүшелер «-» таңбамен алынады) мүшелерінің көбейтіндісінің қосындысын
құрастырады:
. (7)
анықтау үшін бағанды бос мүшелер бағанымен ауыстырылады.
Мысалы: (8)
(7) және (8)-теңдеулерді пайдаланып (4)-теңдеудің анықтауыштарын
анықтаймыз:
Есепті Python тілінде программалау
Берілген есепті Python тілінде программалайық. Ол үшін әуелі (7) және
(8) теңдеулердегі коэффициенттерге белгілеулер енгізейік:
a11 = A1 a12 = A2 a13 = A3 b1 = A
a21 = B1 a22 = B2 a23= B3 b2 = B
a31 = C1 a32 = C2 a32 = C3 b3 = C
Ал, анықтауышты «D»-әрпімен белгілейміз:
D=float(A1*B2*C3+A2*B3*C1+A3*B1*C2-A3*B2*C1-A1*B3*C2-A2*B1*C3)
D1=float(A*B2*C3+A2*B3*C+A3*B*C2-A3*B2*C-A*B3*C2-A2*B*C3)
D2=float(A1*B*C3+A*B3*C1+A3*B1*C-A3*B*C1-A1*B3*C-A*B1*C3)
D3=float(A1*B2*C+A2*B*C1+A*B1*C2-A*B2*C1-A1*B*C2-A2*B1*C)
Анықтауыштың мәні болса, If –оператары арқылы келесі
теңдіктерді есептейміз:
i1 =float(D1/D)
i2 = float(D2/ D)
i3 = float(D3/ D)
print ('i1=', round (i1, 4), 'A')
print ('i1=', round (i2, 4),'A')
print ('i3=', round (i3, 4),'A')
Есептің шарты «жалған» болғанда print()-функциясы арқылы «Жүйенің
шешімі жоқ» жауабы баспаға шығады.
Ом заңы пайдаланып, барлық клеммалардағы потенциалдар айырымы
келесі формуламен есептеледі:
U=ε1−i1 r2
U=ε1−i1 r2=2 . 015 В−(−4 .7035 А )⋅0 . 0017Ом=2 .023В
Python тіліндегі программасы:
print('15-суретте көрсетілген тізбекте 15-суретте көрсетілген
тізбекте е1=2,015 В,r1=0.0013 Ом ')
print('е2=2В,r2=0.0017 Ом,е3=2,031 В,r3=0.0021 Ом R=5.37 Om
Bарлық токтарды және клеммалардағы потенциалдар айырымын
табыңыздар')
print('i1-?, i2-?, i3-?, U-?')
#Есеп шарты бойынша барлық токтардың бағытын еркімізше жоғары
қарай бағыттап, Кирхгофтың І-заңы бойынша, алатынымыз:
# i1+i2+i3=0
# i1r1-i2(r2-R)=e1-e2
# i1r1-i3r3=e1-e3
e1 = float(2.015)
r1= float(0.0013)
e2 = float(2.0)
r2 = float(0.0017)
e3 = float(2.031)
r3 = float(0.0021)
R = float(5.37)
#Теңдеулер жүйесіндегі коэффициенттерге белгілеу енгіземіз
A1 = int(1)
A2 = int(1)
A3=int(1)
A=0
B1 = r1
B2 = - (r2+R)
B3=0
B=float(e1 -e2)
C1=r1
C2=0
C3=- r3
C= e1-e3
D=float(A1*B2*C3+A2*B3*C1+A3*B1*C2-A3*B2*C1-A1*B3*C2-A2*B1*C3)
D1=float(A*B2*C3+A2*B3*C+A3*B*C2-A3*B2*C-A*B3*C2-A2*B*C3)
D2=float(A1*B*C3+A*B3*C1+A3*B1*C-A3*B*C1-A1*B3*C-A*B1*C3)
D3=float(A1*B2*C+A2*B*C1+A*B1*C2-A*B2*C1-A1*B*C2-A2*B1*C)
if (D > 0) :
i1 =float(D1/D)
i2 = float(D2/ D)
i3 = float(D3/ D)
print ('i1=', round (i1, 4),'A')
print ('i1=', round (i2, 4),'A')
print ('i3=', round (i3, 4),'A')
else:
print('Жүйенің шешімі жоқ')
#Ом заңын пайдаланып тізбектегі кернеуді табайық
U= float(e1-i1*r2)
print ('Тізбектегі толық кернеу U=', round (U, 4))
Программалау нәтижесі:
15-суретте көрсетілген тізбекте 15-суретте көрсетілген тізбекте
е1=2,015 В,r1=0.0013 Ом
е2=2В,r2=0.0017 Ом,е3=2,031 В,r3=0.0021 Ом R=5.37 Om Bарлық
токтарды және клеммалардағы потенциалдар айырымын табыңыздар
i1-?, i2-?, i3-?, U-?
i1= -4.7035 A
i1= -0.0039 A
i3= 4.7074 A
Тізбектегі толық кернеу U= 2.023
Process finished with exit code 0
Дәріс № 3. Циклдік алгоритм. For параметрлі циклі
Цикл –тұрақты қайталанып тұратын оқиғалар жиынтығы. Мысалы,
жыл мезгілдері, күн, апта, ай − бұлардың бәрі табиғатта қайталанып
тұратын циклдер. программалауда циклдік алгоритмдердің маңызы зор.
Олардың көмегімен табиғатта кездесетін барлық цикл түрлерінің
алгоритмін құрастырып, компьютерде модельдеуге болады.
Циклдік алгоритм дегеніміз – бірнеше рет қайталанып орындалатын
белгілі бір іс-әрекеттерді сипаттайтын алгоритмдер тобын айтамыз [3].
Зертханалық жұмыс №4. Математикалық маятник көмегімен еркін
түсу үдеуін анықтау
Қажетті құралдар: Тілшесі бар сағат, өлшеу қателігі лента,
кішкене саңылауы бар шарик, жіп, штатив.
Теориялық бөлім
Еркін түсу үдеуін өлшеу үшін әртүрлі гравиметрлер пайдаланады,
көбінесе маятникті құралдар. Олардың көмегімен шамамен
абсолютті қателікпен еркін түсу үдеуін өлшеуге болады.
Жұмыс кезінде қарапайым маятник құрал – жіпке ілінген шар
қолданылады. Шариктің өлшемі жіптің ұзындығына қарағанда өте аз
және орнықтылық орнынан өте аз ауытқулар кезінде
тербеліс периоды мынаған тең (1-сурет):
√T =2 π l .
g
Периодты өлшеудің дәлдігін арттыру үшін жеткілікті түрде көп -рет
маятниктің толық тербелісінің уақытын өлшеу керек. Сонда период:
t
Т = N .
Еркін түсу үдеуі мына формуламен есептеледі:
.
Сурет 1. Математикалық маятник
Экспериментті жүргізу тәртібі:
Штативті үстел шетіне орналастырып, штативке жіпке ілінген шарикті
орнату керек.
Шарик еденнен 1-2 см жоғары деңгейде болу қажет.
Сызғыш көмегімен маятниктің ұзындығын өлшейміз.
Шарикті орнықтылық жағдайынан 5-8 cм-ге ауытқу жасап, маятникте
тербелісті қоздырамыз.
Тербеліс саны N=40 тең деп алып, тәжірибені 6 рет қайталап, орташа
уақытты tорт есептеңіз:
Уақыттың абсолютті қателігін мына формуламен есептеңіздер
Кестеге сан мәндерін енгізу
№ t, c tорт , с Δt ,с Δtорт ,с l ,м
0,67 1
1 59 1
2 60 0
3 60 60 0
4 61 1
5 59 1
6 61 1
Еркін түсу үдеуін формула бойынша есептейік:
Уақытты өлшеудің салыстырмалы қателігін анықтаймыз:
.
Маятниктің ұзындығына байланысты салыстырмалы қателігі:
.
Еркін түсу үдеуінің салыстырмалы қателігі:
Өлшеу нәтижесін есептейік:
Қорытынды: Маятниктің көмегімен өлшенген еркін түсу үдеуі жіптің
ұзындығы 1 метр болатын еркін түсудің кестелік үдеуіне (g=9,81м/с2) тең
екендігі белгілі болды.
Python тіліндегі программасы
# Математикалық кітапхананы шақыру
import math
t_del = 0.666
n = int(input("Өлшенген шаманың саны: n= "))
# L арқылы бос тізім енгізіп аламыз
t = []
# for операторы арқылы өлшеуде жазылған мәндерді енгіземіз
for i in range(0, n):
mani = int(input("Өлшеу мәні: "))
t.append(mani)
# l-математикалық маятниктің ұзындығы l=0.56м
l = 0.55
# N=40 тербеліс саны
N = 40
t_ort = sum(t) / n
print('t_ort=', round(t_ort, 2),'t уақыттың орташа мәні')
g_ort = 4 * (math.pi) ** 2 * l * N ** 2 / t_ort ** 2
print('Еркін түсу үдеуінің орташа мәні g=', round(g_ort, 4), 'м/
с^2')
# Уақытты өлшеудің салыстырмалы қатесін анықтаңыз
e_t = t_del / t_ort
print('Уақытты өлшеудің салыстырмалы қатесі e_t=', round(e_t,
3), 'c')
# Маятниктің ұзындығын өлшеудің салыстырмалы қателігін анықтаңыз
# өлшеу лентасының қателігі L_kat=0.005 м
L_kat=0.005
e_l = L_kat / l
# g есептеудің салыстырмалы қателігі
e_g = e_l + 2 * e_t
print('Еркін түсу үдеуін есептеудің салыстырмалы қателігі e_g=',
round(e_g,3), 'м/с^2')
g_del = g_ort * e_g
print('Еркін түсу үдеуін есептеудің абсолют қателігі g_del=',
round(g_del,4), 'м/с^2,')
print('Еркін түсу үдеуін анықтаудың эксперименттік нәтижесі g=',
round(g_ort,3), '±', round(g_del,3),'м/с^2' )
Программалаудың нәтижесі
Өлшенген шаманың саны: n= 6
Өлшеу мәні: 59
Өлшеу мәні: 60
Өлшеу мәні: 60
Өлшеу мәні: 61
Өлшеу мәні: 59
Өлшеу мәні: 61
t_ort= 60.0 t уақыттың орташа мәні
Еркін түсу үдеуінің орташа мәні g= 9.6503 м/с^2
Уақытты өлшеудің салыстырмалы қатесі e_t= 0.011 c
Еркін түсу үдеуін есептеудің салыстырмалы қателігі e_g= 0.031 м/
с^2
Еркін түсу үдеуін есептеудің абсолют қателігі g_del= 0.302
м/с^2,
Еркін түсу үдеуін анықтаудың эксперименттік нәтижесі g= 9.65 ±
0.302 м/с^2
Process finished with exit code 0
4.10. Эксперименпен алынған тәуелділіктерді өңдеу.
Ең кіші квадраттар әдісі
Айталық, y шамасы x− ке тәуелді және эксперимент нәтижесінде
көптеген жұп мәндері алынған болсын. Сондай-ақ, тәуелділігі
сызықты функция болу қажет: (4.10.1)
Бірақ та, өлшеулер қателігіне байланысты алынған нүктелері бір
түзудің бойында жатпайды (1-сурет). Ізделінді түзудің ең мүмкін болатын
жолын қалай табуға болады (Бурсиан Э.В., 92-бет).
Cурет 1. тәуелділік графигі. Эксперименттік нүктелері мен
сәйкесінше есептеу нүктелері көрсетілген
Эксперименттік нүкте бойынша түзуді дұрыс жүргізуге болады, егер
минимум болса, (суретті қараңыз), яғни түзу теңдеуі
үшін М және К коэффициенттерін өрнегі минимум
болатындай етіп табу қажет. Ол үшін
Осы өрнекке F( M , K ) және теңдеулерін қойып,
дифференциалдағаннан кейін M және K коэффициенттерін табуға болады:
, (4.10.2)
мұндағы
. (4.10.3)
ал N-өлшеулер саны, яғни жұптарының саны. (4.10.3)-формуладағы
қосындыларды және М және К коэффициенттерін табу үшін Python тілінде
программа құруға болады.
Толығырақ тоқталсақ:
n
F( M , K )=∑ ( yi−( M + Kxi ))2 →min
i=1
Енді дифференциалдық есептеулердегі белгілі әдіс бойынша F-тің M және K
бойынша алынған дербес туындыларын нөлге теңестіреміз, сонда
Мұны ықшамдап теңдеулердің мынадай қалыпты жүйесін айтамыз.
Мұндағы мәндері эксперименттен алынған мәліметтер бойынша
беріледі. Осы жүйе ең кіші квадрат әдісінің нормалданған жүйесі деп
аталады. Сонымен жүйені М және К бойынша шешіп, олардың мәндерін
анықтаймыз:
Зертханалық сабақ № 5. Ең кіші квадраттар әдісі. Ток көзінің
жүктемелік сипаттамасы
Ток көзінің жүктемелік сипаттамасы. Ток көзін оған әр түрлі
резисторларды (кедергілерді) қосып, ток күші i мен ток көзінің
клеммаларындағы U кернеуін өлшеу арқылы зерттеген. Келесідей
мәліметтер алынған:
i, A 0,06 0,11 0,125 0,16 0,22 0,23 0,27 0,29 0,375 0,40
U , B 4,8 4,8 4,4 4,1 4,0 3,6 3,3 3,2 3,0 2,05
Мәліметтерді ең кіші квадрат әдісімен өңдеп, ЭҚК, қысқа тұйықталу тогы
мен ток көзінің ішкі кедергісін анықтауға программа құрыңыздар.
Берілгені:
Табу керек:
Шешуі: Толық тізбек үшін Ом заңын жазайық:
(1)
мұндағы ішкі кедергі, сыртқы кедергі.
, (2)
мұндағы толық тізбектегі кернеу. (2)-теңдікті (1)-теңдікке қойсақ: (3)
U=ε−ir .
Ең кіші квадраттар әдісі арқылы есептейік:
, (4)
мұндағы y=U; M= ε ; K=r; x=i ( ε және r – тұрақты шамалар). Белгіленген
шамалар бойынша есептеулер жүргізейік:
M = BC− AD ; K = B − NM
NC− A2 A
мұндағы
A=∑ xi=0 , 06+0 ,11+0 ,125+0 ,16+0 ,22+0 ,23+0,27+0 , 29+0 , 375+0, 40=2, 24
i
B=∑ yi=4,8+4,8+4,4+4,1+4,0+3,3+3,6+3,2+3,0+2,05=37 , 25
i=1
∑C= x2i =(0 , 06 )2+( 0 ,11)2+(0 ,125 )2+(0 ,16 )2+(0 , 22)2+(0 , 23)2+(0 , 27 )2+(0 , 29 )2+( 0 ,375 )2
i
+(0 , 40)2=0 , 62
D=∑ xi yi=0 , 06⋅4. 8+0 .11⋅4,8+0 .125⋅4,4+0 ,16⋅4 . 1+0 , 22⋅4+0 , 23⋅3,3+0 ,27⋅3,6+
i
+0 , 29⋅3,2+0, 375⋅3,0+0 , 40⋅2 , 05=7 . 51
М және К коэффициенттерін есептейік:
=nD− AB =10⋅7 ,51 −2 ,24⋅37 , 25
K nC− A2 10⋅0 , 62−( 2 , 24 )2 =−7 .540
M=nB−K⋅A 37 ,25− ¿ 10=5 , 394
=¿37 ,25−(−7
, 540 )⋅2, 24 ¿
(4)- теңдеу арқылы есептесек
y1=M+ kx1=5 , 394+(−7 .540 )⋅0 . 06=4 , 947
y2=M+ kx2=5 , 394+(−7. 540 )⋅0 .11=4 , 574
y3=M+ kx3=5 , 394+(−7. 540 )⋅0 .125=4 , 463
y4=M +kx 4=5 ,394 +(−7 . 540)⋅0. 16=4 ,202
y5=M+ kx5=5 , 394+(−7 . 540)⋅0 .22=3 ,755
y6=M+ kx6=5 , 394+(−7. 540 )⋅0 .23=3 , 680
y7=M+ kx7=5 ,394+(−7 .540 )⋅0 . 27=3 , 382
y8=M+ kx8=5 , 394+(−7 .540 )⋅0 .29=3 , 233
y9=M+ kx9=5 , 394+(−7. 540 )⋅0 .375=2 ,600
y10=M +kx10=5 ,394 +(−7 .540 )⋅0 . 40=2 , 414
Ең кіші квадраттар әдісімен өңделгеннен кейін:
i, A 0,06 0,11 0,125 0,16 0,22 0,23 0,27 0,29 0,375 0,40
U,B 4,947 4,574 4,463 4,202 3,755 3,680 3,382 3,233 2,600 2,414
Клеммалардағы қысқа тұйықталу тоғын есептейік:
Резистордың ішкі кедергісі: .
.
Python тіліндегі программасы
print(
'Ток көзін оған әр түрлі резисторларды (кедергілерді)
қосып,ток күші i мен ток көзінің клеммаларындағы U кернеуін
өлшеу арқылы зерттеген')
print('Келесідей мәліметтер алынған: ')
print(
'Мәліметтерді ең кіші квадрат әдісімен өңдеп, ЭҚК, қысқа
тұйықталу тогы мен ток көзінің ішкі кедергісін анықтауға
программа құрыңыздар. ')
print (''
''
''
'')
import math
A=0
B=0
C=0
D=0
k=0
n=int(input ('Өлшеулер саны : n='))
i = []
for k in range(0, n):
mani = float(input( " i ток күшінің мәні: "))
i.append(mani)
A = A + i[k ]
U = []
for k in range(0, n):
man = float(input( "U кернеу мәні: "))
U.append(man)
B = B + U[k]
for k in range(0, n):
C = float(C + (i[k])** 2)
D = D + i[k] * U[k]
print('A=',round (A, 2))
print('B=', round(B, 2))
print('C=', round(C, 2))
print('D=', round(D, 2))
K=(n*D-A*B)/(n*C-A**2)
M=(B-K*A)/n
print ('K=', round (K, 2))
print ('M=', round (M, 2))
for k in range(0, n):
U1 = M + K * i[k]
ik=math.fabs(M/K)
r=math.fabs(M/ik)
print('i=', i [k], 'A',' ' 'U=', round(U1, 3), 'B')
print ("Электр қозғаушы күші ", M, 'B')
print ('Қысқа тұйықталу тогы I=', round(ik, 3), 'A')
print ('Tок көзінің ішкі кедергісін r=', round (r, 4), 'Ом')
Программалау нәтижесі
Ток көзін оған әр түрлі резисторларды (кедергілерді) қосып,ток
күші i мен ток көзінің клеммаларындағы U кернеуін өлшеу арқылы
зерттеген
Келесідей мәліметтер алынған:
Мәліметтерді ең кіші квадрат әдісімен өңдеп, ЭҚК, қысқа
тұйықталу тогы мен ток көзінің ішкі кедергісін анықтауға
программа құрыңыздар.
Өлшеулер саны : n=10
i ток күшінің мәні: 0.06
i ток күшінің мәні: 0.11
i ток күшінің мәні: 0.125
i ток күшінің мәні: 0.16
i ток күшінің мәні: 0.22
i ток күшінің мәні: 0.23
i ток күшінің мәні: 0.27
i ток күшінің мәні: 0.29
i ток күшінің мәні: 0.375
i ток күшінің мәні: 0.40
U кернеу мәні: 4.8
U кернеу мәні: 4.8
U кернеу мәні: 4.4
U кернеу мәні: 4.1
U кернеу мәні: 4.0
U кернеу мәні: 3.3
U кернеу мәні: 3.6
U кернеу мәні: 3.2
U кернеу мәні: 3
U кернеу мәні: 2.05
A= 2.24
B= 37.25
C= 0.62
D= 7.51
K= -7.35
M= 5.37
i= 0.06 A U= 4.93 B
i= 0.11 A U= 4.562 B
i= 0.125 A U= 4.452 B
i= 0.16 A U= 4.195 B
i= 0.22 A U= 3.754 B
i= 0.23 A U= 3.681 B
i= 0.27 A U= 3.387 B
i= 0.29 A U= 3.24 B
i= 0.375 A U= 2.616 B
i= 0.4 A U= 2.432 B
Электр қозғаушы күші 5.3702975720922055 B
Қысқа тұйықталу тогы I= 0.731 A
Tок көзінің ішкі кедергісін r= 7.3451 Ом
Токтың кернеуге тәуелділігі
6 Series2
Series4
5
4
U, B 3
2
1
0
0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45
i, A
Зертханалық сабақ №7. Электромагниттік индукция құбылысын
түсіндіруге арналған эксперименттік тізбектің суретін Tkinter модулінің
көмегімен салу
Бізге белгілі электр тогы өзінің айналасында магнит өрісін тудырады.
Магнит өрісі мен электр тоғының арасындағы байланыс осы магнит өрісінің
көмегімен контурда ток пайда бола ма деген сұрақтың шешімін 1831 жылы
ағылшын физигі Фарадей шешті.
Электромагниттік индукция 1831 жылы 29 тамызда Майкл Фарадеймен
ашылған, оның зерттеулері бойынша тұйық жүйедегі магнитті толқынның
өзгеру жылдамдығы, осы жүйеде пайда болған электр қозғаушы күшке тура
пропорционал екенін ашты. Оның тәжірибесінде гальванометрге жалғанған
катушканың (соленоид) ішіне, тұрақты магнит салсақ, гальванометр
стрелкасының (1-сурет) қозғалысын байқаймыз. Магнитті қайтадан суырып
алсақ, стрелка басқа бағытқа ауытқиды. Магнитті неғұрлым тезірек
қозғалтса, стрелка соғұрлым көбірек ауытқиды. Демек, магнит өрісінің күш
сызықтары тұйық контурды қиып өткенде ток пайда болады, ол токты
индукциялық ток деп атайды.
Сурет 1. Электромагниттік индукция құбылысын бақылауға арналған
тәжірибе
Магниттің полюсін өзгертсек, стрелканың бұрылу бағыты өзгереді.
Магнитті тұрақты қойып, соленоидты қозғауға да болады. Әрі осы пайда
болған индукциялық ток, магнит ағынының өзгеру түріне байланыссыз, ол
тек өзгеріс жылдамдығына байланысты (2-сурет).
Сурет 2. Магнит полюсінің өзгеруінің әсері
Майкл Фарадей екі жақын орналасқан катушкамен тәжірибе жасап
көреді: егер бір катушканы айнымалы ток көзіне қосып, екінші катушкада да
айнымалы ток пайда болады (3-сурет). Бұл жағдайларда пайда болатын
электр токтары индукциялық токтар деп аталады, ал осы индукциялық
токтардың тууына әкелетін себепкер құбылыс — индукцияның электр
қозғаушы күші деп аталады. Өткізгіштердегі бұл электр қозғаушы күші
(ЭҚК) осы өткізгіштер ішінде тұратын, өзгеріп отыратын магнит өрістерін ің
әрекетінен пайда болады.
Сурет 3. Майкл Фарадейдің екі жақын орналасқан катушкамен тәжірибесі
Магнит өрісі арқылы өндіріліп алған индукциялық ток осы тізбекте
ЭҚК бар екенін көрсетеді. Бұл электромагниттік индукцияның электр
қозғаушы күші деп аталады. Яғни магнит өрісі арқылы индукциялық ток
өндіріп алу құбылысын электромагниттік индукция құбылысы деп атайды.
Индукциялық токтың мәні және электромагиттік индукцияның ЭҚК-і тек
қана магнит ағының өзгеру жылдамдығымен анықталады:
dФ
ε =− dt .
Енді электромагниттік индукция құбылысын түсіндіруге арналған
эксперименттік тізбектің суретін Tkinter модулінің көмегімен салайық.
Python тіліндегі программасы
from tkinter import *
###экранды дайындау
root=Tk()
canv = Canvas(root, width=450, height=400, bg="white")
canv.create_text(180,15, text="N", font="Times 14")#N
canv.create_rectangle(135,0,160,45,fill='red')#магнит
canv.create_text(180,55, text="S", font="Times 14")#S
canv.create_rectangle(135,45,160,90,fill='blue')#магнит
canv.create_oval(100,100,200,110,fill='white')#катушкабасы
canv.create_rectangle(115,110,185,250)#катушкаденеси
canv.create_oval(115,110,185,120)#катушканынорамы
canv.create_oval(115,120,185,130)#катушканынорамы
canv.create_oval(115,130,185,140)#катушканынорамы
canv.create_oval(115,140,185,150)#катушканынорамы
canv.create_oval(115,150,185,160)#катушканынорамы
canv.create_oval(115,160,185,170)#катушканынорамы
canv.create_oval(115,170,185,180)#катушканынорамы
canv.create_oval(115,180,185,190)#катушканынорамы
canv.create_oval(115,190,185,200)#катушканынорамы
canv.create_oval(115,200,185,210)#катушканынорамы
canv.create_oval(115,210,185,220)#катушканынорамы
canv.create_oval(115,220,185,230)#катушканынорамы
canv.create_oval(115,230,185,240)#катушканынорамы
canv.create_oval(115,240,185,250)#катушканынорамы
canv.create_oval(115,250,185,260)#катушканынорамы
canv.create_line(185,110,210,110)#1 шнур
canv.create_line(210,110,230,90)#кілт
canv.create_line(240,110,300,110)#1 шнурдынжалгасы
canv.create_line(185,250,300,250)#2 шнур
canv.create_line(300,110,300,180)#1 шнурдынжалгасы
canv.create_line(300,220,300,250)#2 шнурдынжалгасы
canv.create_text(380,200, text="Гальванометр", font="Times
14")#гальванометр
canv.create_oval(300+20,200+20,300-20,200-20)
canv.create_line(300,190,300,200)#стрелка
canv.create_text(284,200, text="-2", font="Times
6")#гальванометр
canv.create_text(294,190, text="-1", font="Times
6")#гальванометр
canv.create_text(300,184, text="0", font="Times 6")
canv.create_text(307,190, text="1", font="Times 6")
canv.create_text(317,200, text="2", font="Times 6")
canv.pack()
root.mainloop()
Программалау нәтижесі:
Практикалық сабақ №8. Горизонтқа бұрыш жасай лақтырылған
дененің қозғалысына график тұрғызу
2.3.3. есеп. (Бурсиан Э.В., 8-бет) Горизонтқа бұрыш жасай
лақтырылған дененің қозғалысы. Бастапқы жылдамдығы 30 м/с
горизонтқа бұрыш жасай лақтырылған дененің траекториясын (әрбір 200
сайын 100− тан 700− қа дейін) сызыңдар. Ауаның кедергісі ескерілмейді.
Есептің аналитикалық шешімі:
Берілгені: Шешуі: Берілген есеп қозғалыстарды қосуға арналған.
ϑ 0=20 м/с
α =( 100−70 0)
Δα =20 0
y( x)−?
Ең алдымен дененің жылдамдықтарының проекциясын жазамыз:
1. Дене жылдамдығының горизонталь бойынша проекциясы, яғни
Ох : ϑ х=ϑ 0 х=ϑ0 соs α , ϑ x=ϑ 0 x⋅t .
2. Дене жылдамдығының вертикаль бойынша проекциясы, яғни
Оу : ϑ у=ϑ0 у=ϑ0sin α , ϑ y=ϑ0 y−gt .
3. Жүрілген жол:
∫ ∫t
s= y =
0
t ( ϑ0 y−gt ) dt t gt 2 ;
2
ϑ y dt = = ϑ 0 y −
0
t1= ϑ0 y ;
g
4. Дененің көтерілу уақыты:
5. Дененің толық қозғалыс уақыты: t2=2 t1;
6. Дененің көтерілу (траекторияның) биіктігі: 2 2
0
( )h= y 2 y⋅ϑg0 y − 2g⋅ ϑ0 y = ϑ y ;
max= ϑ 0 g
2g
7. Дененің ұшу қашықтығы:
2
L= х max= ϑ x⋅t2=2 ϑ t = ϑ 0x ϑ 0 y ;
0 0 x 1 g
8. Дененің траекториясы квадраттық парабола болып табылады.
gt 2 g2⋅ϑx022х
y=ϑ0 t − 2 =ϑ0 x− = ϑ 0 y x−2 g ⋅x 2 .
ϑ0x ϑ 0 x
y y ϑ 2 х
0
Енді берілген есептің программасын құрайық. Программа жазу үшін
белгілеулер енгізейік:
Бастапқы жылдамдық ϑ 0=v0=20 м/с ;
Лақтыру бұрышы α=a ; радианда өрнектелуі b:=p*a/180;
Ох өсіндегі жылдамдық ϑ 0 х=ϑ0 соs α =u ,
Оу өсіндегі жылдамдық ϑ 0 у=ϑ0sin α=w .
Тұрақтылар: P=3,14; g=9,8.
y=ϑ0 y x − g ⋅x 2= w x g ⋅x 2 .
ϑ0x u −2u2
Есептеу формуласы: 2 ϑ 2 х
0
2.3.3 eсептің Python тіліндегі программасы:
import math
from tkinter import *
root =Tk()
canv = Canvas(root, width = 500, height = 500, bg =
"white")
canv.create_line(0,270, 500,270,width=2,arrow=BOTH)#x
canv.create_line(100,0,100,500,width=2,arrow=BOTH)#y
canv.create_text(450,250,text="x",fill='black',
font=('Times', 14))
canv.create_text(80,10,text="y",fill='black',
font=('Times', 14))
g=9.8
v0=20
p=3.14
a=10
while a<=75 :
b=p*a/180
u=v0*math.cos(b)
w=v0*math.sin(b)
a += 20
for i in range(0, 7000):
x = 0.03 * i
y = w * x / u - g * x ** 2 / (2 * u ** 2)
canv.create_line(100 + 10 * x, 270 - 10 * y, 100 +
10 * x + 1, 270 - 10 * y + 1, fill='red')
canv.create_text(160,250,text="a=10",fill='black',
font=('Times', 14))
canv.create_text(230,200,text="a=30",fill='black',
font=('Times', 14))
canv.create_text(240,140,text="a=50",fill='black',
font=('Times', 14))
canv.create_text(200,80,text="a=70",fill='black',
font=('Times', 14))
canv.pack()
root.mainloop()
Осы программаны Python программасына енгізіп, жасыл орындау
батырмасын басып, есептеу нәтижесін алайық:
Бұрыштарды 200 градус сайын есептеу программада шарты алдын ала
белгілі While циклімен ұйымдастырылды.
While циклінің жазылу құрылымы мынадай:
While Шарт : While одан кейін шарт тексеріледі. Егер
1оператор немесе шарт ақиқат болса, онда нұсқау
өрнек орындалады. While циклі шарт ақиқат
........... болып тұрғанша орындалады, ал шарт
n оператор немесе жалған болған кезде while циклі өз
өрнек жұмысын тоқтатады.
Траекторияның нүктелерін сызуға айнымалысы өсіп отыратын FOR
санағышы қолданылды.
for одан кейін санағыш айнымалысына 1
for i in range(1, 10): санын, алғашқы мәнін меншіктейміз. Oдан
1оператор немесе кейін айнымалының соңғы мәні 10,
өрнек арасындағы нұсқау орындалады. Нұсқау
........... i:=10 болғанша орындалады. Есте
n оператор немесе сақтаңыз! Санағыш айнымалысының түрі
өрнек барлық кезде int!!!
Траекторияның тіктелу бұрышын зерттейік. Ол үшін 300 пен 600-қа
дейінгі бұрыштарды алып, әрбір 150 сайын траектория тұрғызайық.
Python тіліндегі программасы
import math
from tkinter import *
root =Tk()
canv = Canvas(root, width = 500, height = 550, bg = "white")
canv.create_line(0,240, 500,240,width=2,arrow=BOTH)#x
canv.create_line(100,0,100,500,width=2,arrow=BOTH)#y
canv.create_text(450,250,text="x",fill='black', font=('Times',
14))
canv.create_text(80,10,text="y",fill='black', font=('Times',
14))
g=9.8
v0=20
p=3.14
a=30
while a<=60 :
b=p*a/180
u=v0*math.cos(b)
w=v0*math.sin(b)
a += 15
for i in range(0, 7000):
x = 0.03 * i
y = w * x / u - g * x ** 2 / (2 * u ** 2)
canv.create_line(100 + 10 * x, 240 - 10 * y, 100 + 10 *
x + 1, 240 - 10 * y + 1, fill='red')
canv.create_text(220,180, text="a=30",fill='black',
font=('Times', 14))
canv.create_text(250,135,text="a=45",fill='black',
font=('Times', 14))
canv.create_text(270,80,text="a=60",fill='black', font=('Times',
14))
canv.pack()
root.mainloop()
Графиктен көрініп тұрғандай 300 пен 600-та ұшу қашықтығы тең, ал 450
–та ұшу қашықтығы ең үлкен мәнге ие.
Практикалық сабақ №11. Екінші ретті дифференциалдық теңдеу.
Поездың үдемелі қозғалысы. Жылдамдық.
№ 2.4.10. Поездың үдемелі қозғалысы. Жылдамдық. Тепловоздың
тарту күші 250 кН болғанда массасы 2000 т жүк поезды қозғалыс
басталғаннан бастап 1 мин уақыт өткенде қандай жылдамдыққа ие
болатынын а) үйкелісті ескермей б) ауаның тұтқырлық үйкелісін ескеріп
табыңыздар ( , ).
Берілгені: Шешуі: 1) үйкелісті ескермеген кезде Ньютонның
ІІ заңы бойынша
. (1)
1)
2) , a
FT
немесе
.
2) ауаның тұтқырлық үйкелісін ескерген кезде Ньютонның ІІ заңы бойынша:
немесе dϑ FT Aϑ Bϑ 3 (1)
(2)-теңдеу dt m m m (2)
= − − .
түрдегі бірінші ретті дифференциалдық теңдеу, ол 4.6 және 4.7 бөлімдерінде
(Бурсиан Э.В. 80-86 бет) келтірілген теңдеулер бойынша былай жазылады:
.
Әуелі деп алып, -ді есептейді, -ның мәнін беріп келесі
-ді табады. Содан кейін -дың орнына -дің мәнін алып, дәл осылай
жаңа -нің мәнін табады, сөйтіп әрі қарай -ның орнына -дің мәнін
алып, дәл осылай жаңа -дің мәнін табады және де жалпы уақытты
қадағалап отыру қажет. Ол -қа тең болғанда, есептеуді
тоқтатып, -ның соңғы мәнін экранға шығару қажет.
Python тіліндегі программасы
T=0; v=0; F=2.5*10**5
A=10**4; B=30; T0=60; T1=1; m=2*10**6
v1=F*T0/m
for i in range(0,60):
v = v + (F / m - A * v / m - B * v ** 3 / m) / T1
T=T+T1
print(' T=',T, 'с',' 1) үйкелісті ескермеген кезде
v1=',round(v1, 3), 'м/с')
print(' T=',T, 'с',' 2) үйкелісті ескергенде v=',round(v, 3),
'м/с')
Программалау нәтижесі:
T= 60 с 1) үйкелісті ескермеген кезде v1= 7.5 м/с
T= 60 с 2) үйкелісті ескергенде v= 6.433 м/с
Сонымен, алғашқы 1 минуттағы қозғалыс кезіндегі жылдамдықтардың
айырмашылығы айтарлықтай көп емес. Ал 20 минуттан кейін жылдамдық
қалай өзгеретінін Т0=1200 с деп өзгертіп есептеп көруге болады.
Python тілінде программасы
T=0; v=0; F=2.5*10**5
A=10**4; B=30; T0=1200; T1=1; m=2*10**6
v1=F*T0/m
for i in range(0,T0):
v = v + (F / m - A * v / m - B * v ** 3 / m) / T1
T=T+T1
print(' T=',T, 'с',' 1) үйкелісті ескермеген кезде v1=',round(v1, 3),
' м/с')
print(' T=',T, 'с',' 2) үйкелісті ескергенде v=',round(v, 3), ' м/с')
Программалау нәтижесі:
T= 1200 с 1) үйкелісті ескермеген кезде v1= 150.0 м/с
T= 1200 с 2) үйкелісті ескергенде v= 14.959 м/с
Программалау нәтижесінен көрініп тұрғандай үйкелісті ескермеген және
үйкелісті ескерген кездегі жылдамдықтардың айырмашылығы өте көп, яғни
нақты есептеулерде үйкелісті міндетті түрде ескеру қажет. Жуықтап
есептеулерде үйкелісті жоқ деп болжауға бола ма? Жоқ, болмайды.
Практикалық сабақ №12 Екінші ретті дифференциальдық теңдеу
Python программалау тілі арқылы шешу. Дененің ауада құлауы есебі
және графигі
№2.4.8. Дененің ауада құлауы. Массасы дене биіктіктен
ауада құлайды. Ауаның кедергі күші , мұндағы және
коэффициенттері дененің өлшемдерімен анықталады. Айталық,
коэффициенттер мына мәндерге тең болсын: , ).
Жылдамдықтың құлау басталғаннан кейінгі уақытқа тәуелділігін
табыңыздар. График сызыңыздар.
Шешуі. Қозғалыс теңдеуі:
(1)
(4.7)-бөлімнің теңдеулеріне келтіреміз:
; (2)
; (3)
(4)
;
.
Соңғы (2), (3), (4)-формулалар программаның негізін құрайды.
Python тілінде программасы
print('Ауада дененің құлауы есебі')
t=0; v=0; x=0;A=5;B=10**-2; M=70; g=9.8; t1=0.1;
for j in range(0,15):
for i in range(0,10):
v=v+(g-(A*v+B*v**3)/M)*t1
x=x+v*t1
t=t+t1
print('t=',round(t,2),'c ' ,'v=',round(v,2), 'м/с '
,'x=', round(x,2),'м') x= 5.27 м
x= 19.5 м
Программалау нәтижесі: x= 41.37 м
Ауада дененің құлауы есебі x= 69.08 м
t= 1.0 c v= 9.47 м/с x= 100.73 м
x= 134.76 м
t= 2.0 c v= 17.93 м/с x= 170.14 м
x= 206.24 м
t= 3.0 c v= 24.82 м/с x= 242.72 м
x= 279.4 м
t= 4.0 c v= 29.78 м/с x= 316.17 м
x= 353.0 м
t= 5.0 c v= 32.93 м/с x= 389.85 м
x= 426.72 м
t= 6.0 c v= 34.77 м/с x= 463.59 м
t= 7.0 c v= 35.78 м/с
t= 8.0 c v= 36.31 м/с
t= 9.0 c v= 36.59 м/с
t= 10.0 c v= 36.73 м/с
t= 11.0 c v= 36.8 м/с
t= 12.0 c v= 36.84 м/с
t= 13.0 c v= 36.86 м/с
t= 14.0 c v= 36.87 м/с
t= 15.0 c v= 36.87 м/с
Осы нәтижені енді график түрінде бейнелеу қажет. Нәтижелерден
көрініп тұрғандай 11 ...15 с уақыттарда жылдамдық тұрақталған.
Python тілінде программасы
print('Ауада дененің құлауы есебі')
from tkinter import*
root=Tk()
canvas=Canvas(root, width = 500, height = 400, bg = "white")
canvas.create_line(0,250,500,250,width=2,arrow=LAST) #ox
canvas.create_line(50,500,50,0,width=2,arrow=BOTH) #oy
canvas.create_line(80,245,80,260,width=1);
canvas.create_line(40,17,55,17,width=1);
canvas.create_text(80,270,text='1');
canvas.create_line(110,245,110,260,width=1);
canvas.create_line(45,34,55,34,width=1);
canvas.create_text(110,270,text='2')
canvas.create_line(140,245,140,260,width=1);
canvas.create_line(40,51,55,51,width=1);
canvas.create_text(140,270,text='3')
canvas.create_line(170,245,170,260,width=1);
canvas.create_line(45,67,55,67,width=1);
canvas.create_text(170,270,text='4')
canvas.create_line(200,245,200,260,width=1);
canvas.create_line(40,83,55,83,width=1);
canvas.create_text(200,270,text='5')
canvas.create_line(230,245,230,260,width=1);
canvas.create_line(45,100,55,100,width=1);
canvas.create_text(230,270,text='6');
canvas.create_text(35,100,text='29')
canvas.create_line(260,245,260,260,width=1);
canvas.create_line(40,117,55,117,width=1);
canvas.create_text(260,270,text='7')
canvas.create_line(290,245,290,260,width=1);
canvas.create_line(45,133,55,133,width=1);
canvas.create_text(290,270,text='8');
canvas.create_line(320,245,320,260,width=1);
canvas.create_line(40,150,55,150,width=1);
canvas.create_text(320,270,text='9');
canvas.create_line(350,245,350,260,width=1);
canvas.create_line(45,166,55,166,width=1);
canvas.create_text(350,270,text='10');
canvas.create_line(380,245,380,260,width=1);
canvas.create_line(40,182,55,182,width=1);
canvas.create_text(380,270,text='11');
canvas.create_line(410,245,410,260,width=1);
canvas.create_line(45,199,55,199,width=1);
canvas.create_text(410,270,text='12');
canvas.create_text(35,199,text='9')
canvas.create_line(440,245,440,260,width=1);
canvas.create_line(40,216,55,216,width=1);
canvas.create_text(440,270,text='13');
canvas.create_line(470,245,470,260,width=1);
canvas.create_line(45,233,55,233,width=1);
canvas.create_text(470,270,text='14');
canvas.create_text(490,270,text='t,c');
canvas.create_text(25,15,text='v,м/с');
t=0; v=0; x=0;A=5;B=10**-2; M=70; g=9.8; t1=0.1;
for j in range(0,15):
for i in range(0,10):
v=v+(g-(A*v+B*v**3)/M)*t1
canvas.create_line(round(30 * t) + 50, 250 - round(5 *
v), round(30 * t) + 50 + 1, 250 - round(5 * v) + 1,
fill='red',width=2)
x=x+v*t1
t=t+t1
print('t=',round(t,2),'c ' ,'v=',round(v,2), 'м/с '
,'x=', round(x,2),'м')
canvas.pack()
root.mainloop()
Программалау нәтижесі: