熱門文章

2022年12月31日 星期六

108課綱物理重點整理

作者:王一哲
日期:2022/12/31


前言


最近終於把108課綱各章的重點整理寫好了,發布在我的教學平臺網站上,分別是「高一物理(108課綱)」、「選修物理(108課綱)」,使用的工具是開放原始碼的心智圖軟體Freeplane


高一物理



第1章:科學的態度與方法




2022年6月12日 星期日

使用 Numpy 讀取資料做多項式擬合並用 Matplotlib 繪製帶有誤差槓的 XY 散布圖

作者:王一哲
日期:2022年6月12日


前言


我之前已經寫過兩篇類似的文章,使用的工具分別為 Microsoft Excel 及 SciDAVis,如果想要做到同樣的效果,用 Python 搭配 Numpy 及 Matplotlib 套件一樣也能做到。以下是我測試成功的方法,為了看清楚每個步驟的效果,採用 Jupyter Notebook 的方式呈現,這個連結是我放在 Google Colab 上的檔案。

由純文字檔讀取資料並計算平均值及A類不確定度


假設以下的資料儲存在 data.csv 之中,最上面一列是欄位標題,內容是不同質量的紙製直升機滯空時間,分別測量20次,目標是讀取資料後計算20次時間的平均值及A類不確定度。
m (g), t1 (s), t2 (s), t3 (s), t4 (s), t5 (s), t6 (s), t7 (s), t8 (s), t9 (s), t10 (s), t11 (s), t12 (s), t13 (s), t14 (s), t15 (s), t16 (s), t17 (s), t18 (s), t19 (s), t20 (s)
1.4, 1.50, 1.45, 1.54, 1.53, 2.01, 1.56, 1.57, 2.15, 1.60, 2.18, 1.70, 1.78, 1.90, 1.71, 1.78, 1.85, 1.74, 2.01, 1.70, 1.84
2.9, 1.01, 1.44, 1.21, 1.31, 1.24, 1.49, 1.33, 1.51, 1.46, 1.51, 1.05, 1.14, 1.00, 1.03, 0.84, 1.03, 1.43, 1.29, 0.64, 1.19
4.3, 1.04, 1.05, 0.94, 0.84, 1.21, 1.13, 0.79, 0.84, 1.15, 0.91, 1.13, 1.29, 1.29, 0.85, 1.14, 0.94, 1.06, 1.04, 1.03, 0.94
5.7, 1.14, 1.01, 0.64, 0.77, 1.24, 1.13, 0.87, 0.81, 0.76, 0.73, 0.84, 0.74, 0.69, 0.80, 0.71, 0.82, 0.83, 0.74, 0.75, 0.77
6.9, 0.64, 0.74, 0.69, 0.84, 0.94, 0.84, 0.91, 1.02, 0.83, 0.79, 0.81, 0.90, 1.13, 0.73, 0.55, 0.53, 0.61, 0.71, 0.73, 0.63

使用 numpy.loadtxt 讀取 data.csv 的內容,以逗號作為分隔字元,忽略檔案最上方一列的資料,不將資料拆開,全部儲存到 data 之中,格式為 numpy ndarray。
import numpy as np

data = np.loadtxt("data.csv", delimiter=',', skiprows=1, unpack=False)
data 儲存的資料為
array([[1.4 , 1.5 , 1.45, 1.54, 1.53, 2.01, 1.56, 1.57, 2.15, 1.6 , 2.18,
        1.7 , 1.78, 1.9 , 1.71, 1.78, 1.85, 1.74, 2.01, 1.7 , 1.84],
       [2.9 , 1.01, 1.44, 1.21, 1.31, 1.24, 1.49, 1.33, 1.51, 1.46, 1.51,
        1.05, 1.14, 1.  , 1.03, 0.84, 1.03, 1.43, 1.29, 0.64, 1.19],
       [4.3 , 1.04, 1.05, 0.94, 0.84, 1.21, 1.13, 0.79, 0.84, 1.15, 0.91,
        1.13, 1.29, 1.29, 0.85, 1.14, 0.94, 1.06, 1.04, 1.03, 0.94],
       [5.7 , 1.14, 1.01, 0.64, 0.77, 1.24, 1.13, 0.87, 0.81, 0.76, 0.73,
        0.84, 0.74, 0.69, 0.8 , 0.71, 0.82, 0.83, 0.74, 0.75, 0.77],
       [6.9 , 0.64, 0.74, 0.69, 0.84, 0.94, 0.84, 0.91, 1.02, 0.83, 0.79,
        0.81, 0.9 , 1.13, 0.73, 0.55, 0.53, 0.61, 0.71, 0.73, 0.63]])

2022年5月15日 星期日

GeoGebra 教學 15:使用輸入欄位改變三角形邊長

作者:王一哲
日期:2022/5/16


本次課程檔案已上傳至 GeoGebraTube,可以線上操作或下載檔案。

目標


在繪圖區上新增三個輸入方格,由輸入方格改變三角形ABC的邊長;再新增一個控制三角形旋轉角度的數值滑桿;最後將三個內角的角度顯示於畫面上。
使用輸入方格改變三角形邊長


繪製三角形


1. 以邊長為3、4、5的直角三角形為例,首先於指令列中依序輸入以下指令定義邊長a、b、c及頂點A、B。
a = 3
b = 4
c = 5
A = Point({0, 0})
B = Point({c, 0})
2. 利用餘弦定理計算頂點C需要繞著頂點B逆時鐘方向旋轉的角度。
θ = 180° - acosd((a**2 + c**2 - b**2)/(2*a*c))
3. 定義頂點C的位置。
C = Rotate(Point({c+a, 0}), θ, B)
4. 繪製三角形ABC。
ABC = Polygon(A, B, C)
5. 標示頂點A、B、C分別對應的內角。
α = Angle(B, A, C)
β = Angle(C, B, A)
γ = Angle(A, C, B)

邊長為3、4、5的直角三角形


2022年5月10日 星期二

GeoGebra 教學 14:使用按鈕及核取方塊控制動畫

作者:王一哲
日期:2021/5/9


本次課程檔案已上傳至 GeoGebraTube,可以線上操作或下載檔案。

目標


我們之前都是在數值滑桿上按滑鼠右鍵,再點選快速選單中的開始動畫,但是這樣似乎有點麻煩。比較直覺的操作方式,應該是有一個按鈕,點一下開始動畫,再點一下暫停動畫;另一個按鈕則是重置動畫,點一下將時間歸零;或是有一個核取方塊,打勾開始動畫,取消打勾停止動畫。下圖是以水平拋射為例,使用按鈕及核取方塊控制動畫。
使用按鈕及核取方塊控制動畫


基本的水平拋射動畫


1. 於指令列中依序輸入以下指令定義數值
H = 10
g = 9.8
v_0 = 10
tmax = sqrt(2*H/g)
2. 於指令列中輸入以下指令新增數值拉桿定義時間 t,再開啟屬性視窗,將動畫種類調整為遞增
t = Slider(0, tmax, 0.01*tmax)
3. 於指令列中輸入以下指令新增隨時間移動的點P。
P = Point({v_0*t, H - 0.5*gt**2})
4. 於指令列中輸入以下指令新增水平抛射軌跡。到步驟4為止,就是一個可以由數值滑桿控制的水平拋射動畫。
trail = Curve(v_0*t, H - 0.5*g*t**2, t, 0, tmax)

基本的水平拋射動畫


2022年3月2日 星期三

使用 Google 試算表及 VPython 計算砲彈軌跡

作者:王一哲
日期:2022/3/2


前言


前幾天在 YouTube 上看到李永樂老師的影片「如何精準命中目標?戰爭到底帶給我們什麽?」,影片中提到理想狀態與實際情境下的斜向拋射運動差異,最後有提到計算道彈的數值方法。影片中李永樂老師是用 Excel 計算的,而我在高三多元選修中則是教學生用 VPython 計算,雖然工具不同,但是原理相同。

理想狀態


若砲彈的初速度量值為 $v_0$、仰角為 $\theta$,重力加速度為 $g$,只考慮重力的作用,則砲彈的水平位移 $x$ 與時間 $t$ 的關係為 $$ x = v_0 \cos \theta \cdot t ~\Rightarrow~ t = \frac{x}{v_0 \cos \theta} $$ 鉛直位移 $y$ 與時間 $t$ 的關係為 $$ y = v_0 \sin \theta \cdot t - \frac{1}{2}gt^2 $$
將 $t = \frac{x}{v_0 \cos \theta}$ 代入 $y$ 可得軌跡方程式 $$ y = v_0 \sin \theta \cdot \frac{x}{v_0 \cos \theta} - \frac{1}{2}g \cdot \left( \frac{x}{v_0 \cos \theta} \right)^2 = \tan \theta \cdot x - \frac{g}{2v_0^2 \cos^2 \theta} \cdot x^2$$ 由於 $$ \frac{1}{\cos^2 \theta} = \sec^2 \theta = 1 + \tan^2 \theta $$ 可以將軌跡方程式改寫成 $$ y = x \cdot \tan \theta - \frac{gx^2}{2v_0^2} \cdot (1 + \tan^2 \theta) $$ 若已知目標物所在的位置 $(x, y)$,則初速度仰角 $\theta$ 可以由 $\tan \theta$ 為變數的一元二次方程式解出。 $$ gx^2 \cdot \tan^2 \theta - 2v_0^2 x \cdot \tan \theta + 2v_0^2 y + gx^2 = 0 $$ $$ \tan \theta = \frac{v_0^2 x \pm \sqrt{v_0^4 x^2 - gx^2 (2v_0^2 y + gx^2)}}{gx^2} $$

2022年2月13日 星期日

解決 Lenovo T14s 使用 Ubuntu 20.04 暫停後畫面亂掉的問題

作者:王一哲
日期:2022/2/13


前言


我使用的筆記型電腦型號為 ThinkPad T14s Gen 2 (AMD) [1],除了預設的 Windows 10 之外還安裝了 Ubuntu 20.04.3 LTS [2],但是之前遇到一個奇怪的狀況,在 Ubuntu 暫停之後如果按電源鍵喚醒筆電,畫面會變成下圖這樣,完全無法使用,只能長按電源鍵強制重新開機。

努力搜尋了一陣子之後,我在 Lenovo 的討論區看到一篇文章 Thinkpad T14s (amd) Black screen after resume on Fedora 32 [3],好像是因為 amd 顯示卡的驅動程式與較新版本的 kernel 不合造成的。


2022年2月6日 星期日

安裝及測試 Python 2.7 + VPython 6

作者:王一哲
日期:2022/2/5


前言


由於我開始學習 VPython 時,正好處在 Python 2.7 + VPython 6 以及 Python 3 + VPython 7 兩者並存的時候,但是我一開始就選用比較新的版本,所以我之前就沒有寫安裝 Python 2.7 + VPython 6 的文件,這篇文章算是回來補過去留下的坑。以下的測試環境為 Windows 10 家用版。


下載並安裝 Python 2.7


先從Python 官方網站下載 Python 2.7,最後的更新版本為2.7.18,下載頁面為https://www.python.org/downloads/release/python-2718/ ,我選擇的版本是 Windows x86-64 MSI installer
Python 2.7.18 下載頁面


找到剛才下載的安裝檔,在檔案上按滑鼠右鍵選擇以系統管理員身分執行。

2022年1月24日 星期一

111學測自然科物理試題解析

作者:王一哲
日期:2022/1/22



第壹部分、選擇題



1-2題為題組

圖1為某颱風中心在21~26日的行進及預測路徑。假設颱風可視為固定質量的質點,地球轉動對颱風行進路徑的影響可忽略不計,颱風行進路徑在同一水平面上,且颱風沿預測路徑持續前進不折返。依據上述與圖1回答1-2題。
圖1

  1. 已知此颱風在21日14時的暴風半徑為180公里,如白色圓圈所示。試以預測路徑估算自21日14時至22日02時之間,颱風移動的平均時速量值約多少公里?
    (A) 5   (B) 10   (C) 20   (D) 30   (E) 40
答案:B
層次:應用
難度:易
章節:物體的運動
詳解:用尺可於圖1測得暴風半徑在圖上的長度約為 5 mm,而量21日14時至22日02時颱風中心移動的距離在圖上約為 4 mm,實際移動的距離約為 $$ d = 180 \times \frac{4}{5} = 144 ~\mathrm{km} $$ 共經過12小時,因此颱風移動的平均時速量值 $$ v = \frac{d}{t} = \frac{144}{12} = 12 ~\mathrm{km/h} $$ 最接近的選項為B。

  1. 已知此颱風在22日02時至23日14時之間,以等速率移動,但方向持續改變,之後朝北北西的方向維持直線前進,則下列敘述哪些正確?(應選2項)
    (A) 22日02時至23日14時之間,颱風在路徑上各點位置所受合力為零
    (B) 22日02時至23日14時之間,颱風在路徑上各點位置所受合力方向與速度方向垂直
    (C) 23日14時之後,颱風恆以等速度前進
    (D) 23日14時之後,颱風在各點位置所受合力都為零
    (E) 24日14時至26日14時之間,颱風所受的平均合力方向與速度方向相反
答案:BE
層次:應用
難度:中
章節:物體的運動
詳解: A 錯誤、B 正確,颱風改變移動的方向,需要受到與速度方向垂直的作用力。
C 錯誤、D 錯誤、E 正確,25日14時至26日14時颱風移動速度變慢,颱風受到與速度方向相反的作用力。