這個作業短短的
但是怎樣寫的漂亮才是問題所在
大家可以用這個作業來磨練一下思考力
首先
看看中心程式的直覺性寫法
A,B,N,F()為下界.上界.分割數.給定函數
H=(A-B)/N
SUM=0
DO 10 I=0,N-1
X1=A+I*H
X2=A+(I+1)*H
SUM=SUM+(F(X1)+F(X2))*H/2
10 CONTINUE
這樣算出的答按是對的沒錯
但是注意一下
每迴圈一次須做幾次運算
且F(X2)的值再下一次迴圈便會用到
但卻又算了壹次
等於是多算了
所以整個可改成
H=(A-B)/N
SUM=0
DO 10 I=1,N-1
X1=A+I*H
SUM=SUM+F(X1)
10 CONTINUE
SUM=SUM*2+F(A)+F(B)
SUM=SUM*H/2
如此
每個切割點只要算一次
算梯形時的乘除法也只須一次
運算速度快了約3~4倍(在分割數很大時就有感覺)
答案正確度亦不減
這就是所謂的演算法
想要讓計程功力進步一定要常常想想
以上的成式用的是簡化的語法
我偷懶......
第二種算法還有進步空間
大家可以試試讓他更完美
--
※ 發信站: 批踢踢實業坊(ptt.csie.ntu.edu.tw)
◆ From: 140.112.22.219