22 พฤษภาคม 2559

Published พฤษภาคม 22, 2559 by with 0 comment

หาค่าแรงโน้มถ่วงของโลกด้วย Python

สวัสดีผู้อ่านทุกท่านครับ บทความนี้ผมจะไปผู้อ่านไปคำนวณหาค่าแรงโน้มถ่วงของโลกด้วยภาษา Python กันครับ


คำถามหนึ่งเมื่อเรียนฟิสิกส์ คือ เราจะหาค่า g ของดาวเคราะห์ได้อย่างไร ?
เราสามารถหาค่า g หรือค่าแรงโน้มถ่วงของดาวเคราะห์ได้จาก "กฎความโน้มถ่วงสากลของนิวตัน" หรืออีกชื่อหนึ่งคือ "กฎแรงดึงดูดระหว่างมวล"
กฎความโน้มถ่วงสากลของนิวตัน
G=Gm1m2/r^2
โดย
G คือ แรงดึงดูดระหว่างมวล (N)
G = 6.673*10^11 Nm^2/kg^2
G คือ ค่านิจโน้มถ่วงสากล
m1 คือ มวลดาวเคราะห์ที่ 1 (kg)
m2 คือ มวลดาวเคราะห์ที่ 2 (kg)
r คือ ระยะห่างระหว่างมวล (m)

แต่เนื่องจากเราต้องการหาแค่หา g ของแรงโน้มถ่วงของโลก เราจึงตัด m2 ทิ้งไปเหลือแค่ m เดียว ได้สูตรเป็น
g = Gm/r^2
หากเรารู้ค่ารัศมีของโลกนับจากจุดศูนย์กลาง และ มวลของโลก เราก็สามารถใช้สูตรนี้หาค่า g ของโลกได้ แต่นักวิทยาศาสตร์สามารถหาค่ารัศมีของโลกกับค่ามวลของโลกได้อย่างไร ?

  • การหาค่ารัศมีของโลก นักคณิตศาสตร์ชาวกรีก ชื่อ Eratosthenes เป็นผู้หาค่ารัศมีของโลกได้สำเร็จเป็นคนแรก โดยใช้หลักทางคณิตศาสตร์เข้ามาช่วย อ่านได้ที่ http://www.vcharkarn.com/vcafe/10474

  • การหาค่ามวลของโลก มีหลากหลายวิธี แต่ขอยกวิธีที่น่าสนใจมา นั่นคือ วิธีหาค่ามวลของโลก ถ้าหากเรารู้ระยะห่างของดวงจันทร์จากโลกและความยาวของเดือนจันทรคติ อ่านได้ที่ http://image.gsfc.nasa.gov/poetry/ask/a10448.html

จากที่เรารู้กัน ทางธรณีวิทยา แผ่นดินแต่ละแห่งของโลกจะยกตัวสูงต่ำไม่เท่ากัน ทำให้รัศมีจากจุดศูนย์กลางแกนโลกไม่เท่ากัน จึงทำให้ค่า g ไม่เท่ากัน เนื่องจากนั้น และสภาพภูมิประเทศกับภูมิอากาศไม่เหมือนกันเนื่องจากความสูงไม่เท่ากัน ส่วนนี้ผมจึงขอยึดตามข้อมูลของนาซ่าเป็นหลักครับ
หาค่าแรงโน้มถ่วงของโลกด้วยภาษา Python โลก

รายละเอียดของโลกจากนาซ่า http://nssdc.gsfc.nasa.gov/planetary/factsheet/earthfact.html

เมื่อได้ค่าที่ต้องการแล้ว ก่อนลงมือเขียนโค้ด ผมขอแนะนำโมดูล quantities ก่อนครับ




โมดูล quantities เป็นโมดูลสำหรับจัดการเรื่องหน่วยทางฟิสิกส์
รองรับทั้ง Python 2 และ Python 3
ใช้ BSD License

สามารถติดตั้งได้โดยใช้คำสั่ง pip :
pip3 install quantities

อ่านเอกสารการใช้งานโมดูล quantities ได้ที่ http://python-quantities.readthedocs.io/




ทำไมต้องใช้โมดูล quantities เข้ามาใส่หน่วยอะไรให้ยุ่งยากด้วย ?
เนื่องจากฟิสิกส์เป็นวิชาที่ใช้หน่วยในการกำกับข้อมูล หากไม่ให้หน่วยอาจทำให้สับสนค่าของข้อมูลในภายหลังได้ เพื่อปกป้องปัญหานี้ ผมจึงนำโมดูล quantities มาใช้งานร่วมด้วย

นำข้อมูลมาเขียนโค้ดได้ดังนี้
from math import pow
import quantities as pq
mass = 5.9723*pow(10,24) * pq.kg
r = 6378.137*pow(10,3) * pq.meter
G = 6.673*pow(10,11) * pq.N*pq.meter**2/ (pq.kg**2)
g = G*mass/r**2
print(g)

ผลลัพธ์

9.796592712941858e+22 N/kg

ประมาณ 9.8 N/kg หรือ 9.8 m/s^2
ทำไมถึงผลลัพธ์ถึงไม่ใช่ m/s^2
หน่วย m/s^2 สามารถเขียนเป็นหน่วย N/kg ได้ โดยมีค่าเท่ากัน
อ้างอิง https://www.quora.com/Can-9-8m-s-2-also-be-written-as-9-8N-kg

เอกสารแนะนำเพิ่มเติม


ติดตามบทความต่อไปนะครับ
ขอบคุณครับ

0 ความคิดเห็น:

แสดงความคิดเห็น

แสดงความคิดเห็นได้ครับ :)