置頂

我的 VPython 教學文件 (HackMD 版本)

VPython 教學文件目錄 安裝及測試 基本語法 等速度直線運動 自由落下 終端速度 水平抛射 使用For迴圈計算水平抛射資料 斜向抛射 圓周運動 簡諧運動 單擺 木塊彈簧系統分離 重力及簡諧 行星運動 相疊木塊 雙重簡諧運動 一維彈性碰撞 ...

熱門文章

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時颱風移動速度變慢,颱風受到與速度方向相反的作用力。


2021年11月9日 星期二

使用 Microsoft Excel 繪製帶有誤差槓的 XY 散布圖

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



前言



這是配合本校探究與實作B課程活動紙製直升機而寫的講義,以下的實驗數據是以紙製直升機的質量 m 作為操作變因、滯空時間 t 作為應變變因,其中 m 取了 5 個不同的數值,測量 t 各 20 次。測試的環境為 Windows 10 家用版,軟體為 Office 365 Excel。

t - m 關係圖



開啟空白活頁簿,在各欄位中輸入資料,可以利用凍結視窗的功能,凍結A欄及第1列,這樣檢視資料時會比較方便。
於活頁簿中輸入資料


在儲存格 V2 按 = ,輸入公式 AVERAGE(B2:U2) 計算時間的平均值 tavg (s);在儲存格 V2 按 = ,輸入公式 STDEV(B2:U2)/SQRT(COUNT(B2:U2)) 計算時間的 A 類不確定度 ut (s);再利用自動填滿的功能計算儲存格 V3 到 W6 對應的資料。
計算時間平均值及 A 類不確定度


選取儲存格 A1 到 A6 以及 V1 到 V6,插入只有數據點的 XY 散布圖。
插入只有數據點的 XY 散布圖

只有數據點的 t - m 關係圖


2021年10月23日 星期六

移除試算表中重複的資料(使用 LibreOffice Calc、Google Sheets、Microsoft Excel)

作者:王一哲
日期:2021/10/23


前言


當我們使用試算表軟體處理大量的資料時,如果要手動找出並移除重複的資料,不但要花費很多的時間,甚至有可能會漏掉一些重複的資料。其實在 LibreOffice Calc、Google Sheets、Microsoft Excel 都有內建的工具可以處理,以下是這些工具的使用方法。

LibreOffice Calc


測試的作業系統為 Linux Mint 20.1 Ulyssa,LibreOffice 版本為 7.1.5.2,測試用的資料是從環保署環境資料開放平臺下載的土城空氣品質測站一氧化碳濃度月值資料。下圖是將資料以 csv 檔格式匯入後的樣子。
將資料𠥔入 LibreOffice Calc


使用預設的篩選工具


於工具列中依序點選資料 ⇒ 更多篩選 ⇒ 標準篩選。
資料 ⇒ 更多篩選 ⇒ 標準篩選


2021年8月11日 星期三

GeoGebra Classic 5 & 6 匯出 gif 檔

作者:王一哲
日期:2021/8/11


前言


昨天有同事問我,為什麼在 GeoGebra Classic 找不到匯出成 gif 檔的選項,搜尋之後才發現這個功能在 GeoGebra Classic 5 可以從選單找到,但是在 GeoGebra Classic 6 卻要用指令才行。以下用一個簡單的正弦波動畫作為例子,測試的作業系統為 Linux Mint 20.1 Ulyssa,GeoGebra 版本為 GeoGebra-Linux64-Portable-6-0-657-0 以及 GeoGebra-Linux-Portable-5-0-657-0。

GeoGebra Classic 6


首先用以下指令畫出向右移動的正弦波,數值滑桿 t 的動畫速度設定為 4、重複模式為遞增。
T = 2
ω = 2*π/T
t = Slider(0, T, 0.05*T)
f(x) = If(x >= 0, sin(x - ω*t))

GeoGebra Classic 6:正弦波


2021年8月9日 星期一

內旋輪線

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


前言


小時候有一種玩具,將一個小的圓板放在一個大的圓內側,接著用原子筆插在小圓板的某個洞中,用力地將小圓板貼著大圓內側轉動就可以畫出很複雜的圖案,這個玩具的名稱是萬花尺 (spirograph)。
萬花尺(圖片來源:https://upload.wikimedia.org/wikipedia/commons/2/24/Spirograph.jpg)

萬花尺應用到的數學原理名為內旋輪線 (hypotrochoid),以下是它的參數式。 $$ x(\theta) = (R-r) \cos \theta + d \cos \left( \frac{R-r}{r} \theta \right) $$ $$ y(\theta) = (R-r) \sin \theta - d \sin \left( \frac{R-r}{r} \theta \right) $$
以下是從維基百科上找到的例子,我們接下來試著用 GeoGebra 畫出同樣的圖。
內旋輪線動畫,R = 5,r = 3,d = 5(圖片來源:https://upload.wikimedia.org/wikipedia/commons/f/fa/HypotrochoidOutThreeFifths.gif)

內旋輪線動畫,R = 10,r = 5,d = 1,圖西對 (Tusi couple)(圖片來源:https://upload.wikimedia.org/wikipedia/commons/5/5c/Ellipse_as_hypotrochoid.gif)