--- title: 數學軟體實作 - Exam 1 tags: 2020 Fall - 數學軟體實作 GA: G-77TT93X4N1 --- # Exam 1 > 考試時間: 9:00-9:50AM > 請在 9:50AM 前上傳兩個 `matlab` m-file 至 github 並 pull request. > 需有註解 ## Problem 1 - 暴力求根 給定一個函數 $f(x)$ 及區間 $[-L, L]$, 試寫一 `matlab` 程式將其所有的根 ($f(x)=0$) 找出來. * 此函數 input 為 $L$, output 為所有的根. ### !!指定做法!! **指定求根法如下**: 1. 先求函數實根個數及區間 先將 $[a, b]$ 區間分成 $N$ 等分, 接著用中間值定理來看每個區間內有沒有函數的實根. Reference: [Root finding-函數實根個數](https://hackmd.io/@teshenglin/ms_root_finding) 2. 在每個區間用暴力法求根 在區間內隨機取點, 如果在取到的點其函數值夠小我們就說找到解了. * 誤差容許值 $10^{-5}$. * 迭代超過 $10^8$ 次跳出並顯示提醒 * Reference: [matlab-03-暴力求根](https://hackmd.io/@teshenglin/ms_matlab_03) ## Problem 2 - 精準做圖 給定一個**可微分函數** $f(x)$ 及區間 $[-L, L]$, 試寫一 `matlab` 程式將其**準確**的畫出來. **準確** 意思是要畫出 $f(x)$ 圖形並且標出所有的局部極大/極小值 (critical points, $f'=0$, 即可) * 此 `matlab` 函數其 input 為 $L$, output 為 matlab figure. * 程式主結構如下: * 此函數內有兩個 local function, 分別為 `y=f(x)` 以及 `y=df(x)`, 對應於 $f(x)$ 以及 $f'(x)$. ``` function accurate_graph(L) function y = f(x) y = ?? end function y = df(x) y = ?? end ``` ### !!指定做法!! **指定作法**如下: 1. 先利用 problem 1 的暴力求根法求出函數微分 $f'(x)$ 在 $[-L, L]$ 區間內所有的根 2. 畫出函數圖形並在圖形上標出所有 $f'=0$ 的點 * 上傳的程式用以下函數為例 $$ f(x) = x\sin(x), \quad x\in[-L, L]. $$