置頂

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

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

熱門文章

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