齊次方程到矩陣(番外篇)

2021-09-06 18:17:28 字數 3520 閱讀 2328

最近做題,老是遇到了一些公式比如an=an-1+an-2,然後給你乙個巨大n的資料,要你求an的值,然後以前做起來,還是比較的順手的,但是時間抹去了記得的記憶,說明沒有學會,於是又花掉一些時間,來回顧以及學習快速矩陣演算法。

其實,每一次我們想到快速矩陣的時候,就可能會產生乙個問題? 矩陣該怎麼構造,在已經知道了公式的情況下。

不妨以乙個我們所收悉的列子:(引自一位 )

求fibonacci數列第n項的方法是 構造常係數矩陣

(一)   fibonacci數列f[n]=f[n-1]+f[n-2],f[1]=f[2]=1的第n項快速求法(不考慮高精度)

解法:考慮1×2的矩陣|f[n-2],f[n-1]|。根據fibonacci數列的遞推關係,我們可以通過乘以乙個2×2的矩陣a,得到矩陣:|f[n-1],f[n]|。

即:|f[n-2],f[n-1]|*a = 【f[n-1],f[n]】=【f[n-1],f[n-1]+f[n-2]】

很容易構造出這個2×2矩陣a,即:

0 1

1 1所以,有【f[1],f[2]】×a=【f[2],f[3]】

又因為矩陣乘法滿足結合律,故有:

【f[1],f[2]】×a ^(n-1) =【f[n],f[n+1]】

這個矩陣的第乙個元素f[n]即為所求。

(二)   數列f[n]=f[n-1]+f[n-2]+1,f[1]=f[2]=1的第n項的快速求法(不考慮高精度)

解法:仿照前例,考慮1×3的矩陣【f[n-2],f[n-1],1】,希望求得某3×3的矩陣a,使得此1×3的矩陣乘以a得到矩陣:【f[n-1],f[n],1】

即:【f[n-2],f[n-1],1】* a =【f[n-1],f[n],1】=【f[n-1],f[n-1]+f[n-2]+1,1】

容易構造出這個3×3的矩陣a,即:

0 1 0

1 1 0

0 1 1

故:【f[1],f[2],1】* a^(n-1) = 【f[n],f[n+1],1】

(三)數列f[n]=f[n-1]+f[n-2]+n+1,f[1]=f[2]=1的第n項的快速求法(不考慮高精度).

解法:仿照前例,考慮1×4的矩陣【f[n-2],f[n-1],n,1】,希望求得某4×4的矩陣a,使得此1×4的矩陣乘以a得到矩陣:【f[n-1],f[n],n+1,1】

即:【f[n-2],f[n-1],n,1】* a  = 【f[n-1],f[n],n+1,1】=【f[n-1],f[n-1]+f[n-2]+n+1,n+1,1】

容易構造出這個4×4的矩陣a,即:

0 1 0 0

1 1 0 0

0 1 1 0

0 1 1 1

故:【f[1],f[2],3,1】* a^(n-1) = 【f[n],f[n+1],n+2,1】

(四)   數列f[n]=f[n-1]+f[n-2],f[1]=f[2]=1的前n項和s[n]=f[1]+f[2]+……+f[n]的快速求法(不考慮高精度).

解法:仿照之前的思路,考慮1×3的矩陣【f[n-2],f[n-1],s[n-2]】,我們希望通過乘以乙個3×3的矩陣a,得到1×3的矩陣:【f[n-1],f[n],s[n-1]】

即:【f[n-2],f[n-1],s[n-2]】 * a  = 【f[n-1],f[n],s[n-1]】=【f[n-1],f[n-1]+f[n-2],s[n-2]+f[n-1]】

容易得到這個3×3的矩陣a是:

0 1 0

1 1 1

0 0 1

這種方法的矩陣規模是(r+1)*(r+1)

f(1)=f(2)=s(1)=1 ,所以,有

【f(1),f(2),s(1)】* a  = 【f(2),f(3),s(2)】

故:【f(1),f(2),s(1)】* a^(n-1)  = 【f(n),f(n+1),s(n)】

(五)   數列f[n]=f[n-1]+f[n-2]+n+1,f[1]=f[2]=1的前n項和s[n]=f[1]+f[2]+……+f[n]的快速求法(不考慮高精度).

解法:考慮1×5的矩陣【f[n-2],f[n-1],s[n-2],n,1】,

我們需要找到乙個5×5的矩陣a,使得它乘以a得到如下1×5的矩陣【f[n-1],f[n],s[n-1],n+1,1】

即:【f[n-2],f[n-1],s[n-2],n,1】* a  =【f[n-1],f[n],s[n-1],n+1,1】

=【f[n-1], f[n-1]+f[n-2]+n+1,s[n-2]+f[n-1],n+1,1】

容易構造出a為:

0 1 0 0 0

1 1 1 0 0

0 0 1 0 0

0 1 0 1 0

0 1 0 1 1

故:【f(1),f(2),s(1),3,1】* a^(n-1)  = 【f(n),f(n+1),s(n),n+2,1】

一般地,如果有f[n]=p*f[n-1]+q*f[n-2]+r*n+s

可以構造矩陣a為:

0  q  0  0  0

1  p  1  0  0

0  0  1  0  0

0  r  0  1  0

0  s  0  1  1

更一般的,對於f[n]=sigma(a[n-i]*f[n-i])+poly(n),其中0

例如:a(0) = 1 , a(1) = 1 , a(n) = x * a(n - 1) + y * a(n - 2) (n >= 2);給定三個值n,x,y求s(n):s(n) = a(0)2 +a(1)2+……+a(n)2。

解:考慮1*4 的矩陣【s[n-2],a[n-1]^2,a[n-2]^2,a[n-1]*a[n-2]】

我們需要找到乙個4×4的矩陣a,使得它乘以a得到1×4的矩陣

【s[n-1],a[n]^2,a[n-1]^2,a[n]*a[n-1]】

即:【s[n-2],a[n-1]^2,a[n-2]^2,a[n-1]*a[n-2]】* a = 【s[n-1],a[n]^2,a[n-1]^2,a[n]*a[n-1]】

= 【s[n-2]+a[n-1]^2 , x^2 * a[n-1]^2 + y^2 * a[n-2]^2 + 2*x*y*a[n-1]*a[n-2] ,

a[n-1]^2 , x*a[n-1]^2 + y*a[n-2]a[n-1]】

可以構造矩陣a為:

1     0    0    0

1    x^2   1    x

0    y^2   0    0

0    2xy   0    y

故:【s[0],a[1]^2,a[0]^2,a[1]*a[0]】 * a^(n-1) = 【s[n-1],a[n]^2,a[n-1]^2,a[n]*a[n-1]】

所以:【s[0],a[1]^2,a[0]^2,a[1]*a[0]】 * a^(n) = 【s[n],a[n+1]^2,a[n]^2,a[n+1]*a[n]】

若a = (b * c ) 則at = ( b * c )t = ct * bt 故

高數 08 03 齊次方程

會識別齊次方程,會求解形如 dydx y x 的方 程叫做齊 次方程 解法 令 u yx 則y ux,d ydx u xd udx,代入原方 程 u xdud x u 分離 變數 d u u u dxx兩 邊積分,得 d u u u dxx 積分後再 用yx代 替u,便 得原方程 的通解.例1.解微...

數學分析教程 番外篇(2) 微分方程 學習感受

微分方程一般數學系是要專門開一門課講的,書中也並沒有寫這方面的內容,但是史濟懷老師上課還是講了。我覺得原因主要是因為他的授課物件是 少年班 的學生,以後不一定學數學,有機會仔細學微分方程。其次,把微分方程放在一元微積分後面,本身也很自然。授課的講義取自某本 高等數學 反正不是同濟的,大家只能一邊聽一...

一道非齊次方程組解的判定習題 行向量

設非齊次方程組am xnx b 則 a.當r a m時,方程組有解 b.當r a n 時,方程組有唯一解 c.當m n時,方程組有唯一解 d.當r a r n時,方程有無窮多組解 分析 本題主要想強調乙個結論 原來無關,變高 維度擴大 無關。這個結論有個兄弟 原來相關,變胖 數目變多 相關。向量通常...