---
# System prepended metadata

title: Lecture 5 – 函數宣告 (Function Declaration)；Maxwell Wheel 實驗

---

# Lecture 5 – 函數宣告 (Function Declaration)；Exp 4 Maxwell Wheel

## 課程目標
- 學會在 MATLAB 中建立自訂函數  
- 了解函數在程式設計中的用途  
- 透過範例練習：數值積分、拋體運動、行星軌道  
- 進行 Maxwell Wheel 實驗，觀察能量轉換  

---

## 一、MATLAB 函數宣告

在 MATLAB 中，我們除了能使用內建函數外，也能撰寫 **自訂函數 (user-defined function)**，以降低程式複雜度、提升可讀性。

---

### 1. 函數宣告方式

#### (1) 匿名函數 (Anonymous function)
匿名函數透過 **function handle** 建立，適合簡短的一次性函數。

範例：
```matlab
y = @(x) sin(x).^3;
integral(y, 0, pi)
```
輸出：
```matlab
ans =
    1.3333
```
![image](https://hackmd.io/_uploads/BkaZomScgl.png)

👉 在 Workspace 會看到一個 function handle 物件，僅在此 script 中可用。
#### (2) 在 Script 內定義函數
![image](https://hackmd.io/_uploads/HJfXomB9xe.png)

可以在腳本 (script) 最下方定義函數，並在上方呼叫。
```matlab
result = MyFunc(5)

function y = MyFunc(x)
    y = x^2 + 2*x + 1;
end
```
#### (3) 建立函數檔 (.m file)
- 開新檔案 → Function 範本 → 撰寫函數內容
- 存檔檔名需與函數名稱相同
- 存檔後，MATLAB 會在 Current Folder 建立一個 function file，可在任何 script 呼叫。

範例：
```matlab
function result = Integrate(a, b)
    y = @(x) sin(x).^3;
    result = integral(y, a, b);
end
```
呼叫方式：
```matlab
f_integral = Integrate(0, pi)
```
輸出：
```matlab
f_integral =
    1.3333
```
---
### 2. 範例練習
#### (1) 利用自定義函數畫出不同拋射角下理想二維拋體的軌跡
拋體運動是普物中一個重要的基礎題目。考慮一個物體以初速$v_o$且沿與水平軸夾角為θ的方向拋出。根據牛頓力學，其運動方程式可寫成：
![image](https://hackmd.io/_uploads/Hy5c2Xr5ee.png)
定義一個函數，繪製拋射角 40、45及50度的軌跡。

#### (2) 接續前一範例，考慮有Stokes' drag下的情況
拋體受阻力 𝐹 =−𝑏𝑣，運動方程式可以求解成：
![image](https://hackmd.io/_uploads/H1I_amB5ex.png)
請分析當初速度vo=20 m/s且阻力係數b=0.1 (1/s)時，拋射角θ=35°、45°、55°的軌跡。
- 進階討論：
解出此阻力條件下不同拋射角對應飛行時間以及最大射程？
![image](https://hackmd.io/_uploads/rklmAvHcxg.png)

### 3. 挑戰練習題-行星軌道
利用Kepler軌跡方程式：
![image](https://hackmd.io/_uploads/S16ORPSqgx.png)
其中L是橢圓的半正焦弦(semi-latus rectum)、ε是橢圓率(eccentricity)、θ則是真近點角(true anomaly, https://en.wikipedia.org/wiki/True_anomaly)。若以橢圓遠日距離rmax與近日距離rmin表示，則
![image](https://hackmd.io/_uploads/SyH50DHqlx.png)
![image](https://hackmd.io/_uploads/rysq0DS5gx.png)

請將極座標轉換成直角座標並根據下表畫出太陽系行星之相對軌跡。
| Name    | r_max (AU) | r_min (AU) |
|---------|------------|------------|
| Mercury | 0.467      | 0.308      |
| Venus   | 0.728      | 0.718      |
| Earth   | 1.017      | 0.983      |
| Mars    | 1.667      | 1.382      |
| Jupiter | 5.452      | 4.953      |
| Saturn  | 10.081     | 9.015      |
| Uranus  | 19.997     | 17.949     |

![image](https://hackmd.io/_uploads/r10rJOB9ee.png)
👉 Bonus：參考https://personalpages.manchester.ac.uk/staff/paul.connolly/teaching/practicals/solar_system.html
嘗試讓你的太陽系行星動起來。

---

## 二、實驗五 Maxwell Wheel

### 實驗目的
- 驗證能量轉換原理  
- 理解 **轉動動能** 與 **線動能** 的關係  

---

### 實驗原理
Maxwell Wheel 是一個質量 \( m \)、半徑 \( R \) 的圓盤，繞細繩自由下落。  

忽略摩擦與細繩質量，能量守恆式為：
$$
m g h_0 = \tfrac{1}{2} m v^2 + \tfrac{1}{2} I \omega^2
$$

其中：  
- \( I \)：轉動慣量  
- \(\omega = v/R\)：角速度與線速度關係  

當質心降至 \( y=0 \) 時：
$$
v^2 = \frac{2 g h_0}{1 + I/(mR^2)}
$$

👉 可由數據擬合得到轉動慣量 \( I \)。  

---

### 實驗步驟

#### 量測 1：轉動慣量
1. 改變不同初始高度 \( h_0 \)，測量 \( y=0 \) 時的速度 \( v \)。  
2. 作圖並擬合數據，計算轉動慣量 \( I \)。  
3. 與理論值比較。  

> 注意：實際上因摩擦與細繩彈性，反彈時無法回到原高度，能量並非完全守恆。

---

#### 量測 2：能量損耗
1. 固定一個初始高度 \( h_0 \)。  
2. 測量第 \( i \) 次反彈後質心高度 \( h_i \)。  
3. 估算能量損耗比率。  
4. 假設每次反彈視為彈性碰撞，能量損耗主要來自摩擦，思考如何由數據估算摩擦力大小。  

---

### 參考資料
- B. Percori and G. Torzo, *The Maxwell wheel investigated with MBL*, Phys. Tech. **36**, 362 (1998).  
- 示範影片：[YouTube - Maxwell Wheel](https://www.youtube.com/watch?v=8Ch9TDeW1FU)  

---
