程式/演算法 基本技巧

 

實例問題:

在螢幕列出角度 θ 在 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