ძირითადი მასალა
კომპიუტერული პროგრამირება
კურსი: კომპიუტერული პროგრამირება > თემა 5
გაკვეთილი 5: ძალები- ნიუტონის მოძრაობის კანონები
- გამოწვევა: საჰაერო ბუშტი
- ბევრი ობიექტის მოძრაობა
- გამოწვევა: კედელთან ბურთის თამაში
- გრავიტაციისა და ხახუნის ილუსტრაცია
- გამოწვევა: სიჩქარის შესამცირებელი ზღუდეები ქუჩაში
- ჰაერისა და სითხის წინაღობა
- გამოწვევა: ჩაძირული მორები
- გრავიტაციული მიზიდულობა
- გამოწვევა: ხელოვნების ნიმუშის შექმნა
- ორმხრივი მიზიდულობა
- გამოწვევა: ორმხრივი განზიდულობა
- პროექტი: არსებების კომფორტი და ცახცახი
© 2023 Khan Academyგამოყენების პირობებიკონფიდენციალურობის პოლიტიკაშენიშვნა ქუქი-ჩანაწერებზე
გრავიტაციისა და ხახუნის ილუსტრაცია
ახლა ვეცადოთ, რეალობას მეტად მივუახლოვოთ ჩვენი ძალები. ამისათვის გავაუმჯობესოთ ბოლო მაგალითის გრავიტაცია და შემოვიღოთ ხახუნის ძალა.
გრავიტაცია დედამიწაზე
ალბათ, შეამჩნევდით ბოლო მაგალითის უზუსტობას. რაც უფრო პატარაა წრე, მით უფრო სწრაფად ვარდება ის. ამას ლოგიკური ახსნა აქვს; ჩვენ ხომ მივუთითეთ (ნიუტონის მეორე კანონის თანახმად), რომ რაც უფრო მცირეა მასა, მით უფრო მაღალია აჩქარება.
მაგრამ რეალურ სამყაროში ასე არ ხდება. თუ პიზის დახრილი კოშკის სახურავზე ახვალთ და სხვადასხვა მასის ორ ბურთს ჩამოაგდებთ, რომელი დაეცემა მიწაზე პირველად? ლეგენდის თანახმად, გალილეომ სწორედ ეს ტესტი ჩაატარა 1589 წელს და ნახა, რომ ისინი თანაბარი აჩქარებით ვარდებოდნენ, შესაბამისად, მიწაზე ერთდროულად დაეცნენ.
რატომ ხდება ასე? როგორც ამ კურსში მოგვიანებით ვნახავთ, გრავიტაციის ძალა გამოითვლება ობიექტის მასასთან მიმართებით. რაც უფრო დიდია ობიექტი, მით უფრო ძლიერია ძალა. ასე რომ, თუ ძალა მასის მიხედვით არის „სკალირებული", მასა ბათილდება, როცა ძალა იყოფა მასაზე. ამის ჩვენს პროგრამაში იმპლემენტაცია შეგვიძლია ჩვენ მიერ გამოგონილი აჩქარების (გრავიტაციის გამო) მასაზე გამრავლებით:
for (var i = 0; i < movers.length; i++) {
gravity.set(0, 0{,}1 * movers[i].mass);
movers[i].applyForce(gravity);
…
}
ახლა ობიექტები თანაბარი ტემპით ვარდებიან, მაგრამ ვინაიდან ქარის ძალა მასისგან დამოუკიდებელია, პატარა ობიექტები მაინც უფრო სწრაფად ჩქარდებიან მარჯვნივ.
ძალების შექმნა საკმაოდ შორს წაგვიყვანს. ProcessingJS-ის სამყარო არის პიქსელების წარმოსახვითი სამყარო და თქვენ მისი ბატონი ხართ. ამიტომ, ყველაფერი, რასაც ადეკვატურ ძალად ჩათვლით, ძალა იქნება. მიუხედავად ყველაფრისა, შეიძლება, დადგეს დრო, როცა იკითხავთ: „მაგრამ რეალურად როგორ მუშაობს ეს ყოველივე?“
გადაშალეთ სასკოლო ფიზიკის ნებისმიერი წიგნი და იხილავთ დიაგრამებსა და ფორმულებს, რომლებიც აღწერენ სხვადასხვა ძალებს — გრავიტაციას, ელექტრომაგნეტიზმს, ხახუნს, დაჭიმულობას, დრეკადობას და სხვა. ან, ჰეი, მოძებნეთ ფიზიკის გაკვეთილები ხანის აკადემიაზე. ამ სექციაში განვიხილავთ ამ ძალებიდან 2-ს — ხახუნსა და გრავიტაციას. აქ ჩვენი მიზანი არ არის იმის ჩვენება, რომ ხახუნი და გრავიტაცია ფუნდამენტური ძალებია და თქვენ ყოველთვის უნდა იქონიოთ ისინი თქვენს ProcessingJS-ის პროგრამებში. ჩვენ გვინდა, რომ ამ ძალების გამოთვლა გამოვიყენოთ შემდეგი პროცესისთვის:
- ძალის უკან არსებული კონცეფციის გააზრება
- ძალის ფორმულის ორ ნაწილად დაყოფა:
- როგორ გამოვთვალოთ ძალის მიმართულება?
- როგორ გამოვთვალოთ ძალის სიდიდე?
- ამ ფორმულის ProcessingJS კოდად ჩაწერა, რომელიც გამოთვლის
PVector
-ს, რომელსაც ვაგზავნით ჩვენიMover
-ისapplyForce()
ფუნქციით.
თუ ზემოთ მოცემულ ნაბიჯებზე მიყოლა შეგვიძლია ორი ძალისთვის, მაშინ, იმედია, თუ ოდესმე Google-ის საძიებო სისტემაში მოგიწევთ „ატომური ბირთვის სუსტი ბირთვული ძალის“ ჩაწერა ღამის 3 საათზე, გექნებათ საკმარისი უნარი იმისათვის, რომ ProcessingJS-ის კოდად აქციოთ ის, რასაც იპოვით.
ფორმულებთან გამკლავება
კარგი, ძალიან მალე დავწერთ ფორმულას ხახუნისთვის. ამ კურსში პირველად არ ვხედავთ ფორმულას; ახლახან მოვრჩით ნიუტონის მეორე კანონის განხილვას, F, with, vector, on top, equals, M, times, A, with, vector, on top (ან ძალა = მასა * აჩქარება). ჩვენ დიდი დრო არ დაგვიხარჯავს ამ ფორმულაზე, რადგან ის მარტივი და ლამაზია. თუმცა, რეალური სამყარო კომპლექსურია. უბრალოდ შეხედეთ „ნორმალური" განაწილების განტოლებას, რომელიც შესავალში გავიარეთ (ფორმულაზე შეხედვის გარეშე).
აქ ვხედავთ, რომ ფორმულებს უყვართ ბევრი სიმბოლოს გამოყენება (ხშირად გამოიყენება ასოები ბერძნული ანბანიდან). შევხედოთ ხახუნის ფორმულას.
თუ დიდი ხანია, რაც მათემატიკის ან ფიზიკის ფორმულებისთვის არ შეგიხედავთ, მაშინ 3 მნიშვნელოვანი რამ უნდა გავიაროთ, სანამ გავაგრძელებთ.
- გამოთვალეთ მარჯვენა მხარე, მიანიჭეთ მარცხენას. ეს ზუსტად ისეა, როგორც კოდში! აქ ჩვენ გამოვთვლით განტოლების მარჯვენა მხარეს და მიღებულ მნიშვნელობას მივანიჭებთ მარცხენას. ზემოთ მოცემულ შემთხვევაში ჩვენ უნდა გამოვთვალოთ ხახუნის ძალა — მარცხენა მხარე გვეუბნება, რისი გამოთვლა გვსურს, და მარჯვენა მხარე გვეუბნება, როგორ უნდა ვქნათ ეს.
- ვექტორულ სიდიდეზე ვსაუბრობთ თუ სკალარულზე? ჩვენთვის მნიშვნელოვანია, გავიაზროთ, რომ ზოგ შემთხვევაში საქმე გვექნება ვექტორულ სიდიდესთან, სხვა შემთხვევებში — სკალარულთან. მაგალითად, ამ შემთხვევაში ხახუნის ძალა არის ვექტორი. ამას აღნიშნავს სიტყვა „ხახუნის" (ინგლ. Friction) ზემოთ არსებული ისარი. მას გააჩნია მნიშვნელობა და მიმართულება. განტოლების მარჯვენა მხარესაც აქვს ვექტორი, ამაზე მიუთითებს სიმბოლო v, with, hat, on top, რომელიც ამ შემთხვევაში აღნიშნავს სიჩქარის ერთეულოვან ვექტორს.
- როდესაც სიმბოლოები ერთმანეთის გვერდით არის დასმული, ვგულისხმობთ მათ ერთმანეთზე გამრავლებას. ზემოთ მოცემულ ფორმულას 4 ელემენტი აქვს:
-1
, µ, N და v, with, hat, on top. ჩვენ გვსურს მათი ერთმანეთზე გამრავლება და ფორმულის შემდეგნაირად წაკითხვა: F, r, i, c, t, i, o, n, with, vector, on top, equals, minus, µ, N, v, with, hat, on top
ხახუნი
დავიწყოთ ხახუნით და მივყვეთ ჩვენს ნაბიჯებს.
ხახუნი არის დისიპაციური ძალა. დისიპაციური ძალა არის ძალა, რომელშიც სისტემის ჯამური ენერგია მცირდება, როცა ობიექტი მოძრაობაშია. ვთქვათ, მანქანას ატარებთ. როდესაც ფეხს მუხრუჭის სატერფულს აჭერთ, მანქანის მუხრუჭები იყენებენ ხახუნს, რათა შეანელონ ბორბლების მოძრაობა. კინეტიკური ენერგია (მოძრაობა) გარდაიქმნება თერმულ ენერგიად (სითბოდ). როდესაც ორი ზედაპირი ერთმანეთს ეხება, ისინი განიცდიან ხახუნს. ხახუნის სრული მოდელი შეიცავს ცალკეულ შემთხვევებს უძრაობის ხახუნისთვის (სხეული, რომელიც უძრავია ზედაპირის მიმართ) და მოძრაობის ხახუნისთვის (სხეული, რომელიც მოძრაობს ზედაპირის მიმართ), მაგრამ ჩვენი მიზნებისთვის განვიხილავთ მხოლოდ მოძრაობის ხახუნის შემთხვევას.
აი, ხახუნის ფორმულა ილუსტრაციასთან ერთად:
ახლა ჩვენზეა დამოკიდებული ამ ფორმულის ორ კომპონენტად დაყოფა, რომლებიც გამოთვლიან ხახუნის ძალის მიმართულებასა და სიდიდეს. ზემოთ მოცემული დიაგრამის მიხედვით, ვხედავთ, რომ ხახუნი მიმართულია სიჩქარის საპირისპიროდ. ეს ფორმულის ის ნაწილია, რომელიც ამბობს minus, 1, times, v, with, hat, on top, ანუ -1 გამრავლებული სიჩქარის ერთეულოვან ვექტორზე. ProcessingJS-ში ეს ნიშნავს სიჩქარის ვექტორის აღებას, მის ნორმალიზებასა და -1-ზე გამრავლებას.
var friction = velocity.get();
friction.normalize();
// გავარკვიოთ ხახუნის ძალის მიმართულება
// (სიჩქარის საპირისპიროდ მიმართული ერთეულოვანი ვექტორი)
friction.mult(-1);
აქ აღვნიშნოთ ორი დამატებითი ნაბიჯი. პირველი, მნიშვნელოვანია სიჩქარის ვექტორის ასლის გაკეთება, რადგან არ გვინდა ამ ობიექტის მიმართულების შემთხვევით შეცვლა. მეორე, ვექტორს ვუკეთებთ ნორმალიზებას. ეს იმიტომ, რომ ხახუნის ძალის სიდიდე არ არის დაკავშირებული იმასთან, თუ რამდენად ჩქარა მოძრაობს ის, და ჩვენ გვსურს, დავიწყოთ ხახუნის ვექტორით, რომლის სიდიდეა (სიგრძეა) 1, რათა მისი სკალირება მარტივი იყოს.
ფორმულის მიხედვით, სიდიდე არის mu, times, N. μ, ბერძნული ასო mu (წარმოითქმება „მიუ"), აქ გამოიყენება ხახუნის კოეფიციენტის აღსაწერად. ხახუნის კოეფიციენტი ადგენს, რამდენად ძლიერია ხახუნის ძალა კონკრეტული ზედაპირისთვის. რაც მეტია, მით უფრო ძლიერია ხახუნი; რაც ნაკლებია, მით უფრო სუსტია. ყინულს, მაგალითად, გაცილებით ნაკლები ხახუნის კოეფიციენტი ექნება, ვიდრე, ვთქვათ, ზუმფარის ქაღალდს. ვინაიდან ProcessingJS-ის წარმოსახვით სამყაროში ვართ, შეგვიძლია, ნებისმიერი კოეფეციენტი ავიღოთ იმის მიხედვით, თუ რამდენად ძლიერი ხახუნის სიმულაცია გვსურს.
var c = 0{,}01;
ახლა მეორე ნაწილი:
N
. ეს N
აღნიშნავს ნორმალურ ძალას, მხები ძალა, რომლითაც მოქმედებენ ობიექტები, რომლებიც ერთმანეთს ეხებიან. უფრო კონკრეტულად, ეს არის ამ მხები ძალის მართობული კომპონენტი.წარმოიდგინეთ ავტომობილი, რომელიც გზაზე მიდის. ავტომობილი ქვემოთ აწვება გზას და ნიუტონის მესამე კანონი გვეუბნება, რომ საპასუხოდ გზა ზემოთ აწვება ავტომობილს. ეს არის ნორმალური ძალა. მარტივ მაგალითში, რომელშიც ობიექტი ჰორიზონტალურად მოძრაობს, ნორმალური ძალა უდრის მასის ნამრავლს გრავიტაციულ ძალაზე: F, start subscript, n, end subscript, equals, m, g. ეს ნიშნავს, რომ მსუბუქი სპორტული მანქანა ნაკლები ნორმალური ძალით მოქმედებს და, შესაბამისად, განიცდის ნაკლებ ხახუნს, ვიდრე დიდი ტრაქტორი.
ზემოთ მოცემულ სრიალის დიაგრამაში ობიექტი მოძრაობს ზედაპირზე კუთხურად, ამიტომ ნორმალური ძალის გამოთვლა ცოტა უფრო რთულია, რადგან მისი მიმართულება განსხვავდება გრავიტაციის მიმართულებისგან. მის გამოსათვლელად ჩვენ დაგვჭირდებოდა კუთხეებსა და ტრიგონომეტრიაზე რაღაცების ცოდნა.
ჯერჯერობით ჩვენი მიზანია „საკმარისად კარგი" (და არა — სრულყოფილი) სიმულაციის შექმნა ჩვენი ProcessingJS პროგრამებისთვის. მაგალითად, შეგვიძლია, ხახუნი ვამუშაოთ იმ დაშვებით, რომ ნორმალურ ძალის მნიშვნელობა ყოველთვის ექნება 1-ის ტოლი (ანუ, მისი სიდედა იქნება 1). ამ შემთხვევაში, ჩვენი
N
, უბრალოდ, არის:var normal = 1;
როდესაც შემდეგ სექციაში ტრიგონომეტრიას განვიხილავთ, ხელახლა გადავხედავთ ამ დეტალებს და ჩვენს ხახუნის მაგალითს ცოტა გავართულებთ.
ახლა, ვინაიდან გვაქვს ხახუნის ძალის სიდიდეც და მიმართულებაც, შეგვიძლია, ამ ყველაფერს მოვუყაროთ თავი…
var c = 0{,}01;
var normal = 1;
var frictionMag = c * normal;
var friction = movers[i].velocity.get();
friction.mult(-1);
friction.normalize();
friction.mult(frictionMag);
…და დავამატოთ ის ჩვენს „ძალების“ მაგალითს, სადაც ბევრი ობიექტი მოდის კონტაქტში ქართან, გრავიტაციასთან და ახლა უკვე ხახუნთანაც:
თუ ამ პროგრამას გარკვეული დროის განმავლობაში უყურებთ, შეამჩნევთ, რომ წრეები უფრო და უფრო ნაკლებად მოძრაობენ და შეინიშნება ერთ ადგილთან ახლოს მოძრაობა. ვინაიდან ხახუნი განუწყვეტლივ აწვება ობიექტს მისი მოძრაობის საპირისპირო მიმართულებით, ობიექტი განუწყვეტლივ ნელდება. ეს შეიძლება, გამოსადეგი ტექნიკაც იყოს და პრობლემაც, გააჩნია ჩვენი ვიზუალიზაციის მიზნებს.
ეს „ბუნებრივი სიმულაციების" კურსი ეფუძნება დანიელ შიფმენის წიგნს "კოდის ბუნებას", ის გამოყენებულია ლიცენზიით Creative Commons Attribution-NonCommercial 3,0 Unported License.
გსურთ, შეუერთდეთ დისკუსიას?
პოსტები ჯერ არ არის.