The Nature of Code閱讀心得與Python實作:2.1 Forces and Newton's...

更新於 發佈於 閱讀時間約 7 分鐘
這一節的標題是
2.1 Forces and Newton's Laws of Motion
因為方格子標題字數限制,所以沒完整顯現

根據牛頓的三大運動定律,力可以定義成

力是會導致有質量的物體加速的向量

這個關於力的定義的重點,就在於「向量」這兩個字。既然力是向量,那第一章介紹的關於向量的觀念,以及寫程式時用到的工具、技巧,都可以拿來使用。

接下來,就來看看牛頓的三大運動定律,以及程式寫法。

Newton's First Law

牛頓第一運動定律說的是:

物體不受力或合力為零時,靜者恆靜;動者恆做等速直線運動

也就是說,物體如果沒有受到力的作用,或者作用在身上的力都互相抵銷了,那它的速度和運動方向就不會改變。從這裡可以看出來,根據第一運動定律,物體有維持原運動狀態的傾向,所以第一運動定律又叫「慣性定律」。

根據第一運動定律,在模擬的時候,如果作用在物體的合力為零,那物體的速度向量就會維持不變。換句話說,除非是在合力不為零的情況下,否則Mover類別的update()方法中,是不應該用任何數學運算來改變velocity這個向量的。

Newton's Third Law

接下來,先來看第三運動定律,然後再回過頭來看第二運動定律。

第三運動定律說的是:

對於每一個作用力,都會有一個大小相同方向相反的反作用力

根據第三運動定律,當你推一堵牆的時候,會有一股大小相同的反作用力作用在你身上。不過,這並不是說這堵牆因為不爽被你推,所以主動回擊,也推你一把;第三運動定律真正的意思是,當你出力推那堵牆時,你的力量包含了作用力及反作用力這兩股成對的力量。

第三運動定律原先的敘述容易引起誤解,改用下面的敘述方式應該會比較好一些:

作用力和反作用力總是成雙成對的出現,它們的大小相同,但方向相反。

看到「大小相同方向相反」,可別以為成對出現的力會互相抵銷,導致合力為零;這裡要注意的是,作用力和反作用力,它們的作用對象不同,所以不會互相抵銷。當你推牆的時候,一股力是作用在牆上,另一股力則是作用在你身上。

雖然作用力和反作用力的大小相同,但這並不代表它們對兩個物體在運動方面的影響是一樣的。例如,把一顆球丟向牆壁。雖然作用在牆壁和球的力量相等,但牆壁不動如山,而球則反彈回來。作用力和反作用力究竟會對物體的運動造成怎樣的影響,還得考慮物體的質量、摩擦力等等其他的因素才能知道。

因為作用力和反作用力的大小相同而方向相反,所以在寫程式時,如果物體A作用在物體B的力量是f時,那反作用力,也就是物體B作用在物體A的力量,就會是-f。所以,如果是要模擬兩個物體間的萬有引力,當其中一個物體受到萬有引力f的作用時,另一個物體就會受到-f的作用力。

雖然作用力和反作用力總是同時出現,不過,畢竟我們只是利用自然界的物理定律來建造虛擬的世界,而不是真的要鉅細靡遺精準地重現真實世界,所以有時候我們並不會去管反作用力的部分。例如,當我們在模擬環境中的風時,就不會去管當風吹在物體上時,施加在空氣上的反作用力,畢竟我們要模擬的是風對物體所造成的影響,而不是去模擬空氣受力之後的反應。

Newton's Second Law

牛頓第二運動定律說的是

力等於質量乘上加速度

寫成數學式就是

F = ma

其中F是力;m是物體的質量;a是加速度。

從牛頓第二運動定律的數學式可以看出來,加速度和作用力成正比,而和物體的質量成反比。所以,如果去推一顆籃球,用的力量越大,球滾動的加速度會越大;如果用相同的力量去推一顆比籃球重得多的鉛球,那鉛球滾動的加速度,將會比籃球小得多。

在上面那段敘述中提到:當用相同的力量去推一顆比籃球重得多的鉛球時,由牛頓第二運動定律可以知道,籃球的加速度會比鉛球大。這其實是一般通俗不精確,把「重量(weight)」和「質量(mass)」當成同一件事的說法。「重量」和「質量」其實是兩種不同的物理量,在牛頓第二運動定律中用的是「質量」,而不是「重量」。

重量和質量是不同的物理量,那它們之間有什麼不一樣呢?簡單來說,質量是用來衡量物體含有多少物質的量,單位是公斤(kg);而重量則是重力作用在物體上的力量,是一種力,單位是牛頓(N)。由牛頓第二運動定律,物體的重量w,等於物體的質量m,乘上重力加速度g,也就是

w = mg

在地球上,1公斤質量的物體,其重量也稱為1公斤重,記為1 kgw。因此,當一般在說某個東西有多重時,因為我們就在地球上,所以不管是把它理解為指的是重量或質量,並不會有什麼不同。然而,如果不是在地球上,那同一個物體的質量和重量,就不見得會一樣。一個物體的質量不會因地點不同而不同,但在不同的地點,因為重力不同的關係,重量可能會不一樣。例如,具一公斤質量的物體,不管是在地球還是月球,質量都是一公斤;但是在月球上,因為重力只有地球的六分之一,所以這個物體的重量,只有在地球時的六分之一。

前面提到質量在真實世界中的定義,那在模擬的世界中,質量是什麼呢?寫程式的時候,又該如何處理質量這個物理量呢?在這節中,我們先把問題簡化,假設在模擬世界中,所有物體的質量都是1,然後在之後的小節中再來看看,物體的質量不是1時該怎麼辦。

因為質量是1,所以由牛頓第二運動定律

a = F / m = F / 1 = F

也就是說,經過簡化之後的模擬世界,物體的加速度和施加於其上的力是相等的。

在第一章中,我們知道了物體的加速度、速度、位置間的關係,也就是

velocity += acceleration
position += velocity

現在再加上作用力和加速度間的關係,也就是

acceleration = force

所以,力可以說是讓物體得以運動的源頭。

既然物體的加速度和施加於其上的力是相等的,我們可以在Mover這個類別加入一個apply_force()方法,用來施加力量給物件。例如

mover.apply_force(wind)
mover.apply_force(gravity)

這裡的windgravity都是pygame.Vector2物件。這個施加力量給物件的方法,實作如下:

def apply_force(self, force):
self.acceleration = force

這樣子所實作出來的apply_force(),看起來挺不賴的,但卻會有個大問題。假設現在有windgravity兩股力量同時作用在mover這個Mover類別的物件上,程式很自然會這樣寫

mover.apply_force(wind)
mover.apply_force(gravity)
mover.update()
mover.show()

前兩二行程式所做的事情,就相當於是

mover.acceleration = wind
mover.acceleration = gravity

我們原本是希望windgravity同時都作用在mover上,但很不幸的,這樣子寫,最後卻只有gravity會作用在mover上;這是因為,本來一開始有作用的wind,在後來被gravity給取代掉了。

很顯然的,上述的寫法,沒辦法處理有許多個力同時作用的情況。那該怎麼辦呢?下一節見分曉。



avatar-img
15會員
131內容數
寫點東西自娛娛人
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
ysf的沙龍 的其他內容
這一章介紹的是力(force),以及力與加速度間的關係。
介紹以物件導向的方式,以向量來實作物體運動的模擬程式。
介紹如何在模擬物體運動時,引入加速度這個物理量。
介紹pygame支援的向量運算,以及向量的減法、乘法、除法實際上是怎麼計算的。
這一章介紹的是力(force),以及力與加速度間的關係。
介紹以物件導向的方式,以向量來實作物體運動的模擬程式。
介紹如何在模擬物體運動時,引入加速度這個物理量。
介紹pygame支援的向量運算,以及向量的減法、乘法、除法實際上是怎麼計算的。
你可能也想看
Google News 追蹤
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
《#我是運科竹:每週閱讀一段運動科學相關文獻,強化#英文閱讀理解力以及 #運動科學相關知識》 https://youtube.com/shorts/OeK2qvN_lVA?feature=share https://www.youtube.com/watch?v=OeK2qvN_l
Thumbnail
《#我是運科竹:每週閱讀一段運動科學相關文獻,強化#英文閱讀理解力以及 #運動科學相關知識》 如果想瞭解更多或者覺得今天的內容很實用的話,請幫我按讚分享!或是到Youtube以及Podcast:【我是運科竹】的頻道來進行訂閱喔!
Thumbnail
1.0 從函數到函算語法 1.2 函數概念小史 1.2.1 中譯的來源 1.2.2 一個速度問題 1.2.3 幾何的方法 1.2.4 微積分的記法  二 前面說過,牛頓關心的不是抽象的數學問題,他要解決的是天體運動的問題。他知道,假如他擁有該天體在任何一刻的瞬速數據,他便能夠從質量
Thumbnail
直觀理解 導數:考慮的是單一變數的函數,描述的是函數在某點的斜率或變化率。 偏導數:考慮的是多變數函數,描述的是函數在某個變數變化時的變化率,其他變數保持不變。  (針對各維度的調整 或者稱變化 你要調多少) 應用 導數:在物理學中應用廣泛,例如描述速度和加速度。 偏導數:在多變量分析、優
Thumbnail
《#我是運科竹:每週閱讀一段運動科學相關文獻,強化#英文閱讀理解力以及 #運動科學相關知識》 https://youtu.be/fYddHB1zPLU?si=KfKjZ70bzajEb3T3 https://www.youtube.com/watch?v=fYddHB1zPLU
Thumbnail
【一天一千字,進化每一次】第七週回覆心得與感謝文 (下)
物理學是統計歸納自然界的規律所成的一門學問,所以叫自然科學。因為很多現象都有規律可預測,因此就能成為定律,例如牛頓三大運動定律。 社會科學是統計歸納人類行為的規律所成的一門學問,因為對象是人,所以往往會有不符合規律的情形發生,所以社會科學很難預測,例如股票何時會恐慌出現賣壓……
Thumbnail
前言 科學革命是如何發生的呢?從地心說到日心說、從牛頓力學到愛因斯坦相對論與量子力學,是什麼使得科學不斷進步呢?又是什麼使得科學產生出新的信念(commitments)呢?《科學革命的結構》從科學哲學的角度,提出科學革命的核心概念─「典範移轉」;科學隨著典範(paradigms)的移轉
Thumbnail
在中學物理課程裡,大多學生認為“力學”是最難的課題,這是因為它包含有比較多的抽象概念和常常需應用不同的數學技巧。 力學是物理學的一個分支,主要研究能量和力以及它們與物體的平衡、變形或運動的關係。  「“牛頓定律”被認為是力學的最重要理論,我們在這裡簡單介紹它的三條定律。」
Thumbnail
★一個簡單的意念,就足以轉化物質世界!
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
《#我是運科竹:每週閱讀一段運動科學相關文獻,強化#英文閱讀理解力以及 #運動科學相關知識》 https://youtube.com/shorts/OeK2qvN_lVA?feature=share https://www.youtube.com/watch?v=OeK2qvN_l
Thumbnail
《#我是運科竹:每週閱讀一段運動科學相關文獻,強化#英文閱讀理解力以及 #運動科學相關知識》 如果想瞭解更多或者覺得今天的內容很實用的話,請幫我按讚分享!或是到Youtube以及Podcast:【我是運科竹】的頻道來進行訂閱喔!
Thumbnail
1.0 從函數到函算語法 1.2 函數概念小史 1.2.1 中譯的來源 1.2.2 一個速度問題 1.2.3 幾何的方法 1.2.4 微積分的記法  二 前面說過,牛頓關心的不是抽象的數學問題,他要解決的是天體運動的問題。他知道,假如他擁有該天體在任何一刻的瞬速數據,他便能夠從質量
Thumbnail
直觀理解 導數:考慮的是單一變數的函數,描述的是函數在某點的斜率或變化率。 偏導數:考慮的是多變數函數,描述的是函數在某個變數變化時的變化率,其他變數保持不變。  (針對各維度的調整 或者稱變化 你要調多少) 應用 導數:在物理學中應用廣泛,例如描述速度和加速度。 偏導數:在多變量分析、優
Thumbnail
《#我是運科竹:每週閱讀一段運動科學相關文獻,強化#英文閱讀理解力以及 #運動科學相關知識》 https://youtu.be/fYddHB1zPLU?si=KfKjZ70bzajEb3T3 https://www.youtube.com/watch?v=fYddHB1zPLU
Thumbnail
【一天一千字,進化每一次】第七週回覆心得與感謝文 (下)
物理學是統計歸納自然界的規律所成的一門學問,所以叫自然科學。因為很多現象都有規律可預測,因此就能成為定律,例如牛頓三大運動定律。 社會科學是統計歸納人類行為的規律所成的一門學問,因為對象是人,所以往往會有不符合規律的情形發生,所以社會科學很難預測,例如股票何時會恐慌出現賣壓……
Thumbnail
前言 科學革命是如何發生的呢?從地心說到日心說、從牛頓力學到愛因斯坦相對論與量子力學,是什麼使得科學不斷進步呢?又是什麼使得科學產生出新的信念(commitments)呢?《科學革命的結構》從科學哲學的角度,提出科學革命的核心概念─「典範移轉」;科學隨著典範(paradigms)的移轉
Thumbnail
在中學物理課程裡,大多學生認為“力學”是最難的課題,這是因為它包含有比較多的抽象概念和常常需應用不同的數學技巧。 力學是物理學的一個分支,主要研究能量和力以及它們與物體的平衡、變形或運動的關係。  「“牛頓定律”被認為是力學的最重要理論,我們在這裡簡單介紹它的三條定律。」
Thumbnail
★一個簡單的意念,就足以轉化物質世界!