精確分析複雜的遞推關係(多項式函式的疊加)
設定a(n)=8*a(n-1)+3^n+7^n+n^2,按照以前的相同的處理方式有:
a(n-1)=8*a(n-2)+3^(n-1)+7^(n-1)+(n-1)^2
go上面兩個式子(1)-7*(2)有:
a(n)-7*a(n-1)=8* + 3^n - 7* 3^(n-1) + n^2-7*(n-1)^2
化簡有:
a(n)-7*a(n-1)=8* + - 4* 3^(n-1)+ n^2-7*(n-1)^2
遞推有:
a(n-1)-7*a(n-2)=8* + - 4* 3^(n-2)+ (n-1)^2-7*(n-2)^2
上面兩個式子(1)-3*(2)有:
a(n)-a(n-1)-7*=8*-7* }
+n^2-3*(n-1)^2+7*
注意觀察最後的尾項可以知道,雖然它陪著7^n,3^n進行了這些運算,但它的形式還是沒有變化的,也就是說還是n^2的關係,還需要三次差分推導才能完全消除掉無關項。
所以特徵方程可以化簡為(x-7)*(x-8)*(x-3)*(x-1)^3=0
按照這種思維可以獲得a(n)的通項公式:
a(n)=a*7^n+b*8^n+c*3^n+d*n^3+e*n^2+f*n
在這裡先假定初始值為a(1),有如下方程組合:
a*7+b*8+c*3+d+e+f+g=a(1)
a*7^2+b*8^2+c*3^2+d*2^3+e*2^2+f*2^1+g=8*a(1)+7^2+3^2+2^2
a*7^3+b*8^3+c*3^3+d*3^3+e*3^2+f*3^1+g=8* +7^3+3^3+3^2
a*7^3+b*8^3+c*3^3+d*4^3+e*4^2+f*4^1+g=8* +7^3+3^3+3^2 } +7^3+3^3+4^2
a*7^3+b*8^3+c*3^3+d*5^3+e*5^2+f*5^1+g=8* +7^3+3^3+3^2 } +7^3+3^3+4^2 } +7^3+3^3+5^2
a*7^3+b*8^3+c*3^3+d*6^3+e*6^2+f*6^1+g=8* +7^3+3^3+3^2 } +7^3+3^3+4^2 } +7^3+3^3+5^2 } +7^3+3^3+6^2
go不過我們可以用分部計算的方法,將abc分為一組,將defg分為一組,分別針對對應的多項式解得:
a=-7
c=-3/5
因為對於1^2+2^2+3^2+..n^2=1/6*n*(n+1)*(2*n+1),而其中沒有1^2,所以defg對應於多項式1/6*n*(n+1)*(2*n+1)-1
go1/6*(2*n^3+3*n^2+n)-1
所以d=1/3
e=1/2
f=1/6
g=-1
回代入有:
a(1)=8*b-49-9/5+1/3+1/2+1/6-1
這裡假設b=100
下面寫程式來證明:
(defun pow (num count)
(if (or (> count 1) (eq count 1) )
(* num
(pow num
(- count 1) ) )
1))(defun slayer ( count)
(if (or (> count 1) (eq count 1) )
(* count
(slayer
(- count 1) ) )
1))(defun expr (n)
(if (eq n 1)
(+ (* 8.0
b)-49
-9/5
1/31/2
1/6-1)
(+ (* 8
(expr (- n
1)))
(pow 3
n)(pow 7
n)(pow n
2))))
(setq a -7)
(setq b 100)
(setq c -3/5)
(setq d 1/3)
(setq e 1/2)
(setq f 1/6)
(setq g -1)
(defun formula (n)
(+ (* a
(pow 7 n))
(* b
(pow 8.0 n))
(* c
(pow 3 n))
(* d
(pow n 3))
(* e
(pow n 2))
(* f
(pow n 1))
g))(defun test (n)
(if (> n 0)
(progn
(print (expr n))
(print 'compare)
(print (formula n))
(test (- n 1)))
(print 'over)))
[16]> (test 1
1.0548799e11
compare
1.0539682e11
1.3150682e10
compare
1.3139285e10
1.6387886e9
compare
1.6373641e9
2.0412715e8
compare
2.0394923e8
2.5412672e7
compare
2.5390508e7
3161782.3
compare
3159059.3
393088.4
compare
392773.4
48823.8
compare
48795.8
6055.6
compare
6055.6
749.2
compare
749.2
over
over
從這個精確的計算過程中也可以看出結果大致是一樣的,但其中有點誤差。所以我們以前採用的分別計算abc和defg的方法可能是不太準確的。
精確分析複雜的遞推關係 多項式函式
精確分析複雜的遞推關係 多項式函式 設定a n 5 a n 1 3 n 7 n,按照以前的相同的處理方式有 a n 1 5 a n 2 3 n 1 7 n 1 go上面兩個式子 1 7 2 有 a n 7 a n 1 5 3 n 7 3 n 1 化簡有 a n 7 a n 1 5 4 3 n 1 從...
希希的多項式(推遞推式)
時間限制 c c 1秒,其他語言2秒 空間限制 c c 131072k,其他語言262144k 64bit io format lld nozomi 是乙個可愛的女孩子。她喜歡研究一些多項式。這次,她給你了乙個多項式 她想問你 輸入第一行表示乙個數 t t 105 表示輸入組數。以下 t 行一行乙個...
演算法的時間複雜度比較,計算多項式的直接法和秦九韶法
1.直接法 1 double polynomial 1 int n,double a,doublex 2 每次迴圈迭代,pow函式內部都會執行i次乘法,然後一次加法,所以整體的演算法複雜度為o 1 2 n 2 3 2n,儘管pow函式的實現方法是利用遞迴優化後的,但是演算法複雜度還是達到了o nlo...