程式/演算法 基本技巧
實例問題:
在螢幕列出角度 θ 在 0 到 2 π 範圍內,等間隔 120 點,正弦函數 sin(θ) 的最大值與最小值兩個數值。
數值離散化
自變數數值的等間隔遞增(常常會需要作的動作)
要處理的部份:(1) 微小等間隔的算出、(2) 自變數的遞增推進
具體步驟:
(1) 算出「微小等間隔」的 "制式作法" 是
單位間隔 = ( 末值 - 初值 ) / 間隔數
Δx = ( x_max - x_min ) / N
(2) 自變數的遞增推進
迴圈始
目前自變數值 = 自變數初始值 + ( 當前計數器值 - 1 ) * 單位間隔
通常搭配會使用到「目前自變數值」的計算,如 y = f(x) 的 x 代入
迴圈終
取最大、最小值
透過比較,將最大(小)值送入擂台寶座
第一筆,無條件認定為最大小值,
迴圈開始(第二筆至最末筆)
若 現值比暫保存的
迴圈結束
完整範例程式
program sin_max_min
real max, min
delta_theta = (2*3.14 - 0.0)/120
max = sin(0.0)
min = sin(0.0)
do i=1,120
theta = 0.0 + (i-1)*delta_theta
answer = sin(theta)
if(answer > max) max = answer
if(answer < min) min = answer
end do
write(*,*)'Max is :',max
write(*,*)'min is :',min
end