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)


2021年7月31日 星期六

安裝 GFortran 使用 Fortran 程式讀取、寫入 csv 檔

作者:王一哲
日期:2021/7/31


前言


我之前幾乎沒有寫過 Fortran,這次為了幫某人擺脫需要花錢購買的 Visual Fortran,我只好從零開始學 Fortran,並且試試看是否能用 GFortran 編譯他們實驗室需要的程式碼,由 csv 檔讀取資料經過一些運算後再儲存成另一個 csv 檔,以下是我測試的筆記。


於 Ubuntu 安裝 GFortran


我使用的作業系統是 Ubuntu 20.04.2 LTS,只要在文字界面中執行以下指令即可安裝 GFortran。
sudo apt install gfortran-10

安裝完畢之後可以用以下指令查詢安裝的版本,我安裝的版本是 10.3.0。
gfortran-10 --version

建立一個測試用的資料夾,於資料夾中用文字編輯器將以下內容儲存成 hello.f95。
program hello
    write(*, *) 'Hello World!'
    write(*, *) '哈囉世界!'
stop
end program hello

用以下指令將 hello.f95 編譯成執行檔再執行檔案。
gfortran-10 -o hello hello.f95
./hello

如果螢幕輸出以下文字就成功了。
 Hello World!
 哈囉世界!



2021年7月20日 星期二

使用 Pandas 從網頁讀取衛星軌道資料並儲存成 csv 檔

作者:王一哲
日期:2021/7/20


前言


我以前寫過一篇關於克卜勒第三行星運動定律的文章,為了將各行星的衛星資料整理成可用的 csv 檔,當時是將表格複製到 LibreOffice Calc 裡面再手動整理,但是使用 Pandas 可以更自動化,以下是我試出來的方法。


程式碼


為了避免找不到儲存後的 csv 檔案,建議於 Python Shell 中用以下指令查詢目前所在的路徑。
import os
os.getcwd()
如果使用 Python 預設的 IDLE,在 Windows 10 預設的路徑是
C:\Users\[UserName]\AppData\Local\Programs\Python\[PythonXX]
在 Ubuntu 預設的路徑是
/home/[UserName]
如果在 Windows 10 可以用以下指令將路徑切換到桌面
os.chdir("C:\\Users\\[UserName]\\Desktop")

接下來從 Jovian Satellite Fact Sheet 網頁的表格中取得木星衛星軌道資料,在網頁上點擊滑鼠右鍵檢視網頁原始碼,於原始碼中搜尋table class會看到有兩個表格,名稱分別為 bulkorbital,我們需要的是衛星軌道資料,因此讀取時需要加上 attrs={'class':'orbital'};為了將最上面的列當作欄位標題,需要加上 header=0
import pandas as pd
table = pd.read_html('https://nssdc.gsfc.nasa.gov/planetary/factsheet/joviansatfact.html', attrs={'class':'orbital'}, header=0)

2021年7月13日 星期二

於 Linux Mint 將光碟複製成光碟映像檔

日期:2021/7/13
作者:王一哲


前言


由於某些出版社目前仍然將教學資源電子檔放在光碟片內,但是我的筆電又沒有內建光碟機,如果需要用到這些電子檔時又要外接光碟機,如果找不到光碟機或光碟片就麻煩了。為了避免發生這種問題,將光碟片複製成光碟映像檔並於在隨身碟或是雲端硬碟裡會比較方便。我以前是用燒錄軟體複製光碟片,今天才發現原來在 Linux Mint 裡有內建的工具能用,不需要另外安裝軟體。


操作方式


我使用的作業系統為Linux Mint 20.1 Ulyssa,圖形化界面為 xfce4-panel 4.14.3。首先在左下角的開始選單搜尋 disk,點選磁碟
搜尋 disk


進到磁碟工具,從左側的清單中點選已經掛載的光碟,再依序點選右上角三個點的圖示建立磁碟映像檔
建立磁碟映像檔


2021年7月7日 星期三

於 Ubuntu 安裝 Line Chrome 擴充功能並建立捷徑

日期:2021/7/7
作者:王一哲


前言


我一開始是參考這篇文章〈在 Linux 上讓 Chrome 的 Line 擴充元件當作獨立運作程式執行〉,也在 Linux Mint 上成功地建立了快速啟動的按鈕,但是同樣的方法到了 Ubuntu 20.04 搭配 Gnome 3.36.8 卻無法使用,只會開啟 Chrome 瀏覽器並進到 chrome://extensions/ 分頁。經過一個下午的測試之後我終於找到一個可以成功運作的方法,以下是我的筆記。


安裝軟體並建立捷徑


首先,於文字界面中輸入以下指令安裝開放原始碼版本的 Chromium,目前自動安裝的版本是 91.0.4472.114。
sudo apt install chromium-browser

開啟 chromium-browser,進入 Chrome 線上應用程式商店,搜尋 Line 並安裝擴充功能。
Chromium

Chrome 線上應用程式商店


2021年6月24日 星期四

於 Google 表單中插入數學式子

作者:王一哲
日期:2021/6/24


前言


最近為了要讓學生可以進行線上測驗,但是我又不想使用出版社的系統,因此我只能想辦法把物理考卷變成 Google 表單。由於物理考卷的題目及答案經常會用到數學式子,而且目前 Google 表單只能使用文字及圖片,我必須將數學式子轉成圖片才行,有幾個 Google Chrome 擴充功能可以做到這個效果,例如 以下是我使用第一個工具的筆記。


安裝擴充功能並應用於 Google 表單


開啟線上應用程式商店,於左上角的格子中輸入 LaTeX 並搜尋擴充功能,於搜尋結果中找到適用於Google Chrome™的Latex數學公式或是直接點選這個超連結,再點擊右上角的加到 Chrome
線上應用程式商店搜尋結果

適用於Google Chrome™的Latex數學公式


學測、指考試題解析目錄

作者:王一哲
最後更新日期:2021/6/24


這是我之前寫的學科能力測驗(學測)及指定科目考試(指考)試題解析,如果需要題目原始檔及非選擇題解析,請參考大學入學考試中心的網站:學測題連結指考題連結

我原來是在 MackMD 網站上用 Markdown 語法撰寫的,有將其中幾篇改成 HTML 語法轉發到這個部落格上,但是這樣實在很麻煩,所以我直接將文章連結整理在這篇,就不再另外發一篇部落格版的解析。另外也有整理好,發布在我的教學網站上。

學科能力測驗試題解析


  1. 112學測自然科物理試題解析
  2. 111學測自然科物理試題解析
  3. 110學測自然科物理試題解析 部落格版
  4. 109學測自然科物理試題解析 部落格版
  5. 108學測自然科物理試題解析 部落格版
  6. 107學測自然科物理試題解析
  7. 106學測自然科物理試題解析
  8. 105學測自然科物理試題解析
  9. 104學測自然科物理試題解析
  10. 103學測自然科物理試題解析
  11. 102學測自然科物理試題解析

分科測驗、指定科目考試試題解析


  1. 111分科測驗物理科試題解析
  2. 110指考物理科解析
  3. 109指考補考物理科解析
  4. 109指考物理科解析 部落格版
  5. 108指考物理科解析
  6. 107指考物理科解析
  7. 106指考物理科解析
  8. 105指考物理科解析
  9. 104指考物理科解析
  10. 103指考物理科解析
  11. 102指考物理科解析
  12. 101指考物理科解析

2021年3月28日 星期日

使用 SciPy 計算快速傅立葉變換

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


快速傅立葉變換


快速傅立葉變換 (fast Fourier transform, FFT) 是一種用來計算離散傅立葉變換 (discrete Fourier transform, DFT) 及其逆變換的計算方法,目前常用的是庫利-圖基演算法 (Cooley-Tukey FFT algorithm) 演算法。快速傅立葉變換通常被用在分析訊號的頻率及強度,以下是使用 SciPy 提供的工具計算 FFT 的方法。


SciPy FFT


SciPy 提供兩種計算 FFT 的工具,分別是 scipy.fft [1] 以及 scipy.fftpack [2],依據官方說明書,新版的程式碼為 scipy.fft。 以下是在 jupyter-notebook 中執行的程式碼,首先引入函式庫,並於儲存格中啟用 matplotlibe 繪圖功能。
import matplotlib.pyplot as plt
import numpy as np
from scipy.fft import fft, fftfreq, ifft

%matplotlib inline

設定資料點數量 N,sin 函數頻率 f1 ~ f5、振幅 A1 ~ A5,時間間隔 dt。
N = 4096
f1, f2, f3, f4, f5 = 10, 30, 50, 70, 90
A1, A2, A3, A4, A5 = 0.5, 0.4, 0.3, 0.2, 0.1
dt = 2/f1/N

2021年2月19日 星期五

Markdown 筆記

作者:王一哲
日期:2021/2/19


前言


Markdown 是一種輕量的標記語言,使用鍵盤上就有的標記做出具有數學式、清單、表格……等等的文件。我通常會使用 HackMD 線上編輯 Markdown 文件,單機版的部分則是使用 JoplinTypora 或是普通的純文字檔編輯器。網路上已經有許多 Markdown 語法的教學,以下是我常用的語法及筆記。
註:由於我沒有將部落格修改成支援 Markdown 語法,以下的內容只保留語法的部分,如果想要看到 Markdown 語法呈現的效果,請參考這篇文章的 HackMD 版本


標題


標題共有6個層級,標題開頭以 # 標示,有幾個 # 就是第幾個層級的標題,通常一篇 Markdown 文件只會有一個第1層級的標題,語法如下。
# 層級1
## 層級2
### 層級3
#### 層級4
##### 層級5
###### 層級6
###### tags:`標籤`



文字格式


Markdown 有以下的文字格式,如果使用的編輯軟體不支援上標、下標語法,可以改用 HTML 的語法。
*斜體*
**強調、粗體**
~~刪除線~~
^上標^ 或 <sup>上標</sup>
~下標~ 或 <sub>下標</sub>



2021年2月8日 星期一

D1 mini 安裝軔體及測試

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


D1 mini 簡介


D1 mini 是一款內建 WiFi 模組的開發板,詳細的資訊請參考官方網站,它採用的晶片是由上海樂鑫科技製造的 ESP8266,連接埠為 Micro USB。WEMOS 官方版本的 D1 mini 開發板售價約為250元,如果從蝦皮或是淘寶買大陸製的板子,售價大約為80元。買來的板子通常無法直接使用,需要先安軔體才行,由於我比較常寫 Python,所以我選擇安裝 MicroPython
D1 mini 副廠開發板



安裝 MicroPython


先從 MicroPython 網站下載給 ESP8266 使用的軔體,下載頁面在此,目前最新版本為 esp8266-20210203-unstable-v1.14.bin。以下的測試環境為 Ubuntu 20.04.1 LTS,開啟文字界面輸入以下指令安裝 esptool
pip3 install esptool
進到存放 esp8266-20210203-unstable-v1.14.bin 檔案的資料夾,輸入以下指令清除 ESP8266 已儲存資料,其中 ttyUSB0 是連接埠的名稱,請依照自己的電腦狀態修改名稱。
esptool.py --port /dev/ttyUSB0 erase_flash
接著寫入軔體,理論上就完成了。
esptool.py --port /dev/ttyUSB0 --baud 460800 write_flash --flash_size=detect 0 esp8266-20210203-unstable-v1.14.bin



2021年2月5日 星期五

圓的漸開線

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


原理


漸開線的英文為 involute 或 evolute。假設B為圓周上的點,B點繞圓心O旋轉的弧長為L,在過B點的切線上有一個P點,BP的距離等於 L,則P點的軌跡為圓的漸開線,圓的漸開線常用來作為齒輪邊緣的形狀。若使用參數式則為 $$ x = a (\cos t + t \sin t) $$ $$ y = a (\sin t - t \cos t) $$ 以下是使用 GeoGebra 繪製圓的漸開線成果。
使用 GeoGebra 繪製圓的漸開線動畫



2021年1月26日 星期二

免費的 PDF 分割、合併軟體:PDFsam

作者:王一哲
日期:2021/1/26



前言


目前市面上專業的 PDF 編輯軟體首推 Adobe Acrobat Pro,功能非常強大但售價不便宜,然而我通常只需要分割、合併 PDF 檔而已,不需要用到那麼多的功能,因此我通常使用的是另一套免費且跨平臺的軟體:PDFsam。


Windows 10 安裝方式


測試環境為 Windows 10 家用版。先到 PDFsam 官方網站:https://pdfsam.org/,點擊頁面左上角的 PDFsam BasicDownload,下載 Windows 版的安裝軟體。
PDFsam 官方網站

PDFsam Basic 下載頁面


2021年1月25日 星期一

匯出 PDF 檔(適用於 Office 365 Word、LibreOffice Writer、Google Docs)

作者:王一哲
日期:2021/1/25



前言


當我們要將文件分享給其他人但又擔心文件格式會變形,最方便的作法是先將文件匯出成 PDF 檔,以下是使用 Office 365 Word、LibreOffice Writer、Google Docs 的作法。


Microsoft Office 365 Word


以下採用的是 Microsoft Office 365 Word,測試環境為 Windows 10 家用版。
由上方的選單依序點選檔案匯出建立 PDF/XPS,再選擇匯出的檔案存放路徑及檔名即可。
Microsoft Office 365 Word

檔案 ⇒ 匯出 ⇒ 建立 PDF/XPS

發佈成 PDF 或 XPS


2021年1月24日 星期日

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

作者:王一哲
日期:2021/1/24



試題與詳解


  1. 某單頻光在一種透明水溶液中的傳播速率與該水溶液的密度成反比。今以厚度非常薄的均勻透明玻璃平板組成的立方形容器盛裝此水溶液,並靜置於水平桌面上後,發現水溶液的密度由下而上隨高度遞減。如圖1所示,兩道相同單頻光線由空氣中斜向射入水溶液,若忽略玻璃的折射,則下列選項的光線行進方向何者正確?
圖1


答案:E
層次:應用
難度:難
章節:波動與光
詳解:當光由空氣進到水溶液時會偏向法線,但是光在水溶液中前進的方向才是本題的重點,由於單頻光在水溶液中的傳播速率與該水溶液的密度成反比,且水溶液的密度由下而上隨高度遞減,因此下方的水溶液光速較慢,當光向水溶液下方前進時會偏向法線,故答案為E。

  1. 下列甲、乙、丙描述的狀況,屬於宇宙演化過程中的不同階段:
    甲、宇宙中大部分粒子為電子與質子,尚未結合成原子
    乙、宇宙中開始出現氦原子
    丙、恆星開始形成
    依時間先後順序排列,下列何者正確?
    (A) 甲乙丙   (B) 乙甲丙   (C) 丙乙甲   (D) 丙甲乙   (E) 甲丙乙
答案:A
層次:知識
難度:易
章節:宇宙學
詳解:甲大約發生在宇宙誕生1秒後,乙大約發生在宇宙誕生38萬年後,丙大約發生在宇宙誕生4億年後。