一道算法題的數學分析

題目:

一個實數序列:ai = (ai-1–ai+1)/2 + d, (1<i<N) (N<60)。鍵盤輸入N, d, a1, an, m,求am

分析:

一看即知:這是一個數學味道極濃的算法題,首先需要一番推理分析才能編程,否則會無處下手。

1)首先,我們對數列的遞推式進行一番變換:
ai+1 = ai-1 + 2d – 2 ai
ai  = ai-2 - 2 ai-1 + 2d  

a4 = a2 - 2 a3 + 2d = 5a2 - 2 a1 - 2d

 

2)數列中各元素間沒有乘除運算,所以這是一個線性遞推的數列,因此公式①中各項的係數一定存在一個線性規律,而且是各項係數本身的規律,與其它係數沒有關係,因此如果能夠找到這些規律,那麼這道題也就應刃而解了。
遞推如下:
a3  = a1 - 2 a2 + 2d
a4 = a2 - 2 a3 + 2d = 5a2 - 2 a1 - 2d

 

題目中a1已知,未知的是a2

所以可以令:a2 = X, 各項係數爲Pi, Qi, Ri, 則:

Ai -1= Pi-1*X+Qi-1*a1+Ri-1*d,

Ai = Pi*X+Qi*a1+Ri*d,

Ai+1 = Pi+1*X+Qi+1*a1+Ri+1*d,

再由公式①,可以求出Pi,Qi,Ri各自的遞推公式。

以下略。。。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章