SharedIPython002-Function-Question.ipynbOpen in CoCalc

前一節,用 Python 進行公式的計算。但有時需要反覆使用一個公式,來讓使用者帶入不同數值,我們使用函式的概念:

1. 公式的建立:圓面積

請用 def 建立一個圓面積公式 circ_area(r),並計算半徑為 2, 半徑為 5 的面積。A(r)=π×r2 A(r)=\pi \times r^2

import math
def circ_area(r):
    return math.pi*r**2

print("半徑:%6d %6d %6d" %(2,5,10))
print("面積:%6.2f %6.2f %6.2f" %(circ_area(2), circ_area(5), circ_area(10)))
半徑: 2 5 10 面積: 12.57 78.54 314.16

2. 圓內接正多邊形的面積、周長

圓內接正 nn 邊形的面積公式

area

import math
def inArea(n):
    return n*math.sin(math.pi/n)*math.cos(math.pi/n)
def inPeri(n):
        return n*2*math.sin(math.pi/n)
print("邊數 %6d %6d %6d %6d %6d" %(4,6,12,24,48))
print("面積 %.4f %.4f %.4f %.4f %.4f" %(inArea(4),inArea(6),inArea(12),inArea(24),inArea(48)))
print("周長 %.4f %.4f %.4f %.4f %.4f" %(inPeri(4),inPeri(6),inPeri(12),inPeri(24),inPeri(48)))
邊數 4 6 12 24 48 面積 2.0000 2.5981 3.0000 3.1058 3.1326 周長 5.6569 6.0000 6.2117 6.2653 6.2787

3. 回傳兩個數值的公式:

請定義一個函式 sphere_info ,輸入半徑為 rr ,可得球體的表面與體積,

並用此公式輸出半徑為 1,31,3 的球體表面積與體積資訊:

def sphere_info(r):
    return 4/3*math.pi*r**3 ,  4*math.pi*r**2
print("%8.4f %8.4f" %(sphere_info(1)) )
r = 3.0
print("%8.4f %8.4f" %(sphere_info(r)) )
4.1888 12.5664 113.0973 113.0973

4. 多變數的公式:單擺週期公式

請利用 math.sqrt 來輸入,擺長為 LL, 重力常數為 gg 的單擺週期公式,並計算出 L=0.2,0.8L= 0.2,0.8 的結果

T(L)=2πLg T(L) = 2\pi \sqrt{\dfrac{L}{g}}

def PendulumT(L,g):
    return 2*math.pi*math.sqrt(L/g)
g = 9.8
print("%.4f %.4f" %(PendulumT(0.25,g), PendulumT(1,g)) )
1.0035 2.0071

Ex1(a). BMI 公式

BMI 為衡量體重過胖的標準,若體重為 ww 公斤,身高為 hh 公尺,其 BMI 值如下:

對於一般人 BMI 的值應該介於 18.518.5 \sim 24 之間。

試著輸入身高 170 公分,體重 70 公斤的人的 BMI。

def bmi(weight,height):
    return weight/height**2
print("%6.2f" % bmi(66,1.61))
25.46

Ex1(b). BMI 改進公式

英國數學家崔弗生(Nick Trefethen) 提出新的 BMI 衡量標準若體重為 ww 公斤,身高為 hh 公尺,其 BMI 值如下:

試著輸入身高 180 公分,體重 75 公斤的人的 BMI,NBMI。

試著輸入身高 170 公分,體重 70 公斤的人的 BMI,NBMI。

[思考] 對於哪些身高的人,NBMI 的值變小?

def nbmi(w,h):
    return 1.3*w/(h**2.5)
print("%6.2f %6.2f" % (bmi(70,1.7), nbmi(70,1.7)))
print("%6.2f %6.2f" % (bmi(75,1.80), nbmi(75,1.8)))
24.22 24.15 23.15 22.43

Ex2(A). 萬有引力公式

兩個質量為 m1m_1, m2m_2 (公斤)的物體,距離為 rr (公斤) ,其萬有引力為:

F(m1,m2,r)=Gm1m2r2 F(m_1,m_2,r)= G \dfrac{m_1\cdot m_2}{r^2}

其中 G=6.67×1011G= 6.67\times 10^{-11}

(1) 已知地球的質量為 5.97×10245.97\times 10^{24} 公斤,若一物體在距離地球質心 63706370 公里處,所受的引力為多少?

(2) 已知月球的質量為 7.36×10227.36\times 10^{22} 公斤,若一物體在距離月球質心 17401740 公里處,所受的引力為多少?

(3) 已知木星的質量為 1.90×10271.90\times 10^{27} 公斤,若一物體在距離木星質心 6990069900 公里處,所受的引力為多少?

def F(m_1,m_2,r):
    G = 6.67*10**(-11)
    return G*m_1*m_2/(r**2)

print("地球 %6.2f" %F(5.97*10**(24), 1, 6.37*10**(6)))
print("月球 %6.2f" %F(7.36*10**(22), 1, 1.74*10**(6)))
print("木星 %6.2f" %F(1.90*10**(27), 1, 6.99*10**(7)))
地球 9.81 月球 1.62 木星 25.94

Ex2(B). 萬有引力

月球受到太陽或地球的引力哪個大?

木星或地球哪個受到太陽引力哪個大?

知乎:日月引力

(1) 已知太陽的質量為 1.989×10301.989\times 10^{30} 公斤,日地距離約 1.52×10111.52\times 10^{11} 公尺,則太陽對地球的萬有引力為何?

(2) 已知月球的質量為 7.35×10227.35\times 10^{22} 公斤,月地距離約 3.84×1083.84\times 10^{8} 公尺,,則月球對地球的萬有引力為何?

(3) 已知月球的質量為 7.35×10227.35\times 10^{22} 公斤,日月地距離約 1.52×10111.52\times 10^{11} 公尺,則太陽對地球的萬有引力為何?

(4) 已知木星的質量為 1.90×10271.90\times 10^{27} 公斤,日木距離約 7.79×10117.79\times 10^{11} 公尺,則太陽對木星的萬有引力為何?

# %7.2E 為科學記號輸出格式
print("日地引力 %10.2E" %F(5.97*10**(24), 1.989*10**(30), 1.52*10**(11)))
print("月地引力 %10.2E" %F(5.97*10**(24), 7.35*10**(22), 3.84*10**(8)))
print("日月引力 %10.2E" %F(7.35*10**(22), 1.989*10**(30), 1.52*10**(11)))
print("日木引力 %10.2E" %F(1.9*10**(27), 1.989*10**(30), 7.79*10**(11)))
日地引力 3.43E+22 月地引力 1.98E+20 日月引力 4.22E+20 日木引力 4.15E+23

Ex3 庫倫力 v.s. 萬有引力

兩個點電荷其電量為 q1q_1, q2q_2 庫倫(C),距離為 dd 公尺(m) 時,其作用力大小為

Fe(q1,q2,r)=kq1q2r2 F_e(q_1,q_2,r)= k \dfrac{q_1\cdot q_2}{r^2}

其中 k=8.99×109k = 8.99 \times 10^9

已知一個電子的質量為 9.1×10319.1\times 10^{-31} 公斤,電量為 1.6×1019-1.6\times 10^{-19} 庫倫。

請問兩個距離 10910^{-9} 公尺的電子,其庫倫力是萬有引力的多少倍?

def F_e(q_1,q_2,r):
    k = 8.99*10**9
    return k*q_1*q_2/(r**2)

print((F_e(-1.6*10**(-19),-1.6*10**(-19),10**(-9))/F(9.1*10**(-31),9.1*10**(-31),10**(-9))))
4.166688543181616e+42