Fibonacci数列

for k = 1:6k = int16(k);fprintf('f%d = %d\n', k, Fibonacci(k));
endfunction fk = Fibonacci(k)assert(isinteger(k) && numel(k)==1 && k>=1);if k > 2%fk = Fibonacci(k-1) + Fibonacci(k-2);dp = ones(k,1);for i = 3:kdp(i) = dp(i-1) + dp(i-2);endfk = dp(k);elsefk = 1;end
end

f1 = 1
f2 = 1
f3 = 2
f4 = 3
f5 = 5
f6 = 8

Fibonacci通项

最简单的证明的方法是使用数学归纳法.
f n = ϕ n − ψ n ϕ − ψ f_n = \frac{\phi^n - \psi^n}{\phi - \psi} fn​=ϕ−ψϕn−ψn​
f n + f n + 1 = ϕ n + 1 − ψ n + 1 + ϕ n − ψ n ϕ − ψ = ( ϕ + 1 ) ϕ n − ( ψ + 1 ) ψ n ϕ − ψ = ϕ 2 ϕ n − ψ 2 ψ n ϕ − ψ = f n + 2 f_{n} + f_{n+1} = \frac{\phi^{n+1} - \psi^{n+1} + \phi^{n} - \psi^{n}}{\phi - \psi} = \frac{(\phi+1)\phi^{n} - (\psi+1)\psi^{n}}{\phi - \psi} = \frac{\phi^2 \phi^{n} - \psi^2 \psi^{n}}{\phi - \psi} = f_{n+2} fn​+fn+1​=ϕ−ψϕn+1−ψn+1+ϕn−ψn​=ϕ−ψ(ϕ+1)ϕn−(ψ+1)ψn​=ϕ−ψϕ2ϕn−ψ2ψn​=fn+2​
ϕ = 1 + 5 2 \phi = \frac{1+\sqrt{5}}{2} ϕ=21+5 ​​, ψ = 1 − 5 2 \psi = \frac{1-\sqrt{5}}{2} ψ=21−5 ​​, ϕ + 1 = ϕ 2 \phi + 1 = \phi^2 ϕ+1=ϕ2, ψ + 1 = ψ 2 \psi + 1 = \psi^2 ψ+1=ψ2, 原因是他们是 x 2 − x − 1 = 0 x^2-x-1=0 x2−x−1=0的根.

使用初等数学方法求解Fibonacci通项主要通过化归到求解等比数列及其求和的通项.

f n = f n − 1 + f n − 2 f_{n} = f_{n-1} + f_{n-2} fn​=fn−1​+fn−2​
g n − 1 = f n + B f n − 1 = A ( f n − 1 + B f n − 2 ) = A g n − 2 g_{n-1} = f_{n} + B f_{n-1} = A (f_{n-1} + B f_{n-2}) = A g_{n-2} gn−1​=fn​+Bfn−1​=A(fn−1​+Bfn−2​)=Agn−2​
g n − 1 = f n + − 1 − 5 2 f n − 1 = 1 − 5 2 ( f n − 1 + − 1 − 5 2 f n − 2 ) = 1 − 5 2 g n − 1 g_{n-1} = f_{n} + \frac{-1-\sqrt{5}}{2} f_{n-1} = \frac{1-\sqrt{5}}{2} \left( f_{n-1} + \frac{-1-\sqrt{5}}{2} f_{n-2} \right) = \frac{1-\sqrt{5}}{2} g_{n-1} gn−1​=fn​+2−1−5 ​​fn−1​=21−5 ​​(fn−1​+2−1−5 ​​fn−2​)=21−5 ​​gn−1​
g n − 1 = f n + − 1 + 5 2 f n − 1 = 1 + 5 2 ( f n − 1 + − 1 + 5 2 f n − 2 ) = 1 + 5 2 g n − 1 g_{n-1} = f_{n} + \frac{-1+\sqrt{5}}{2} f_{n-1} = \frac{1+\sqrt{5}}{2} \left( f_{n-1} + \frac{-1+\sqrt{5}}{2} f_{n-2} \right) = \frac{1+\sqrt{5}}{2} g_{n-1} gn−1​=fn​+2−1+5 ​​fn−1​=21+5 ​​(fn−1​+2−1+5 ​​fn−2​)=21+5 ​​gn−1​
{ g n = A n g 0 } \{g_n = A^n g_0\} {gn​=Ang0​}呈等比数列, 容易求解通项.
f n = ( − B ) n ( f 0 + ∑ k = 1 n g n − k ( − B ) n − k + 1 ) = ( − B ) n ( f 0 + ∑ k = 1 n A n − k g 0 ( − B ) n − k + 1 ) = ( − B ) n ( f 0 + g 0 − B ∑ k = 1 n ( A − B ) n − k ) f_n = (-B)^n \left( f_0 + \sum\limits_{k=1}^{n} \frac{g_{n-k}}{(-B)^{n-k+1}} \right) = (-B)^n \left( f_0 + \sum\limits_{k=1}^{n} \frac{A^{n-k} g_0}{(-B)^{n-k+1}} \right) = (-B)^n \left( f_0 + \frac{g_0}{-B} \sum\limits_{k=1}^{n} \left(\frac{A}{-B}\right)^{n-k} \right) fn​=(−B)n(f0​+k=1∑n​(−B)n−k+1gn−k​​)=(−B)n(f0​+k=1∑n​(−B)n−k+1An−kg0​​)=(−B)n(f0​+−Bg0​​k=1∑n​(−BA​)n−k)呈等比数列求和, 容易求解通项.

使用高等数学方法求解Fibonacci通项主要通过化归到频域的多项式真分式(proper polynomial fraction).

离散时间线性时不变系统
x [ n ] = x [ n − 1 ] + x [ n − 2 ] x[n] = x[n-1] + x[n-2] x[n]=x[n−1]+x[n−2]
连续化(上采样)
x ( t ) δ T ( t ) = ∑ n = 0 + ∞ x ( t ) δ ( t − n T ) = ∑ n = 0 + ∞ x ( n T ) δ ( t − n T ) x(t) \delta_T(t) = \sum\limits_{n=0}^{+\infty} x(t) \delta(t-nT) = \sum\limits_{n=0}^{+\infty} x(nT) \delta(t-nT) x(t)δT​(t)=n=0∑+∞​x(t)δ(t−nT)=n=0∑+∞​x(nT)δ(t−nT)
Laplace变换
Z [ x [ n ] ] = L [ x ( t ) ] = ∑ n = 0 + ∞ x ( n T ) e − s n T = ∑ n = 0 + ∞ x [ n ] z − n \mathcal{Z}\left[x[n]\right] = \mathcal{L}\left[x(t)\right] = \sum\limits_{n=0}^{+\infty} x(nT) e^{-snT} = \sum\limits_{n=0}^{+\infty} x[n] z^{-n} Z[x[n]]=L[x(t)]=n=0∑+∞​x(nT)e−snT=n=0∑+∞​x[n]z−n
Z变换
X ( z ) = z − 1 ( X ( z ) − x [ − 1 ] z ) + z − 2 ( X ( z ) − x [ − 1 ] z − x [ − 2 ] z 2 ) = ( z − 1 + z − 2 ) X ( z ) + A 0 + A 1 z − 1 X(z) = z^{-1} \left( X(z) - x[-1]z \right) + z^{-2} \left( X(z) - x[-1]z - x[-2]z^{2} \right) = \left( z^{-1} + z^{-2} \right) X(z) + A_0 + A_1 z^{-1} X(z)=z−1(X(z)−x[−1]z)+z−2(X(z)−x[−1]z−x[−2]z2)=(z−1+z−2)X(z)+A0​+A1​z−1
逆Z变换
x [ n ] = L − 1 [ X ( z ) ] = L − 1 [ A 0 + A 1 z − 1 1 − z − 1 − z − 2 ] = L − 1 [ 5 − 1 2 5 A 0 + A 1 z − 1 1 − 1 − 5 2 z − 1 + 5 + 1 2 5 A 0 + A 1 z − 1 1 − 1 + 5 2 z − 1 ] x[n] = \mathcal{L}^{-1}\left[X(z)\right] = \mathcal{L}^{-1}\left[ \frac{A_0 + A_1 z^{-1}}{1 - z^{-1} - z^{-2}} \right] = \mathcal{L}^{-1}\left[ \frac{\sqrt{5} - 1}{2 \sqrt{5}} \frac{A_0 + A_1 z^{-1}}{1 - \frac{1-\sqrt{5}}{2} z^{-1}} + \frac{\sqrt{5} + 1}{2 \sqrt{5}} \frac{A_0 + A_1 z^{-1}}{1 - \frac{1+\sqrt{5}}{2} z^{-1}} \right] x[n]=L−1[X(z)]=L−1[1−z−1−z−2A0​+A1​z−1​]=L−1[25 ​5 ​−1​1−21−5 ​​z−1A0​+A1​z−1​+25 ​5 ​+1​1−21+5 ​​z−1A0​+A1​z−1​]
= ( 1 − 5 2 ) n ( 5 − 1 2 5 A 0 + 5 − 1 2 5 A 1 1 − 5 2 ) + ( 1 + 5 2 ) n ( 5 + 1 2 5 A 0 + 5 + 1 2 5 A 1 1 + 5 2 ) = \left( \frac{1-\sqrt{5}}{2} \right)^n \left( \frac{\sqrt{5} - 1}{2 \sqrt{5}} A_0 + \frac{\sqrt{5} - 1}{2 \sqrt{5}} \frac{A_1}{\frac{1-\sqrt{5}}{2}} \right) + \left( \frac{1+\sqrt{5}}{2} \right)^n \left( \frac{\sqrt{5} + 1}{2 \sqrt{5}} A_0 + \frac{\sqrt{5} + 1}{2 \sqrt{5}} \frac{A_1}{\frac{1+\sqrt{5}}{2}} \right) =(21−5 ​​)n(25 ​5 ​−1​A0​+25 ​5 ​−1​21−5 ​​A1​​)+(21+5 ​​)n(25 ​5 ​+1​A0​+25 ​5 ​+1​21+5 ​​A1​​)
= ( 1 − 5 2 ) n ( 5 − 1 2 5 A 0 + A 1 5 ) + ( 1 + 5 2 ) n ( 5 + 1 2 5 A 0 + A 1 5 ) = \left( \frac{1-\sqrt{5}}{2} \right)^n \left( \frac{\sqrt{5} - 1}{2 \sqrt{5}} A_0 + \frac{A_1}{\sqrt{5}} \right) + \left( \frac{1+\sqrt{5}}{2} \right)^n \left( \frac{\sqrt{5} + 1}{2 \sqrt{5}} A_0 + \frac{A_1}{\sqrt{5}} \right) =(21−5 ​​)n(25 ​5 ​−1​A0​+5 ​A1​​)+(21+5 ​​)n(25 ​5 ​+1​A0​+5 ​A1​​)
= ( 1 − 5 2 ) n ( 5 − 1 2 A 0 ^ + A 1 ^ ) + ( 1 + 5 2 ) n ( 5 + 1 2 A 0 ^ + A 1 ^ ) = \left( \frac{1-\sqrt{5}}{2} \right)^n \left( \frac{\sqrt{5} - 1}{2} \hat{A_0} + \hat{A_1} \right) + \left( \frac{1+\sqrt{5}}{2} \right)^n \left( \frac{\sqrt{5} + 1}{2} \hat{A_0} + \hat{A_1} \right) =(21−5 ​​)n(25 ​−1​A0​^​+A1​^​)+(21+5 ​​)n(25 ​+1​A0​^​+A1​^​)
边界条件
0 = x [ 0 ] = 5 A 0 ^ + 2 A 1 ^ 0 = x[0] = \sqrt{5} \hat{A_0} + 2 \hat{A_1} 0=x[0]=5 ​A0​^​+2A1​^​
1 = x [ 1 ] = 5 A 0 ^ + A 1 ^ 1 = x[1] = \sqrt{5} \hat{A_0} + \hat{A_1} 1=x[1]=5 ​A0​^​+A1​^​
求解待定值
A 0 ^ = 2 5 \hat{A_0} = \frac{2}{\sqrt{5}} A0​^​=5 ​2​
A 1 ^ = − 1 \hat{A_1} = -1 A1​^​=−1
求解解析解
x [ n ] = − 1 5 ( 1 − 5 2 ) n + 1 5 ( 1 + 5 2 ) n = f n x[n] = - \frac{1}{\sqrt{5}} \left( \frac{1-\sqrt{5}}{2} \right)^n + \frac{1}{\sqrt{5}} \left( \frac{1+\sqrt{5}}{2} \right)^n = f_n x[n]=−5 ​1​(21−5 ​​)n+5 ​1​(21+5 ​​)n=fn​

− 1 + 5 2 − 1 − 5 2 = − 1 \frac{-1+\sqrt{5}}{2} \frac{-1-\sqrt{5}}{2} = -1 2−1+5 ​​2−1−5 ​​=−1
z − 2 + z − 1 − 1 = ( − 1 − 5 2 − z − 1 ) ( − 1 + 5 2 − z − 1 ) = − 1 − 5 2 ( 1 − 1 − 1 − 5 2 z − 1 ) − 1 + 5 2 ( 1 − 1 − 1 + 5 2 z − 1 ) = − ( 1 + − 1 + 5 2 z − 1 ) ( 1 + − 1 − 5 2 z − 1 ) z^{-2} + z^{-1} - 1 = \left(\frac{-1-\sqrt{5}}{2} - z^{-1}\right) \left(\frac{-1+\sqrt{5}}{2} - z^{-1}\right) = \frac{-1-\sqrt{5}}{2} \left(1 - \frac{1}{\frac{-1-\sqrt{5}}{2}} z^{-1}\right) \frac{-1+\sqrt{5}}{2} \left(1 - \frac{1}{\frac{-1+\sqrt{5}}{2}} z^{-1}\right) = - \left(1 + \frac{-1+\sqrt{5}}{2} z^{-1}\right) \left(1 + \frac{-1-\sqrt{5}}{2} z^{-1}\right) z−2+z−1−1=(2−1−5 ​​−z−1)(2−1+5 ​​−z−1)=2−1−5 ​​(1−2−1−5 ​​1​z−1)2−1+5 ​​(1−2−1+5 ​​1​z−1)=−(1+2−1+5 ​​z−1)(1+2−1−5 ​​z−1)
1 ( 1 + − 1 + 5 2 z − 1 ) ( 1 + − 1 − 5 2 z − 1 ) = 5 − 1 2 5 1 1 + − 1 + 5 2 z − 1 + 5 + 1 2 5 1 1 + − 1 − 5 2 z − 1 = 5 − 1 2 5 1 1 − 1 − 5 2 z − 1 + 5 + 1 2 5 1 1 − 1 + 5 2 z − 1 \frac{1}{\left(1 + \frac{-1+\sqrt{5}}{2} z^{-1}\right) \left(1 + \frac{-1-\sqrt{5}}{2} z^{-1}\right)} = \frac{\sqrt{5} - 1}{2 \sqrt{5}} \frac{1}{1 + \frac{-1+\sqrt{5}}{2} z^{-1}} + \frac{\sqrt{5} + 1}{2 \sqrt{5}} \frac{1}{1 + \frac{-1-\sqrt{5}}{2} z^{-1}} = \frac{\sqrt{5} - 1}{2 \sqrt{5}} \frac{1}{1 - \frac{1-\sqrt{5}}{2} z^{-1}} + \frac{\sqrt{5} + 1}{2 \sqrt{5}} \frac{1}{1 - \frac{1+\sqrt{5}}{2} z^{-1}} (1+2−1+5 ​​z−1)(1+2−1−5 ​​z−1)1​=25 ​5 ​−1​1+2−1+5 ​​z−11​+25 ​5 ​+1​1+2−1−5 ​​z−11​=25 ​5 ​−1​1−21−5 ​​z−11​+25 ​5 ​+1​1−21+5 ​​z−11​

Fibonacci求和通项

可以通过等比数列证明.
Fibonacci通项公式是等比数列之和, Fibonacci求和通项是等比数列求和之和.

可以通过递推关系证明.

f 2 + ∑ k = 1 n f k = f 2 + f 1 = f 3 f 3 + ∑ k = 2 n f k = ⋯ = f m + f m − 1 = f m + 1 f m + 1 + ∑ k = m n f k = ⋯ = f n − 1 + f n − 2 = f n f n + ( f n − 1 + f n ) = f n − 1 + f n = f n + 1 f n + f n + 1 = f n + f n + 1 = f n + 2 f n + 2 f_2 + \sum\limits_{k=1}^{n} f_k \stackrel{f_2+f_1 = f_3}{=} f_3 + \sum\limits_{k=2}^{n} f_k = \cdots \stackrel{f_{m}+f_{m-1} = f_{m+1}}{=} f_{m+1} + \sum\limits_{k=m}^{n} f_k = \cdots \stackrel{f_{n-1}+f_{n-2} = f_{n}}{=} f_{n} + \left( f_{n-1} + f_{n} \right) \stackrel{f_{n-1}+f_{n} = f_{n+1}}{=} f_{n} + f_{n+1} \stackrel{f_{n}+f_{n+1} = f_{n+2}}{=} f_{n+2} f2​+k=1∑n​fk​=f2​+f1​=f3​f3​+k=2∑n​fk​=⋯=fm​+fm−1​=fm+1​fm+1​+k=m∑n​fk​=⋯=fn−1​+fn−2​=fn​fn​+(fn−1​+fn​)=fn−1​+fn​=fn+1​fn​+fn+1​=fn​+fn+1​=fn+2​fn+2​

∑ k = 1 n f k = f n + 2 − f 2 = f n + 2 − 1 \sum\limits_{k=1}^{n} f_k = f_{n+2} - f_{2} = f_{n+2} - 1 k=1∑n​fk​=fn+2​−f2​=fn+2​−1

∑ k = 1 n k f k \sum\limits_{k=1}^{n} kf_k k=1∑n​kfk​

频域微分

Z [ n x [ n ] ] = d X ( z ) d z − 1 \mathcal{Z}\left[nx[n]\right] = \frac{\mathrm{d} X(z)}{\mathrm{d}z^{-1}} Z[nx[n]]=dz−1dX(z)​

时域卷积

Z [ ∑ k = 0 n k x [ k ] ] = Z [ n x [ n ] ∗ u [ n ] ] = d X ( z ) d z − 1 ⋅ 1 1 − z − 1 \mathcal{Z}\left[\sum\limits_{k=0}^{n} kx[k]\right] = \mathcal{Z}\left[nx[n] \ast u[n]\right] = \frac{\mathrm{d} X(z)}{\mathrm{d}z^{-1}} \cdot \frac{1}{1 - z^{-1}} Z[k=0∑n​kx[k]]=Z[nx[n]∗u[n]]=dz−1dX(z)​⋅1−z−11​

∑ k = 1 n k f k = ∑ m = 1 n ∑ k = m n f k = n ∑ k = 1 n f k − ∑ m = 1 n ∑ k = 1 m − 1 f k = n ∑ k = 1 n f k − ∑ m = 1 n − 1 ∑ k = 1 m f k \sum\limits_{k=1}^{n} k f_{k} = \sum\limits_{m=1}^{n} \sum\limits_{k=m}^{n} f_{k} = n \sum\limits_{k=1}^{n} f_{k} - \sum\limits_{m=1}^{n} \sum\limits_{k=1}^{m-1} f_{k} = n \sum\limits_{k=1}^{n} f_{k} - \sum\limits_{m=1}^{n-1} \sum\limits_{k=1}^{m} f_{k} k=1∑n​kfk​=m=1∑n​k=m∑n​fk​=nk=1∑n​fk​−m=1∑n​k=1∑m−1​fk​=nk=1∑n​fk​−m=1∑n−1​k=1∑m​fk​
= n ( f k + 2 − 1 ) − ∑ m = 1 n − 1 ( f m + 2 − 1 ) = n ( f k + 2 − 1 ) − ∑ m = 3 n + 1 ( f m − 1 ) = n f k + 2 − ∑ m = 3 n + 1 f m − 1 = n \left( f_{k+2} - 1 \right) - \sum\limits_{m=1}^{n-1} \left( f_{m+2} - 1 \right) = n \left( f_{k+2} - 1 \right) - \sum\limits_{m=3}^{n+1} \left( f_{m} - 1 \right) = n f_{k+2} - \sum\limits_{m=3}^{n+1} f_m - 1 =n(fk+2​−1)−m=1∑n−1​(fm+2​−1)=n(fk+2​−1)−m=3∑n+1​(fm​−1)=nfk+2​−m=3∑n+1​fm​−1
= n f k + 2 − ( f n + 3 − 1 − f 1 − f 2 ) − 1 = n f k + 2 − f n + 3 + 2 = n f_{k+2} - \left( f_{n+3} - 1 - f_1 - f_2 \right) - 1 = n f_{k+2} - f_{n+3} + 2 =nfk+2​−(fn+3​−1−f1​−f2​)−1=nfk+2​−fn+3​+2

Fibonacci分布的Huffman树

因为
∑ k = 1 n f k = f n + 2 − 1 \sum\limits_{k=1}^{n} f_k = f_{n+2} - 1 k=1∑n​fk​=fn+2​−1
所以( n ⩾ 3 n \geqslant 3 n⩾3)
f n + 1 < ∑ k = 1 n f k < f n + 2 f_{n+1} < \sum\limits_{k=1}^{n} f_k < f_{n+2} fn+1​<k=1∑n​fk​<fn+2​

因此 f k f n + 2 − 1 \frac{f_k}{f_{n+2}-1} fn+2​−1fk​​的Huffman树是
c o d e ( f k ) = { 1 ⋯ 1 ⏟ ( n − k ) o n e s 0 k > 1 1 ⋯ 1 ⏟ ( n − 1 ) o n e s k = 1 \mathtt{code}(f_k) = \begin{cases} \underbrace{\mathtt{1 \cdots 1}}_{(n-k) ~ \mathrm{ones}} \mathtt{0} & k > 1 \\ \underbrace{\mathtt{1 \cdots 1}}_{(n-1) ~ \mathrm{ones}} & k = 1 \\ \end{cases} code(fk​)=⎩⎪⎪⎨⎪⎪⎧​(n−k) ones 1⋯1​​0(n−1) ones 1⋯1​​​k>1k=1​

#mermaid-svg-MQUzgUAg8qN0QvxJ {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-MQUzgUAg8qN0QvxJ .error-icon{fill:#552222;}#mermaid-svg-MQUzgUAg8qN0QvxJ .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-MQUzgUAg8qN0QvxJ .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-MQUzgUAg8qN0QvxJ .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-MQUzgUAg8qN0QvxJ .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-MQUzgUAg8qN0QvxJ .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-MQUzgUAg8qN0QvxJ .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-MQUzgUAg8qN0QvxJ .marker{fill:#333333;stroke:#333333;}#mermaid-svg-MQUzgUAg8qN0QvxJ .marker.cross{stroke:#333333;}#mermaid-svg-MQUzgUAg8qN0QvxJ svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-MQUzgUAg8qN0QvxJ .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-MQUzgUAg8qN0QvxJ .cluster-label text{fill:#333;}#mermaid-svg-MQUzgUAg8qN0QvxJ .cluster-label span{color:#333;}#mermaid-svg-MQUzgUAg8qN0QvxJ .label text,#mermaid-svg-MQUzgUAg8qN0QvxJ span{fill:#333;color:#333;}#mermaid-svg-MQUzgUAg8qN0QvxJ .node rect,#mermaid-svg-MQUzgUAg8qN0QvxJ .node circle,#mermaid-svg-MQUzgUAg8qN0QvxJ .node ellipse,#mermaid-svg-MQUzgUAg8qN0QvxJ .node polygon,#mermaid-svg-MQUzgUAg8qN0QvxJ .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-MQUzgUAg8qN0QvxJ .node .label{text-align:center;}#mermaid-svg-MQUzgUAg8qN0QvxJ .node.clickable{cursor:pointer;}#mermaid-svg-MQUzgUAg8qN0QvxJ .arrowheadPath{fill:#333333;}#mermaid-svg-MQUzgUAg8qN0QvxJ .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-MQUzgUAg8qN0QvxJ .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-MQUzgUAg8qN0QvxJ .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-MQUzgUAg8qN0QvxJ .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-MQUzgUAg8qN0QvxJ .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-MQUzgUAg8qN0QvxJ .cluster text{fill:#333;}#mermaid-svg-MQUzgUAg8qN0QvxJ .cluster span{color:#333;}#mermaid-svg-MQUzgUAg8qN0QvxJ div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-MQUzgUAg8qN0QvxJ :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

0
1
0
1
{fn, … ,f1}(code=xxx11...)
fn+1(code=xxx01)
fn+2(code=xxx0)
fn+2-1
fn+3-1
#mermaid-svg-B6OQAnFxwaNhB5Kd {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-B6OQAnFxwaNhB5Kd .error-icon{fill:#552222;}#mermaid-svg-B6OQAnFxwaNhB5Kd .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-B6OQAnFxwaNhB5Kd .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-B6OQAnFxwaNhB5Kd .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-B6OQAnFxwaNhB5Kd .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-B6OQAnFxwaNhB5Kd .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-B6OQAnFxwaNhB5Kd .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-B6OQAnFxwaNhB5Kd .marker{fill:#333333;stroke:#333333;}#mermaid-svg-B6OQAnFxwaNhB5Kd .marker.cross{stroke:#333333;}#mermaid-svg-B6OQAnFxwaNhB5Kd svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-B6OQAnFxwaNhB5Kd .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-B6OQAnFxwaNhB5Kd .cluster-label text{fill:#333;}#mermaid-svg-B6OQAnFxwaNhB5Kd .cluster-label span{color:#333;}#mermaid-svg-B6OQAnFxwaNhB5Kd .label text,#mermaid-svg-B6OQAnFxwaNhB5Kd span{fill:#333;color:#333;}#mermaid-svg-B6OQAnFxwaNhB5Kd .node rect,#mermaid-svg-B6OQAnFxwaNhB5Kd .node circle,#mermaid-svg-B6OQAnFxwaNhB5Kd .node ellipse,#mermaid-svg-B6OQAnFxwaNhB5Kd .node polygon,#mermaid-svg-B6OQAnFxwaNhB5Kd .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-B6OQAnFxwaNhB5Kd .node .label{text-align:center;}#mermaid-svg-B6OQAnFxwaNhB5Kd .node.clickable{cursor:pointer;}#mermaid-svg-B6OQAnFxwaNhB5Kd .arrowheadPath{fill:#333333;}#mermaid-svg-B6OQAnFxwaNhB5Kd .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-B6OQAnFxwaNhB5Kd .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-B6OQAnFxwaNhB5Kd .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-B6OQAnFxwaNhB5Kd .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-B6OQAnFxwaNhB5Kd .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-B6OQAnFxwaNhB5Kd .cluster text{fill:#333;}#mermaid-svg-B6OQAnFxwaNhB5Kd .cluster span{color:#333;}#mermaid-svg-B6OQAnFxwaNhB5Kd div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-B6OQAnFxwaNhB5Kd :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

1
0
1
0
1
0
1
0
2
4
7
12
f1 = 1 (code=1111)
f2 = 1 (code=1110)
f3 = 2 (code=110)
f4 = 3 (code=10)
f5 = 5 (code=0)

Fibonacci分布的Huffman树的期望编码长度

− 1 f n + 2 − 1 + ∑ k = 1 n f k f n + 2 − 1 ( n + 1 − k ) = − 1 f n + 2 − 1 + ( n + 1 ) ∑ k = 1 n f k f n + 2 − 1 − ∑ k = 1 n k f k f n + 2 − 1 - \frac{1}{f_{n+2}-1} + \sum\limits_{k=1}^{n} \frac{f_k}{f_{n+2}-1} (n+1-k) = - \frac{1}{f_{n+2}-1} + (n+1) \sum\limits_{k=1}^{n} \frac{f_k}{f_{n+2}-1} - \frac{\sum\limits_{k=1}^{n} kf_k}{f_{n+2}-1} −fn+2​−11​+k=1∑n​fn+2​−1fk​​(n+1−k)=−fn+2​−11​+(n+1)k=1∑n​fn+2​−1fk​​−fn+2​−1k=1∑n​kfk​​
= n + 1 − 1 f n + 2 − 1 − n f k + 2 − f n + 3 + 2 f n + 2 − 1 = 1 + f n + 3 − n − 3 f n + 2 − 1 = f n + 3 + f n + 2 − n − 4 f n + 2 − 1 = f n + 4 − ( n + 4 ) f n + 2 − 1 = n+1 - \frac{1}{f_{n+2}-1} - \frac{n f_{k+2} - f_{n+3} + 2}{f_{n+2}-1} = 1 + \frac{f_{n+3} - n - 3}{f_{n+2}-1} = \frac{f_{n+3}+f_{n+2} - n - 4}{f_{n+2}-1} = \frac{f_{n+4} - (n+4)}{f_{n+2}-1} =n+1−fn+2​−11​−fn+2​−1nfk+2​−fn+3​+2​=1+fn+2​−1fn+3​−n−3​=fn+2​−1fn+3​+fn+2​−n−4​=fn+2​−1fn+4​−(n+4)​

(g) Fibonacci分布的Huffman树的期望编码长度的极限

lim ⁡ n → + ∞ f n + 4 − ( n + 4 ) f n + 2 − 1 = lim ⁡ n → + ∞ ϕ n + 4 − ψ n + 4 ϕ − ψ − ( n + 4 ) ϕ n + 2 − ψ n + 2 ϕ − ψ − 1 = lim ⁡ n → + ∞ ϕ n + 4 ϕ n + 2 = ϕ 2 = ϕ + 1 = 3 + 5 2 \lim_{n \to +\infty} \frac{f_{n+4} - (n+4)}{f_{n+2}-1} = \lim_{n \to +\infty} \frac{\frac{\phi^{n+4} - \psi^{n+4}}{\phi - \psi} - (n+4)}{\frac{\phi^{n+2} - \psi^{n+2}}{\phi - \psi} - 1} = \lim_{n \to +\infty} \frac{\phi^{n+4}}{\phi^{n+2}} = \phi^2 = \phi + 1 = \frac{3+\sqrt{5}}{2} limn→+∞​fn+2​−1fn+4​−(n+4)​=limn→+∞​ϕ−ψϕn+2−ψn+2​−1ϕ−ψϕn+4−ψn+4​−(n+4)​=limn→+∞​ϕn+2ϕn+4​=ϕ2=ϕ+1=23+5 ​​

ϕ = 1 + 5 2 \phi = \frac{1+\sqrt{5}}{2} ϕ=21+5 ​​, ψ = 1 − 5 2 \psi = \frac{1-\sqrt{5}}{2} ψ=21−5 ​​, ϕ + 1 = ϕ 2 \phi + 1 = \phi^2 ϕ+1=ϕ2, ψ + 1 = ψ 2 \psi + 1 = \psi^2 ψ+1=ψ2, 原因是他们是 x 2 − x − 1 = 0 x^2-x-1=0 x2−x−1=0的根.

Fibonacci其他恒等式

f 2 k − 1 = f 2 k − f 2 k − 2 ⟹ ∑ k = 1 n f 2 k − 1 = f 2 n − f 0 f_{2k-1} = f_{2k} - f_{2k-2} \implies \sum\limits_{k=1}^{n} f_{2k-1} = f_{2n} - f_{0} f2k−1​=f2k​−f2k−2​⟹k=1∑n​f2k−1​=f2n​−f0​
f 2 k = f 2 k + 1 − f 2 k − 1 ⟹ ∑ k = 1 n f 2 k = f 2 n + 1 − f 1 f_{2k} = f_{2k+1} - f_{2k-1} \implies \sum\limits_{k=1}^{n} f_{2k} = f_{2n+1} - f_{1} f2k​=f2k+1​−f2k−1​⟹k=1∑n​f2k​=f2n+1​−f1​
∑ k = 1 n ( − 1 ) k f k = ( − 1 ) n f n − 1 − 1 \sum\limits_{k=1}^{n} (-1)^k f_k = (-1)^n f_{n-1} - 1 k=1∑n​(−1)kfk​=(−1)nfn−1​−1
f k 2 = f k + 1 f k − f k f k − 1 ⟹ ∑ k = 1 n f k 2 = f n f n + 1 f_{k}^2 = f_{k+1}f_{k} - f_{k}f_{k-1} \implies \sum\limits_{k=1}^{n} f_k^2 = f_{n}f_{n+1} fk2​=fk+1​fk​−fk​fk−1​⟹k=1∑n​fk2​=fn​fn+1​
f n = f k + 1 f n − k + f k f n − k − 1 ⟹ f n + 1 2 − f n − 1 2 = f 2 n f_{n} = f_{k+1}f_{n-k} + f_{k}f_{n-k-1} \implies f_{n+1}^2 - f_{n-1}^2 = f_{2n} fn​=fk+1​fn−k​+fk​fn−k−1​⟹fn+12​−fn−12​=f2n​
f n = ∑ k = 1 n − 1 ( n − 1 − k k ) f_{n} = \sum\limits_{k=1}^{n-1} \binom{n-1-k}{k} fn​=k=1∑n−1​(kn−1−k​) ( ( N k ) = 0 \binom{N}{k} = 0 (kN​)=0 if N < k N < k N<k)
∑ k = 1 + ∞ f k k ! = e ϕ − e ψ 5 \sum\limits_{k=1}^{+\infty} \frac{f_k}{k!} = \frac{e^{\phi} - e^{\psi}}{\sqrt{5}} k=1∑+∞​k!fk​​=5 ​eϕ−eψ​
∑ k = 1 n 1 f 2 k = 3 − f 2 n − 1 f 2 n \sum\limits_{k=1}^{n} \frac{1}{f_{2^k}} = 3 - \frac{f_{2^n-1}}{f_{2^n}} k=1∑n​f2k​1​=3−f2n​f2n−1​​
https://mathworld.wolfram.com/ReciprocalFibonacciConstant.html

Fibonacci数列 Huffman树相关推荐

  1. Fibonacci数列时间复杂度之美妙

    Fibonacci数列: fib(0)=1 fib(1)=1 fib(n)=fib(n-1)+fib(n-2) 上课老师出了一道题,求下列函数的时间复杂度: int fib(int d) {if (d ...

  2. 三种Fibonacci数列第n项计算方法及其优劣分析

    感谢国防科技大学刘万伟老师和中国传媒大学胡凤国两位老师提供的思路,文章作者不能超过8个字符,我的名字就写个姓吧,名字不写了^_^.另外,除了本文讨论的三种方法,之前的文章中还讨论了另外几种方法,详见相 ...

  3. python构建huffman树_python:哈夫曼树,PythonHuffuman

    Python:Huffuman树 题目 问题描述 Huffman树在编码中有着广泛的应用.在这里,我们只关心Huffman树的构造过程. 给出一列数{pi}={p0, p1, -, pn-1},用这列 ...

  4. C. DZY Loves Fibonacci Numbers(线段树fibonacci)

    C. DZY Loves Fibonacci Numbers(线段树&fibonacci) 考虑fibonaccifibonaccifibonacci的几个性质: 两个的广义斐波那契数列和仍是 ...

  5. Huffman树在编码中有着广泛的应用。在这里,我们只关心Huffman树的构造过程。

    Huffman树在编码中有着广泛的应用.在这里,我们只关心Huffman树的构造过程. 给出一列数{pi}={p0, p1, -, pn-1},用这列数构造Huffman树的过程如下: 1. 找到{p ...

  6. Java学习——数据结构——Huffman树

    学习尚硅谷韩顺平老师的Java数据结构笔记,详情请移步网站 1.介绍 (1) 给定 n 个权值作为 n 个叶子结点,构造一棵二叉树,若该树的带权路径长度(wpl)达到最小,称这样的二叉树为最优二叉树, ...

  7. 基础练习 Huffuman树 _C语言和C++描述!(Huffman树在编码中有着广泛的应用。在这里,我们只关心Huffman树的构造过程。   给出一列数{pi}={p0, p1, …, pn-1)

    问题描述 Huffman树在编码中有着广泛的应用.在这里,我们只关心Huffman树的构造过程. 给出一列数{pi}={p0, p1, -, pn-1},用这列数构造Huffman树的过程如下: 1. ...

  8. huffman树和huffman编码

    不知道为什么,我写的代码都是又臭又长. 直接上代码: #include <iostream> #include <cstdarg> using namespace std; c ...

  9. 求Fibonacci数列的前20项

    <程序设计基础-c语言>杨莉 刘鸿翔 ISBN-978-7-03-032903-5 p112 习题4 2.编程求Fibonacci数列的前20项. Fibonacci数列的定义:F0=0, ...

最新文章

  1. 矩形内接任意多边形抠图(可以羽化边缘)
  2. 求1/2+1/4+...+1/n
  3. java和c语言的区别_单片机为什么一直用C语言,不用其他编程语言?只有学过的知道...
  4. Git 搭建私有仓库
  5. 一天干掉一只Monkey计划(二)——热流扰动,径向模糊
  6. redisson 看门狗_Redisson的分布式锁
  7. 刘志明 | 知识图谱及金融相关
  8. 我发起了一个 ILBC 的 子项目 EScript
  9. 设计模式你怎么看?--代理模式
  10. 使用dbstart 和dbshut 脚本来自动化启动和关闭数据库
  11. 通过EasyRecovery如何恢复被永久删除的音频?
  12. PowerDesigner16工具学习笔记-建立CDM
  13. python实现pdf转换成图片
  14. bbys_tu_2016
  15. 解决Android Studio的ADB连接不到手机问题
  16. 170928 逆向-Reversing.kr(Direct3D_FPS)
  17. 1.4418不锈钢规范及使用环境详解
  18. PV操作与信号灯及例子+三大操作系统共同点的线程通信
  19. 投影仪如何选择?怎样选购家用投影仪
  20. GDOI2018爆炸记

热门文章

  1. 用网线连接两台电脑传输文件
  2. CAT Caterpillar ET is really a exceptional obd2 solution
  3. 快如闪电的开源搜索引擎:Typesense ,比Elasticsearch更快更易用
  4. ubuntu 安装 OpenBLAS
  5. 阶乘-scratch2实现
  6. 干掉PPT!现场编码的职级晋升答辩你参加过么?
  7. Java实现RSA 2048加密解密
  8. 计算机机房坏境设施演练,计算机机房环境设施应急演练方案-20210707025954.pdf-原创力文档...
  9. 密码必须符合复杂性要求
  10. 通过设置路由器屏避小米电视盒子广告