熱門文章

2018年3月29日 星期四

斜向抛射

作者:王一哲
日期:2018/3/29




將一個小球由地面以初速 v0、仰角 𝜃 抛出,小球受到重力作用向下加速,計算小球的飛行時間及水平射程。分為以下3種不同的狀況:

  1. 只考慮重力的作用,小球撞到地板時停止運動。 (GlowScript 網站動畫連結
  2. 同時考慮重力及空氣阻力 $f = -bv$,同時畫出考慮空氣阻力與不考慮空氣阻力的小球。 (GlowScript 網站動畫連結
  3. 使用 for 迴圈,分別計算不同仰角 𝜃、不同的空氣阻力係數 b 對應的飛行時間和水平射程。 (GlowScript 網站動畫連結

成果如下:


只考慮重力的作用,小球撞到地板時停止運動



2018年3月28日 星期三

使用for迴圈計算水平抛射資料

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




在前一篇文章〈水平抛射〉中,我們寫了一個模擬水平抛射運動的程式,再手動修高度 h 計算飛行時間 t 及水平射程 R。但是手動修改是很麻煩的,如果能多寫一個 for 迴圈,就能讓程式幫我們自動代入不同的 h 並將資料存成文字檔。以下共有兩個程式:

  • 程式5-4:水平抛射, 改變h, 記錄R (GlowScript 網站動畫連結
  • 程式5-5:由程式5-4修改, 用for迴圈改變h, 記錄t、R



程式 5-4:水平抛射, 改變h, 記錄R

取得程式碼

"""
 VPython教學: 5-4.水平抛射, 改變h, 記錄R
 Ver. 1: 2018/2/19
 Ver. 2: 2019/9/6
 作者: 王一哲
"""
from vpython import *

"""
 1. 參數設定, 設定變數及初始值
"""
size = 1     # 小球半徑
v0 = 5       # 小球水平初速
h = 15       # 小球離地高度5, 10, 15, 20, 25, 30, 35, 40, 45, 50
L = 50       # 地板長度
g = 9.8      # 重力加速度 9.8 m/s^2
t = 0        # 時間
dt = 0.001   # 時間間隔

"""
 2. 畫面設定
"""
scene = canvas(title="Projectile", width=800, height=600, x=0, y=0, center=vec(0, h/2, 0), background=vec(0, 0.6, 0.6))
floor = box(pos=vec(0, -size, 0), size=vec(L, 0.01, 10), texture=textures.metal)
ball = sphere(pos=vec(-L/2, h, 0), radius=size, texture=textures.wood, make_trail=True, v=vec(v0, 0, 0), a=vec(0, -g, 0))

"""
 3. 物體運動部分, 小球觸地時停止
"""
while(ball.pos.y - floor.pos.y > size + 0.5*floor.height):
    rate(1000)
    ball.v += ball.a*dt
    ball.pos += ball.v*dt
    t += dt

print(t, ball.pos.x + L/2)



2018年3月26日 星期一

水平抛射

作者:王一哲
日期:2018/3/20




將一個小球由高度 h 處以水平初速 v0 抛出,小球受到重力作用向下加速,小球撞到地板時反彈,共有以下3種不同的狀況:

  1. 只考慮重力的作用,小球與地板間為彈性碰撞。 (GlowScript 網站動畫連結
  2. 只考慮重力的作用,小球撞地板的恢復係數為 e。 (GlowScript 網站動畫連結
  3. 同時考慮重力及空氣阻力 f = -bv。 (GlowScript 網站動畫連結

成果如下:


只考慮重力的作用,小球與地板間為彈性碰撞



2018年3月25日 星期日

SciDAVis繪圖:XY散布圖

SciDAVis繪圖:XY散布圖
 日期:2018/3/25
  SciDAVis 的全名為 Scientific Data Analysis and Visualization,照字面的意思可以翻譯為科學資料分析與視覺化工具,用來分析數據、作圖,而且它是一套自由軟體最新的版本為1.22,下載頁面在此(前往下載) 。類似的商業軟體為 Origin 和 SigmaPlot,但是這兩套軟體的售價不便宜,都在萬元以上。雖然用 MicroSoft Excel 和 LibreOffice Calc 也能做到類似的效果,但是 SciDAVis 處理大量數據的效果更好,即使操作界面是沒有中文化,對高中生而言應該還在可接受的範圍內。
  以下教學用採的繪圖數據是由 VPython 教學〈終端速度〉的程式碼產生的,下載連結在此(取得檔案)。

安裝軟體

  如果作業系統為 Windows,請選用 scidavis.1.22-win-dist.msi,下載後使用系統管理員身份執行安裝檔,接著不斷地按下一步就完成了。如果作業系統為 Linux,請選用 scidavis-1.22.tar.gz,下載後解壓縮,再依照資料夾中的檔案 "README.installer" 的指示編輯檔案及安裝。安裝完成後執行程式,畫面如下。
SciDAVis 畫面截圖

2018年3月20日 星期二

終端速度

作者:王一哲
日期:2018/3/20




這篇文章本來應該是前一篇文章〈自由落下〉最後一部分的內容,但由於這個程式的寫法比較不一樣,需要解釋的東西較多,所以獨立出來另外寫一篇。這個程式的目標:當小球從高空落下時,同時受到重力及空氣阻力的作用,試著找出小球的運動過程及終端速度,同時將得到的資料存成文字檔。



物理原理


假設空氣阻力

$$f = -bv$$

小球落下時所受合力(向下為正)

$$F = mg - bv = ma$$

小球剛開始運動時

$$ v = 0 ~~~~~ f = 0 ~~~~~ a = g $$

當小球速度增加時、增加、減小。當小球所受合力為零時,小球不會再加速,此時的速度稱為終端速度(terminal velocity),通常代號為 vt

以下圖片是以小球質量 m = 1 kg、重力加速度 g = 9.8 m/s2、空氣阻力係數 b = 0.1 N s / m 模擬得到的結果,vt = 97.99999000067568 m/s,理論值 = 98 m/s。



小球終端速度,b = 0.1, y-t 圖


2018年3月19日 星期一

自由落下

作者:王一哲
日期:2018/3/19




這次讓物體加上重力的作用,目標是畫出小球從某個高度往下加速落到地板上,並畫出小球的 y-t 圖、 v-t 圖,分為3個不同的狀況:

1. 小球觸地時停止 (GlowScript 網站動畫連結
2. 小球觸地時反彈 (GlowScript 網站動畫連結
3. 小球觸地時反彈, 恢復係數為e (GlowScript 網站動畫連結

成果如下:


自由落下畫面截圖



繪製等位線的方法:Python

繪製等位線的方法:Python
日期:2018/3/18
  感謝坤賢學長介紹了這個網站 https://python-graph-gallery.com/ ,我從網站上找到兩張很符合需求的圖
  1. https://python-graph-gallery.com/371-surface-plot/ 
  2. https://python-graph-gallery.com/371-surface-plot/ 
如何利用 numpy 套件產生各點電位值的寫法主要是參考這篇
最後成功畫出以下兩張圖
用高度及顏色表示電位值的立體圖
用顏色表示電位值的等高線圖

2018年3月17日 星期六

繪製等位線的方法:Gnuplot

作者:王一哲
日期:2018/3/17




前言


這是之前測試成功,用 Gnuplot 畫出等位線的方法,雖然可以做出我想要的效果,但是我不太確定其中部分指令的功能,還需要再多測試一下。 目前試過兩種作法:

  1. 用 Gnuplot 指令計算每個位置的電位並畫圖
  2. 用 C 語言寫一支小程式計算每個位置的電位,將資料存成文字檔,再用 Gnuplot 讀取文字檔的資料畫圖




方法1成果




方法2成果



使用版本為 Gnuplot 5.2 patchlevel 2,下載頁面為 https://sourceforge.net/projects/gnuplot/files/gnuplot/5.2.2/




2018年3月15日 星期四

繪製等位線的方法:SciDAVis

作者:王一哲
日期:2018/3/15

前言


最近正好教到靜電學,想要試著用電腦畫出等位線。一開始想到以前用過的 Gnuplot 好像可以辦到,但是它的選項全部都要用指令調整,有點麻煩。後來又想到 Python 當中有一個功能強大的繪圖套件 Matplotlib,但是在網路上找到的範例看起來看麻煩。最後才想到 SciDAVis 應該有這樣的功能,在 Google 上搜尋關鍵字 scidavis 3d plot 的第1個結果就是我尋找已久的答案:http://scidavis.sourceforge.net/manual/x528.html


用 SciDAVis 搭配 matrix 繪製的等電位線圖形


使用版本


SciDAVis 1.22,下載頁面 https://sourceforge.net/projects/scidavis/files/SciDAVis/1.22/

2018年3月13日 星期二

利用光敏電阻控制蜂鳴器

作者:王一哲
日期:2016/9/13



所需元件



  1. 光敏電阻 1 個
  2. 10 kΩ 電阻 1 個
  3. 蜂鳴器或喇叭 1 個
  4. 麵包板1塊
  5. Arduino Uno 開發板 1 塊
  6. 麵包板連接線數條

線路圖

實際的裝置照片(連接蜂鳴器)

實際的裝置照片(連接喇叭)

2018年3月7日 星期三

等速度直線運動

作者:王一哲
日期:2018/3/7




終於要開始做物理模擬動畫,我們先從最單純的等速度直線運動開始,目標是畫出木塊、地板以及木塊的 x-t 圖、 v-t 圖,成果如下:GlowScript 網站動畫連結


等速度直線運動畫面截圖





2018年3月6日 星期二

Python 基本語法

作者:王一哲
日期:2018/3/6




判斷條件:if


最簡單的語法為

if(條件):
    條件成立時執行的程式碼

當條件成立時執行冒號下的程式碼,程式碼必須從 if 的位置開始縮排,假設使用的縮排為 4 個空格,則在條件成立時要執行的程式碼每行都要縮排 4 個空格,若某一行沒有縮排,從此行開始會被視為 if 的部分已經結束。如果條件成立時執行的程式碼只有一行,可以直接放在冒號之後不需換行。

如果要加上條件不成立時執行的程式碼,語法為

if(條件):
    條件成立時執行的程式碼
else:
    條件不成立時執行的程式碼


if … else … 流程圖


2018年3月5日 星期一

安裝及測試 VPython

作者:王一哲
日期:2018/3/5




下載並安裝Python


Python 是一種直譯式的高階程式語言,功能強大且程式碼較為簡潔,個人認為比 C 語言容易上手。在 Google 上搜尋 Python,第1個搜尋結果通常會是Python 官方網站的首頁。目前最新的版本為3.6.4,下載頁面為https://www.python.org/downloads/release/python-364/ ,找到適合自己作業系統的版本下載並安裝。


Python 官方網站首頁




Python 官方網站下載頁面