置頂

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

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

熱門文章

2020年3月28日 星期六

使用 Google 試算表繪製 XY 散佈圖

作者:王一哲
日期:2020/3/28




前言


我之前已經寫過兩篇使用 SciDAVis 繪製 XY 散佈的文章:〈SciDAVis 教學 1:XY 散佈圖基本使用方法〉、〈SciDAVis 教學 2:作圖技巧及化直〉,但是大多數的學生在電腦課只用過 Microsoft Excel 這類的試算表軟體,相較之下 SciDAVis 的使用方法比較沒有那麼直觀,不過我又不想要在課堂上教商用軟體。因此,我們改用免安裝的 Google 試算表取代 Excel,雖然 Google 試算表的功能比較少一點,但仍然可以處理數據、繪製圖形。



匯入資料檔


我們以木星的衛星資料為例,先從網路上找到 NASA 公布的資料 Jovian Satellite Fact Sheet,將資料依照我們的需求編輯後儲存成 csv 檔,這是我編輯後的資料檔下載連結,先將這個檔案上傳到自己 Google 雲端硬碟中。


上傳資料檔至 Google 雲端硬碟



在 Google 雲端硬碟中新增 Google 試算表檔案,瀏覽器會自動跳到試算表的編輯頁面。


新增 Google 試算表檔案



從選單中依序選取檔案匯入,點選之前上傳的資料檔,再按下選取


檔案 ⇒ 匯入




匯入檔案視窗


2020年3月22日 星期日

於 Google 簡報中插入方程式

作者:王一哲
日期:2020/3/22




前言


最近我在準備下學期的教材,為了能夠便於分享及共同編輯教材,再加上本校資訊組為全校師生申請到 G Suite,我決定採用 Google 簡報製作上課用的投影片,用 Google 文件製作學習單。但是 Google 簡報現在並沒有插入方程式的功能,於是我找到了這個效果不錯但有點麻煩的解決方案。



使用線上工具產生方程式


我通常使用的網站為 latex.codecogs.com,在格子裡輸入方程式對應的 $\LaTeX$ 編碼,例如我想要顯示方程式是加上馬克士威修正的安培定律,需要輸入的編碼如下

\nabla \times \mathbf{B} = \mu_0 \left ( \mathbf{J} + \varepsilon_0 \frac{\partial \mathbf{E}}{\partial t} \right )

網站會自動產生成方程式,可以將它下載並儲存成 gif、png、pdf 或 svg 檔,在此我選擇存成 svg 檔,這樣在放大之後才不會變成馬賽克。
latex.codecogs.com

如果想要改變字體的顏色,例如改為白色,可以將編碼改為
{\color{white} \nabla \times \mathbf{B} = \mu_0 \left ( \mathbf{J} + \varepsilon_0 \frac{\partial \mathbf{E}}{\partial t} \right )}

網站有產生方程式,但因為底色也是白色,所以好像什麼都看不到。


latex.codecogs.com


2020年3月21日 星期六

LibreOffice 方程式編號

作者:王一哲
日期:2020/3/21




測試環境及版本


  1. Lubuntu 19.04
  2. LibreOffice 6.3.4.2



方程式置中並插入編號


於 LibreOffice Writer 的檔案中輸入 fn 再按 F3,軟體就會自動插入一個沒有邊框的表格,左側的儲存格裡有一條方程式,可以在方程式上雙擊滑鼠左鍵編輯方程式,右側的儲存格裡有方程式編號,兩側已經加上半型的括號。

輸入 fn


按 F3 之後的效果

2020年3月2日 星期一

Matplotlib 中文標籤問題

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

這篇只能算是按照網路上找到的方法,在自己的電腦上測試的筆記,主要參考以下兩篇文章:

  1. 解决Python使用matplotlib绘图时出现的中文乱码问题
  2. PYTHON 如何在Win 10解決matplotlib中文顯示的問題?

Windows 10


如果電腦裡有安裝中易宋體 (SimSun) 或是 中易黑體 (SimHei),可以按照第一篇文章的作法,直接在程式碼裡設定

plt.rcParams['font.sans-serif']=['SimSun']
plt.rcParams['axes.unicode_minus']=False

或是

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

但如果沒有安裝對應的字體,則要按照第二篇文章的作法,先安裝思源宋體,這是下載字體的連結。再到下列的檔案裡找到對應的字體名稱

C:\Users\[使用者名稱]\.matplotlib\fontlist-v310.json

例如我使用的是 NotoSansCJKtc 系列的字體,名稱是 Noto Sans CJK TC。以下是我試著使用中文標籤的程式碼,測試的環境為 Windows 10 家用版、Python 3.7.5、matplotlib 3.1.1。

2020年2月28日 星期五

角動量守恆

作者:王一哲
日期:2020/12/23




物理情境


若質量可忽略的桿子長度為$2R$,桿子兩端各連接一顆質量為$m$的球,放置於水平光滑桌面上,以桿子的中央、垂直射出桌面方向為轉軸,起始的角速度為$\omega$。如果小球的旋轉半徑隨著時間縮短,假設後來的旋轉半徑為$R'$、角速度為$\omega'$,根據角動量守恆可得

$$mR^2 \omega = mR'^2 \omega' ~\Rightarrow~ \omega' = \left( \frac{R}{R'} \right)^2 \omega$$

所以當兩個球距離變近時,旋轉的角速率會跟著變快。





模擬程式畫面截圖



2020年1月19日 星期日

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

作者:王一哲
日期:2020/1/19



試題與詳解


  1. 下列甲、乙、丙三個敘述為原子內部結構探究的三個過程,依發生時間先後排序
    何者正確?
    甲:夸克的發現。
    乙:電子只在特定軌道運行。
    丙:利用α粒子撞擊金箔,發現原子核的存在。
    (A)甲乙丙  (B)甲丙乙  (C)乙丙甲  (D)乙甲丙  (E)丙乙甲

答案:E
層次:知識
難度:易
章節:近代物理
詳解
甲:蓋爾曼 (Murray Gell-Mann) 與茨威格 (George Zweig) 於 1964 年分別提出夸克模型,史丹佛線性加速器中心(SLAC)於 1968 年的實驗中找到夸克。
乙:波耳 (Niels Henrik David Bohr) 於 1913 年提出氫原子模型,假設電子存在於特定軌道上時不會輻射出能量。
丙:拉塞福 (Ernest Rutherford) 於 1909 年進行拉塞福散射實驗 (Rutherford scattering),用α粒子撞擊金箔,並由α粒子的散射角度與數量的關係發現原子核的存在。


  1. 王君搭乘熱氣球在廣闊無風的平原上空觀賞風景,熱氣球以等速度 5.0 m/s 鉛直上升時,王君不小心使相機從離地高度為 100 m 處離手而成為自由落體,若不計空氣阻力並取重力加速度為 10 m/s2,則相機著地前瞬間的速度量值約為多少 m/s?
    (A)55   (B)45   (C)35   (D)25   (E)15

答案:B
層次:應用
難度:易
章節:力與運動
詳解
$$v^2 = v_0^2 + 2as$$

$$v^2 = 5^2 + 2 \times (-10) \times (-100)$$

$$v^2 = 2025$$

$$v = 45 ~\mathrm{m/s}$$

2020年1月15日 星期三

利用反作用力後退

作者:王一哲
日期:2020/1/15




題目


假設有一個裝置本體的質量 $M$,裝置上載有一些即將被水平拋出的物體,物體的總質量為 $m$,且$M>m$。假設總共拋出 $N$ 次,則每次拋出的物體質量 $dm = m/N$,被拋出的物體相對於拋出後本體的速度為 $v$。請問將所有物體拋出後本體的速度$v_t$與拋出次數$N$的關係為何?



理論計算


第1次拋出物體後本體對地速度為 $v_1$,被拋出的物體對地速度為 $v + v_1$,由動量守恆可知

$$(M+m-dm) v_1 + dm (v+v_1) = 0$$
$$v_1 = -\frac{dm \cdot v}{M+m}$$

第2次拋出物體後本體對地速度為 $v_2$,被拋出的物體對地速度為 $v + v_2$,由動量守恆可知

$$(M+m-2dm) v_2 + dm (v+v_2) = (M+m-dm) v_1$$

$$\begin{align*}
v_2 &= \frac{-dm \cdot v + (M+m-dm) v_1 }{M+m-dm} \\
&= -\frac{dm \cdot v}{M+m-dm} + v_1 \\
&= -dm \cdot v \left(\frac{1}{M+m-dm} + \frac{1}{M+m} \right)
\end{align*}$$

第3次拋出物體後本體對地速度為 $v_3$,被拋出的物體對地速度為 $v + v_3$,由動量守恆可知

$$(M+m-3dm) v_3 + dm (v+v_3) = (M+m-2dm) v_2$$

$$\begin{align*}
v_3 &= \frac{-dm \cdot v + (M+m-2dm) v_2 }{M+m-2dm}\\
&= -\frac{dm \cdot v}{M+m-2dm} + v_2\\
&= -dm \cdot v \left(\frac{1}{M+m-2dm} + \frac{1}{M+m-dm} + \frac{1}{M+m} \right)
\end{align*}$$

2019年12月31日 星期二

木棍轉動落下所需時間

作者:王一哲
日期:2019/12/1




前言


我最近在 YouTube 上看到李永樂老師的一部影片:家長輔導小學生作業崩潰:抽出我“40米長大砍刀”,你有幾秒逃生時間?,李老師在影片中很正經地用物理理論,計算40米長大砍刀轉動落下所需時間,這樣一本正經地講解奇怪的東西也挺有趣的。以下用兩種方法計算類似的問題,但是為了使情境稍微正常一點,我將物體改為長度為$L = 1 ~\mathrm{m}$、質量均勻分布的木棍,下端立於水平桌面上,木棍與桌面的夾角$\theta$原為89°,並假設落下過程中木棍不會滑動。



理論計算


假設木棍的質量為$m$且質量均勻分布,長度$L = 1 ~\mathrm{m}$,下端立於水平桌面上,木棍與桌面的夾角原為$\theta_0 = 89^{\circ}$,受到重力作用由靜止開始落下,重力加速度$g = 9.8~\mathrm{m/s^2}$

若以下端為轉軸,則轉動慣量
$$I = \frac{1}{3}mL^2$$

重力產生的力矩
$$\tau = \frac{1}{2}mgL \cos \theta$$

角加速度
$$\alpha = \frac{\tau}{I} = \frac{3g \cos \theta}{2L}$$

由於轉動動能
$$K = \frac{1}{2}I \omega^2$$

當木棍與水平方向夾角為$\theta$時,角速度為$\omega$,由力學能守恆可得
$$\frac{1}{2} \cdot \frac{1}{3}mL^2 \cdot \omega^2 + \frac{1}{2}mgL \sin \theta = 0 + \frac{1}{2}mgL \sin \theta_0$$

$$\omega = \sqrt{\frac{3g(\sin \theta_0 - \sin \theta)}{L}}$$

假設木棍轉動一個很小的角位移$d \theta$,由於$\omega$與$d \theta$反方向,所需時間為
$$dt = -\frac{d \theta}{\omega}$$

當角度由$\theta_0$變為$\theta$時,可以算出經過的時間
$$t = \int_0^t dt = \int_{0}^{\theta_0} \frac{d \theta}{\omega} = \sqrt{\frac{L}{3g}}\int_{0}^{\theta_0} (\sin \theta_0 - \sin \theta)^{-\frac{1}{2}} d \theta$$

無法得到解析解,可以求數值解。利用SymPy計算角度$\theta$由$89^{\circ}$開始,變為$88^{\circ}$、$87^{\circ}$、……、$0^{\circ}$所經過的時間,程式碼寫法如下

2019年12月23日 星期一

U 形物體與木塊系統的動量守恆

作者:王一哲
日期:2019/12/23




題目


在水平光滑桌面上有一個質量為 1.8 kg 的 U 形物體,左、右兩側各連接一條原長為 0.5 m、彈性常數為 5.0 N/m 的理想彈簧,將一個質量為 0.2 kg 的木塊放在水平底面上,將右側的彈簧向右壓縮 0.2 m,整個系統原為靜止,假設摩擦力可以忽略,將木塊釋放後整個系統會如何運動?


模擬動畫畫面截圖



理論推導


由於右側彈簧原來被壓縮,右側彈簧的回復力會將木塊往左推、將 U 形物體往右推;當木塊開始壓縮左側的彈簧時,左側彈簧的回復力會將木塊往右推、將 U 形物體往左推;由於整個系統所受外力合為0,系統動量守恆,質心速度為0。



2019年12月20日 星期五

Matplotlib 繪圖技巧:移動的點

作者:王一哲
日期:2019/12/20




前言


在這篇文章中,我利用 Matplotlib 繪製一個隨著 sin 函數移動的點,由於圖片中的物件比較簡單,算是上一篇文章〈Matplotlib 繪圖技巧:水波干涉動畫〉的前置作業。


使用Matplotlib產生的動畫