熱門文章

2018年1月30日 星期二

波的疊加

波的疊加
 日期:2018/1/30
雖然我已經教過3次選修物理,但是我依然很討厭畫波的圖形,尤其是波的疊加,要在黑板上把圖畫準實在太花時間了,所以我在2013年就寫了一篇文章介紹如何用 Scilab 製作波的疊加動畫。但是使用 Scilab 很像在寫 C 語言的程式碼,不是一般人能接受的,還好現在用 GeoGebra 就能輕鬆做到相同的效果。
用 Scilab 製作的波的疊加動畫

用指數及正弦製造的脈衝

  1. 仿照前一篇文章的方法,插入控制時間 t 的數值拉桿。
  2. 設定以下的變數值:波速 v = 1、角波數 k1 = 1.5 及 k2 = -1.5、波的位置 x1 = 0 + vt 及 x2 = 6 - vt。
  3. 用以下指令設定函數f(x) = If(x1 <= x <= x1 + π, sin(x - x1)*exp(x - x1))
  4. g(x) = If(x2 <= x <= x2 + π, 23.14*sin(x - x2)*exp(-x + x2))
  5. h(x) = f(x) + g(x)其中 g(x) 要乘上係數 23.14 是為了使 f(x) 和 g(x) 的最大值較為一致。
  6. 設定時間 t 的屬性,最小值 0,最大值 6,增量 0.01,動畫速度 2、重複設為遞增,如果設為來回反覆會看到波倒著跑的奇怪畫面。
  7. 開始動畫。


時間屬性視窗
用指數和正弦製造的脈衝,紅色向右前進,綠色向左前進,藍色為疊加結果。

用線段製造的三角形脈衝

  1. 仿照前一個圖形作法,插入控制時間 t 的數值拉桿。
  2. 設定以下的變數值:波速 v = 10、斜率 k1 = 1 及 k2 = 1.5、波的峰值位置 x1 = -6 + vt 及 x2 = 6 - vt、寬度 w = 2。
  3. 用以下指令設定函數f(x) = If(x1 - 2*w <= x <= x1, 0.5*k1 (x - (x1 - 2*w)), If(x1 <= x <= x1 + w, -k1 *(x - (x1 + w))))
  4. g(x) = If(x2 - w <= x <= x2, k2*(x - (x2 - w)), If(x2 <= x <= x2 + 2*w, -0.5*k2 *(x - (x2 + 2*w))))
  5. h(x) = f(x) + g(x)f(x)、g(x) 兩側的斜率及寬度不同,較斜的一側為波的前方。
  6. 設定時間 t 的屬性,最小值 0,最大值 1.2,增量 0.01,動畫速度 2、重複設為遞增,如果設為來回反覆會看到波倒著跑的奇怪畫面。
  7. 開始動畫。


用線段製造的三角形脈衝,紅色向右前進,綠色向左前進,藍色為疊加結果。

奇怪的半圓形脈衝

這是我在這學期所用的講義上看到的題目,當初會畫這個圖是因為學生無法想像這種奇怪的東西疊加起來會是什麼樣子。步驟如下:
  1. 仿照前一個圖形作法,插入控制時間 t 的數值拉桿。
  2. 設定以下的變數值:波速 v = 10、半徑 r1 = 2 及 r2 = 2、波的前端圓心位置 x1 = -5 + vt 及 x2 = 5 - vt。
  3. 用以下指令設定函數f(x) = If(x1 - r1 < x < x1 + r1, sqrt(r1**2 - (x - x1)**2), If(x1 - 2*r1 < x < x1 - r1, 0, If(x1 - 4*r1 < x < x1 - 2*r1, -sqrt(r1**2 - (x - x1 + 3*r1)**2))))
  4. g(x) = If(x2 - r2 < x < x2 + r2, -sqrt(r2**2 - (x - x2)**2), If(x2 + r2 < x < x2 + 2*r2, 0, If(x2 + 2*r2 < x < x1 + 4*r2, sqrt(r2**2 - (x - x2 - 3*r2)**2))))
  5. h(x) = f(x) + g(x)指令的顏色只是用來標示不同層的 If,輸入指令時不需要管顏色。
  6. 設定時間 t 的屬性,最小值 0,最大值 1.5,增量 0.01,動畫速度 2、重複設為遞增,如果設為來回反覆會看到波倒著跑的奇怪畫面。
  7. 開始動畫。


奇怪的半圓形脈衝,紅色向右前進,綠色向左前進,藍色為疊加結果。


2018/2/8 更新

已經檔案上傳至 GeoGebraTube,可以線上操作或下載檔案
  1. 波的疊加範例_指數   https://ggbm.at/tzJ8nfUb 
  2. 波的疊加範例_三角   https://ggbm.at/DbTJfWNu 
  3. 波的疊加範例_半圓   https://ggbm.at/QHV5rxb2

沒有留言:

張貼留言