矩阵乘幂优化k阶常系数线性递推关系
七、矩阵特征值的乘幂方法和反乘幂方法

1、用幂法计算矩阵A的主特征值和对应的特征向量。
function [k,lambda,Vk,Wc]=mifa(A,V0,jd,max1)lambda=0;k=1;Wc=1;jd=jd*0.1;state=1;V=V0;while((k<=max1)&(state==1))Vk=A*V;[m j]=max(abs(Vk));mk=m*sign(Vk(j));tzw=abs(lambda-mk);Vk=(1/mk)*Vk;txw=norm(V-Vk);Wc=max(txw,tzw);V=Vk;lambda=mk;state=0;if(Wc>jd)state=1;endk=k+1;endif(Wc<=jd)disp('迭代次数k,主特征值的近似值lambda,主特征向量的近似向量Vk,相邻两次迭代的误差Wc如下:')elsedisp('迭代次数k已经达到最大迭代次数max1,主特征值的迭代值lambda,主特征向量的迭代向量Vk,相邻两次迭代的误差Wc如下:')endVk=V;k=k-1;Wc;>> A=[1 -1;2 4];>> V0=[1,1]';>> [k,lambda,Vk,Wc]=mifa(A,V0,0.00001,100)迭代次数k,主特征值的近似值lambda,主特征向量的近似向量Vk,相邻两次迭代的误差Wc如下:k =33lambda =3.0000Vk =-0.50001.0000Wc =8.6919e-007>> [V,D]=eig(A)V =-0.7071 0.44720.7071 -0.8944D =2 00 3>> Dzd=max(diag(D))Dzd =3>> wuD=abs(Dzd-lambda)wuD =1.7384e-006>> wuV=V(:,2)./VkwuV =-0.8944-0.8944>> A=[1 2 3;2 1 3;3 3 6];>> V0=[1 1 1]';>> [k,lambda,Vk,Wc]=mifa(A,V0,0.00001,100)迭代次数k,主特征值的近似值lambda,主特征向量的近似向量Vk,相邻两次迭代的误差Wc如下:k =3lambda =9Vk =0.50000.50001.0000Wc =>> [V,D]=eig(A)V =0.7071 0.5774 0.4082-0.7071 0.5774 0.40820 -0.5774 0.8165D =-1.0000 0 00 -0.0000 00 0 9.0000>> Dzd=max(diag(D))Dzd =9>> wuD=abs(Dzd-lambda)wuD =>> wuV=V(:,2)./VkwuV =1.15471.1547-0.5774>> A=[1 2 2;1 -1 1;4 -12 1];>> V0=[1 1 1]';>> [k,lambda,Vk,Wc]=mifa(A,V0,0.00001,100)迭代次数k已经达到最大迭代次数max1,主特征值的迭代值lambda,主特征向量的迭代向量Vk,相邻两次迭代的误差Wc如下:k =100lambda =-0.0909Vk =1.00001.00001.0000Wc =1.9582>> [V,D]=eig(A)V =0.9045 -0.7255 -0.72550.3015 -0.2176 - 0.0725i -0.2176 + 0.0725i-0.3015 0.5804 - 0.2902i 0.5804 + 0.2902iD =1.0000 0 00 -0.0000 + 1.0000i 00 0 -0.0000 - 1.0000i>> Dzd=max(diag(D))Dzd =1.0000>> wuD=abs(Dzd-lambda)wuD =1.0909>> wuV=V(:,2)./VkwuV =-0.7255-0.2176 - 0.0725i0.5804 - 0.2902i(4)>> A=[-4 14 0;-5 13 0;-1 0 2];>> V0=[1 1 1]';>> [k,lambda,Vk,Wc]=mifa(A,V0,0.00001,100)迭代次数k,主特征值的近似值lambda,主特征向量的近似向量Vk,相邻两次迭代的误差Wc如下:k =22lambda =6.0000Vk =1.00000.7143-0.2500Wc =8.1744e-007>> [V,D]=eig(A)V =0 0.7974 0.66670 0.5696 0.33331.0000 -0.1994 -0.6667D =2.0000 0 00 6.0000 00 0 3.0000>> Dzd=max(diag(D))Dzd =6.0000>> wuD=abs(Dzd-lambda)wuD =8.1744e-007>> wuV=V(:,2)./VkwuV =0.79740.79740.79742、用原点位移反幂法计算矩阵A的特征值和对应的特征向量。
第七章求解递推关系2剖析

总结
对线性齐次递推式
hn a1hn1 a2hn2 ... ak hnk 0 (ak 0)
若 q1 , q2 , ... qt 是特征方程的全部互异的特征根,
qi是si重根(i 1,2,..., t ),则
其中
hn
H (1) n
H (2) n
...
特征根:
x3
齐次通解: Hn c3n 再求非齐特: Gn An B
代入递推式: Gn 3Gn1 4n
An B 3A(n 1) B 4n
(3A 4)n 3(B A)
比较系数:
A 3A 4 B 3(B A)
A 2 B 3
非齐次特解: Gn 2n 3
非齐特通解: hn c3n 2n 3
相应的特征方程为: xk a1 xk1 ... ak1 x ak 0
若 q 是特征方程的解, 则 qn 是齐次递推式的解.
性质4 对线性齐次递推式
hn a1hn1 a2hn2 ... ak hnk 0 (ak 0)
若 q1 , q2 , ... qk 是特征方程的k个不同的 特征根,则
解 特征方程: x2 4 x 4 0
x 22 0
二重特征根: x 2
通解:
hn c1 c2n2n
性质6 对线性齐次递推式
hn a1hn1 a2hn2 ... ak hnk 0 (ak 0)
若 q1,2 i e iθ
是 特 征 方 程 的 单 重 共 轭 复 根 , 则
比较n3系数: D D 1
求 hn hn-1 n3 , h0 0 的特解。
解法2 hn hn-1 n3
n
求和: hn h0 k 3 k 1 hn 13 23 33 ... n3
matlab用规范化乘幂法求以下矩阵的按模最大特征值及其特征向量

竭诚为您提供优质文档/双击可除matlab用规范化乘幂法求以下矩阵的按模最大特征值及其特征向量篇一:幂法,反幂法求解矩阵最大最小特征值及其对应的特征向量数值计算解矩阵的按模最大最小特征值及对应的特征向量一.幂法1.幂法简介:当矩阵a满足一定条件时,在工程中可用幂法计算其主特征值(按模最大)及其特征向量。
矩阵a需要满足的条件为:(1)|1||2|...|n|0,i为a的特征值xn(2)存在n个线性无关的特征向量,设为x1,x2,...,1.1计算过程:n对任意向量x,有x(0)(0)iui,i不全为0,则有i1x(k1)ax(k)...ak1x(0)aαiuiαiλik1uik1i1i1nnnk12k1λ1u1()a2u2()anun11k111u1k112|越小时,收敛越快;且当k充分大时,有可见,当|1 (k1)k111u1x(k1)x(k1)(k)x1(k),对应的特征向量即是。
kxx11u12算法实现(1).输入矩阵a,初始向量x,误差限,最大迭代次数n(2).k1,0;y(k)x(k)max(abs(x(k))(3).计算xay,max(x);(4).若||,输出,y,否则,转(5)(5).若kn,置kk1,,转3,否则输出失败信息,停机.3matlab程序代码function[t,y]=lpowera,x0,eps,n)%t为所求特征值,y 是对应特征向量k=1;z=0;%z相当于y=x0./max(abs(x0));%规范化初始向量x=a*y;%迭代格式b=max(x);%b相当于ifabs(z-b) t=max(x);return;endwhileabs(z-b)>epsz=b;y=x./max(abs(x));x=a*y;b=max(x);end[m,index]=max(a(matlab用规范化乘幂法求以下矩阵的按模最大特征值及其特征向量)bs(x));%这两步保证取出来的按模最大特征值t=x(index);%是原值,而非其绝对值。
常系数线性齐次矩阵列及函数列递归关系的解法

是递归关系 (3)的通解,其中 C1 , C 2 , , C k 为任意 s t 常 数矩阵。 证明 用 As ij 表示矩阵 As 的位于第 i 行第 j 列位
置的元素。由(3),则有
置的元素。由(3),则有
An ij
a1 An 1 ij a 2 An 2 ij a k An k ij ,
An ij
a1 An 1 ij a 2 An 2 ij a k An k ij ,
i 1,2, , s; j 1,2, , t
x k a1 x k 1 a2 x k 2 ak 1 x ak 0
,
共 有 t 个 不 同 的 根 q1 , q 2 , , qt , 它 们 的 重 数 分 别 为
An ij C1 ij q1n C 2 ij q 2n C k ij q kn
由
它们的重数分别为
m1 , m2 , , mt ,
A0 C11 C 21 A1 C11 C12 C 21 2 2 A2 C11 2C12 C 21 2
则递归关系(4)的通解为:
f n (t ) F1 (n, t ) F2 (n, t ) Ft (n, t ) ,
n k
(3)
An C1 1n C2 2n 2 2n 3 2n 2 2 n 1 。 5 2 n 1 10 5 2 n 1 2 n 1 定理 2 若矩阵列递归关系(3)的特征方程(2)共有 t
个不同的根
定义 2
4.2_求解线性递推关系

a2 = ������������,������ +2������������,������ +4������������,������ =-1,∴ ������������,������ =3, ������������,������ = −������
4.所得������������,������ ������������,������ ������������,������ 值代入第2步,得an =(1+3n-2n2)(-1)n
������
练习P190 2 c)d)e)f)g)
4.2.2 求解常系数线性齐次递推关系
特征根相等的情况:
定理2 c1 和c2 是实数, c2 ≠0。 r2 – c1r – c2 = 0 只有一个根:������������ 当 ������������
0
������������n
0
(n = 0,1,2,… ,������������ 和 ������������ 是常数)
练习P190 2 a)b)
4.2.2 求解常系数线性齐次递推关系
下面推广:求大于2阶的线性齐次递推关系的解。 它的特征根也有两种情况:不相等,有重根。
特征根不相等的情况:
定理3
c1, c2 ,…, ck是实数。 rk – c1rk−1 –⋯ – ck = 0有k个不等的根: r1, r2, …, rk。
当
n
(n = 0,1,2,… ,α1, α2,…, αk是常数)时,序列 {an} 是递推 关系an = c1an−1 + c2an−2 + ….. + ck an−k的解。
4.2.2 求解常系数线性齐次递推关系
例. 求递推关系an = 6an−1 -11an−2 + 6an−3的解,其中初 始值a0 = 2 , a1 = 5,a2 = 15 。 解:1.求其特征方程: an =rn代入,得rn –6rn-1+11rn-2 – 6rn-3 =0,除以rn-3得 r3 −6r2 +11r −6= 0.该方程的根为r=3 ,r=2和r=1 n 2.根据定理3公式 an = ������ 1 ������������ +������ 2������������ + ������ 3������������ 3.由已知的初始值 a0 = 2 , a1 = 5, a2 = 15代入上式得 a0 =������ 1 +������ 2 +������ 3 = 2 ,a1 =������ 1 +������������ 2 +3������ 3 =5, a2 =������ 1 +������������ 2 +9������ 3 =15,∴������ 1 =1,������2=-1, ������ 3 =2 4.所得������ 1 、������ 2 、������ 3值代入第2步,得an =1-2n + 2∙3n.
矩阵在常系数递推关系中的应用

目录内容摘要 (1)关键词 (1)1引言 (1)1.1研究现状 (1)1.2研究意义 (2)1.3研究思路及研究方法 (2)2矩阵相关知识 (2)2.1矩阵的加法和数与矩阵的乘法 (2)2.2矩阵的乘法 (3)2.3矩阵对角化 (4)2.4可对角化矩阵的性质 (5)3矩阵在常系数线性递推关系中的应用 (7)3.1矩阵在常系数线性齐次递推关系(组)的应用 (8)3.1.1应用矩阵表示常系数线性齐次递推关系 (8)3.1.2矩阵方法求解常系数线性齐次递推关系 (9)3.2矩阵在常系数线性非齐次递推关系(组)的应用 (11)3.2.1应用矩阵表示常系数线性非齐次递推关系 (11)3.2.2矩阵方法求解常系数线性非齐次递推关系 (12)4应用矩阵方法求解常系数线性递推关系的优劣 (13)5结论 (15)参考文献 (16)Abstract (16)Key words (16)矩阵在常系数线性递推关系中的应用专业:数学与应用数学学号:201413008132 学生姓名:李成金指导老师:李勇刚职称:讲师【内容摘要】本文在前人的研究基础上,对应用矩阵的相关知识与常系数线性递推关系进行研究.首先,归纳出一些矩阵的相关知识.其次,应用矩阵来表示常系数线性递推关系.然后再应用矩阵求解常系数线性递推关系,介绍矩阵方法如何应用.最后,举出简单的递推关系的问题,用一般方法和矩阵方法分别对这些问题进行解答,并比较这些方法在解决实际问题中的优劣之处,提出一些自己的建议.将递推关系组与矩阵相结合,用矩阵对角化及特征值理论求解一类递推关系组,并给出通解.【关键词】矩阵的加法;可对角化;应用矩阵;递推关系;1 引言1.1 研究现状递推关系不仅对组合论有重要意义,而且几乎对一切数学分支都有重要意义.求解常系数线性递推关系的最有效的常见的方法是母函数法和特征根法,而本文将用矩阵进行求解,其基本思想为:对于某些递推关系定义的数列,根据矩阵特征值理论,将数列的一般项表为含有对角阵的矩阵乘法形式,在此基础上推出数列的通项公式.杨振生在《组合数学及其算法》[1]中提到常系数线性齐次递推关系以及常系数线性非齐次递推关系的求解,通过对不同形式的递推关系问题采用不同的方法进行求解归纳,以及简单的应用.岳嵘在《利用矩阵对角化求数列通项》[2]中提出利用矩阵求解具有特殊性质的数列的通项公式;尹飞,杨方,赵天玉在《用矩阵对角化求解一类递推关系组》[3]中把递推关系与矩阵相结合,用矩阵对角化来求解一类递推关系组;郑华盛,徐伟在《矩阵对角化的应用》[4]中利用矩阵对角化求解一类具有递推关系式的数列的通项与极限及一类三对角线行列式,这是矩阵在求解递推关系问题中知识的延拓与提升.通过文献整理可知,目前矩阵在常系数线性递推关系中的应用只是简单的利用矩阵对角化解决常系数线性递推关系问题.对矩阵方法在常系数线性递推关系中的应用没有具体说明该怎么用,为什么要这么用或是为什么要用矩阵方法来解决,只是草草地给出定义以及引理,并没有深入去研究应用矩阵解决常系数线性递推关系问题可以带来怎么样的方便,只是简单地说明了应用矩阵解递推关系问题的方便之处在于将常系数线性递推关系问题简单化、统一化,降低了思维难度.1.2 研究意义矩阵在求解一类具有递推关系式中占有非常重要的作用,通过矩阵的对角化将数列的一般项表示为含有对角阵的矩阵乘法形式,运用矩阵相关知识,并且结合数学思想与方法,并与高等数学中的基础知识融为一体,考查学生的数学思维能力及创新能力,提高学生的学习兴趣.矩阵在常系数线性递推关系中的相关研究是符合当代大学生的一项研究.研究的目的在于通过一系列研究得出矩阵对角化解法在某类递推关系中是具体优势的,让学生能够在解题中明白知识是环环相扣的.1.3 研究思路及研究方法本文研究的基本思路:首先收集资料进行综合分析,归纳整理,了解当前研究的背景及其现状.基于目前研究矩阵的现状,提出研究的意义.然后,对矩阵的相关知识进行分析.将矩阵知识与常系数线性递推关系进行结合,应用矩阵表示常系数线性递推关系;用满足矩阵可对角化的条件,证明常系数线性递推关系.由矩阵知识用到某些复杂的递推关系问题上,综合比较常规的解题方法总结出各自的优缺点以及适用情况.在掌握了矩阵方法解决常系数线性递推关系问题的一般步骤后,对矩阵方法应用于常系数线性递推关系进行进一步研究,分析得出用矩阵方法解题所适合的情况及其优劣之处.基于对文献资料的分析上,归纳出应用矩阵在求解常系数线性递推关系的技巧与方法.最后,对文章进行总结.本研究首先采用文献研究法,根据所研究的论文题目,通过查阅相关文献,从而能够正确的了解掌握所要研究的问题.在研究矩阵在常系数线性递推关系中的研究现状上运用文献研究法,能形成关于研究对象的印象.然后采用比较研究法,通过纵横比较,对矩阵方法与常规方法进行利弊分析,最后总结矩阵方法是否实用.2 矩阵相关知识2.1 矩阵的加法和数与矩阵的乘法定义2.1[5] 两个m 行n 列矩阵)(ij a A =,)(ij b B =对应位置元素相加得到的m 行n 列矩阵,称为矩阵A 与矩阵B 的和,记为B A +,即()()()n m ij ij n m ij n m ij b a b a B A ⨯⨯⨯+=+=+.例2.1.1 设矩阵⎪⎪⎪⎭⎫ ⎝⎛=321034022753A ,⎪⎪⎪⎭⎫ ⎝⎛=846075120231B ,求B A +.解:⎪⎪⎪⎭⎫ ⎝⎛++++++++++++=⎪⎪⎪⎭⎫ ⎝⎛+⎪⎪⎪⎭⎫ ⎝⎛=+834261007354102202273513846075120231321034022753B A⎪⎪⎪⎭⎫ ⎝⎛=11670109142984注1 只有对于两个行数、列数分别相等的矩阵(即同型矩阵),加减法运算才有意义,即加减运算是可行的.定义2.2 以数k 乘矩阵A 的每一个元素所得到的矩阵,称为数k 与矩阵A 的积,记作kA .如果()n m ij a A ⨯=,那么()()n m ij n m ij ka a k kA ⨯⨯==.例2.1.2 设⎪⎪⎪⎭⎫ ⎝⎛=321034022753A ,求A 2.解:⎪⎪⎪⎭⎫ ⎝⎛=⎪⎪⎪⎭⎫ ⎝⎛⨯⨯⨯⨯⨯⨯⨯⨯⨯⨯⨯⨯=⎪⎪⎪⎭⎫ ⎝⎛=6420680441410632221202324202222272523232103402275322A2.2 矩阵的乘法定义2.3 设矩阵l m ik a A ⨯=)(的数列与矩阵n l kj b B ⨯=)(的行数相同,则由元素∑==+++=lk kj ik li il j i j i ij b a b a b a b a c 12211 ()n j m i ,2,1;,2,1==构成的m 行n 列矩阵()nm l k kj ik n m ij b a c C ⨯=⨯⎪⎭⎫ ⎝⎛==∑1 称为矩阵A 与矩阵B 的积,记为B A C ⋅=或AB .这个定义说明,如果矩阵A 的列数等于矩阵B 的行数,则A 与B 的乘积C 中第i 行第j 列的元素,等于矩阵A 的第i 行元素与矩阵B 的第j 列对应元素乘积的和,并且矩阵C 的行数等于矩阵A 的行数,矩阵C 的列数等于矩阵B 的列数.例2.2.1设矩阵⎪⎪⎭⎫ ⎝⎛-=1121A ,⎪⎪⎭⎫ ⎝⎛--=211321B ,计算AB . 解:AB 是32⨯的矩阵.设它为⎪⎪⎭⎫ ⎝⎛=⎪⎪⎭⎫ ⎝⎛--⎪⎪⎭⎫ ⎝⎛-=2322211312112113211121c c c c c c AB , 那么 ⎪⎪⎭⎫ ⎝⎛--=⎪⎪⎭⎫ ⎝⎛--⎪⎪⎭⎫ ⎝⎛-=5121412113211121AB . 注2 (1)只有当左矩阵的列数等于右矩阵的行数时,两个矩阵才可以相乘;(2)乘积矩阵的行数等于左矩阵的行数,列数等于右矩阵的列数;(3)乘积矩阵的第i 行第j 列的元素等于左矩阵的第i 行与右矩阵的第j 列的对应元素的乘积之和.2.3 矩阵对角化定义2.4[6] 设A ,B 为n 阶矩阵,如果有n 阶可逆矩阵P 存在,使得B AP P =-1成立,则称矩阵A 与B 相似,记为B A ~.例2.3.1 ⎪⎪⎭⎫ ⎝⎛-=1513A ,⎪⎪⎭⎫ ⎝⎛-=2004B ,⎪⎪⎭⎫ ⎝⎛-=5111P 则 ⎪⎪⎪⎪⎭⎫ ⎝⎛-=-616161651P ,B AP P =⎪⎪⎭⎫ ⎝⎛-=⎪⎪⎭⎫ ⎝⎛-⎪⎪⎭⎫ ⎝⎛-⎪⎪⎪⎪⎭⎫ ⎝⎛-=-200451111513616161651, 所以B A ~,即⎪⎪⎭⎫ ⎝⎛-⎪⎪⎭⎫ ⎝⎛-2004~1513.通俗地说就是经过矩阵的一系列行、列变换(初等变换)后,能得到一个只有主对角线上元素不全为零,而且其他位置全为零的另一个矩阵(这个矩阵称为对角阵),这个过程叫做矩阵的对角化,并不是所有的矩阵都能对角化.矩阵可对角化在求矩阵的高次幂中有重要作用,矩阵的对角化有多种判别方法.本节对矩阵对角化作一点讨论.例2.3.2 矩阵⎪⎪⎭⎫ ⎝⎛-=4132A 是否能对角化?如果能,将其对角化. 解:先求A 的特征值和特征向量.特征方程为()()0515641322=--=+-=--=-λλλλλλλA E 则A 的特征值为 11=λ,52=λ.把11=λ代入()0=-x A E λ,求得特征向量⎪⎪⎭⎫ ⎝⎛=131ξ; 把52=λ代入()0=-x A E λ,求得特征向量⎪⎪⎭⎫ ⎝⎛=132ξ. 由于特征值都是单根,所以矩阵A 是可对角化的.取 ()⎪⎪⎭⎫ ⎝⎛-==1113,21ξξP , 则⎪⎪⎭⎫ ⎝⎛-=-3111411P , 于是有 ⎪⎪⎭⎫ ⎝⎛=⎪⎪⎭⎫ ⎝⎛-⎪⎪⎭⎫ ⎝⎛--⎪⎪⎭⎫ ⎝⎛-=-5001311341323111411AP P . 注3 (1)当矩阵A 的特征值全部是单根时,A 是可对角化的.(2)当矩阵A 的特征值是重根时,只要每一个重根的特征值所对应的全部线性无关的特征向量的个数都等于特征值的重数,则A 是可对角化的;当有一个重根的特征值所对应的全部线性无关的特征向量的个数小于特征值的重数时,则A 不能对角化.引理 2.3.1 设n P B A ⨯∈n ,,且BA AB B B A A ===,,22,则存在可逆矩阵P ,使B A ,可同时对角化.引理 2.3.2 如果n n n P diag P ⨯∈=),,,(21λλλ 有n 个互不相同的对角元素,对某个n n P B ⨯∈,则BP PB =当且仅当B 本身是对角阵.2.4 可对角化矩阵的性质定理 2.4.1 设A 是数域P 上的一个可对角化的n 阶矩阵,t λλλ,,,21 是A 的互不相同的特征根,则存在n 阶矩阵t A A A ,,,21 ,使t t A A A A λλλ+++= 2211)1;E A A A t =+++ 21)2,E 为单位矩阵;i i A A =23);0)4=j i A A ,j i ≠,0为零矩阵,其中1-=T TB A i i .证明1)由A 可对角化,则存在P 上的一个n 阶可逆矩阵T ,使得B AT T t =⎪⎪⎪⎪⎪⎭⎫ ⎝⎛=-λλλ000000000000211 其中i λ的重数为i S ,由于⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫ ⎝⎛++⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫ ⎝⎛=100000000000010000000000000000000000000000000000000000100000000000011 t B λλ 既t t B B B λλλ+++ 2211,所以122111)(--+++==T B B B T TBT A t t λλλ1122111---+++=T B T T B T T B T t t λλλ)()(1111--++=T TB T TB t t λλ记t t A A A λλλ+++ 2211,其中1-=T TB A i故t t A A A A λλλ+++= 2211.2)由每个i B 为对角形幂等阵,则E B B B t =+++ 21,E TET T B B B T T TB T TB T TB A A A t t t ==+++=+++=+++-----11211121121)( , 故E A A A t =+++ 21.3)由1-=T TB A i i ,则1111))((----==T TB T TB T TB T TB A i i i i i1121---===T TB T TB T B TB i i i ii A =故i i A A =2.4)当j i ≠时,0))((11111====-----T B TB T TB T TB T TB T TB A A j i j i j i i i ;0为零矩阵 故0=j i A A ,j i ≠.3 矩阵在常系数线性递推关系中的应用常系数线性递推关系分为常系数线性齐次递推关系和常系数线性非齐次递推关系两种情况.定义3.1 常系数线性齐次递推关系,其形如()()()()r n H a n H a n H a n H r -++-+-= 2121或r n r n n n H a H a H a H ---+++= 2211这里r a a a ,,,21 全部是常数.例如2123--+=n n n H H H就是一个常系数线性齐次递推关系.定义3.2 常系数线性非齐次递推关系,其形如()n f H c H c H c r n r n n =+++-- 110这里r c c c ,,,10 全部是常数.例如321+=-n n H H31+-=-n H H n n都是常系数线性非齐次递推关系.那么对于非常系数非线性递推关系的求解一般是非常困难的,目前的求解方法还不够成熟,因此我们只考虑求解常系数线性齐次递推关系以及常系数线性非齐次递推关系这两类特殊的递推关系.3.1 矩阵在常系数线性齐次递推关系(组)的应用3.1.1 应用矩阵表示常系数线性齐次递推关系递推数列形如[7]k n k n n n a c a c a c a ---+++= 2211),2,1,0( ++=≠k k n c k对此情形的数列,通过观察等式,可等价给出方程组⎪⎪⎩⎪⎪⎨⎧==+++=+-+------,,,11112211k n k n n n k n k n n n a a a a a c a c a c a 该方程组可表示为矩阵形式⎪⎪⎪⎪⎪⎭⎫ ⎝⎛⎪⎪⎪⎪⎪⎭⎫ ⎝⎛=⎪⎪⎪⎪⎪⎭⎫ ⎝⎛---+--k n n n k k n n n a a a c c c a a a 2121110100001.(1)例3.1.1[8]构造数列,57,31,17,9,5,3,1,1,1且满足递推关系 ),2,1(1210112 =⎩⎨⎧===++=-++i a a a a a a a i i i i 现在考虑将数列采用矩阵的形式表示.因为 ),2,1()1,1,1(11112=⎪⎪⎪⎭⎫ ⎝⎛=++=-+-++i a a a a a a a i i i i i i i),2,1()0,0,1(111 =⎪⎪⎪⎭⎫ ⎝⎛=-++i a a a a i i i i ),2,1()0,1,0(11 =⎪⎪⎪⎭⎫ ⎝⎛=-+i a a a a i i i i所以 ),2,1(0100011111112 =⎪⎪⎪⎭⎫ ⎝⎛⎪⎪⎪⎭⎫ ⎝⎛=⎪⎪⎪⎭⎫ ⎝⎛-+++i a a a a a a i i i i i i3.1.2 矩阵方法求解常系数线性齐次递推关系令⎪⎪⎪⎪⎪⎭⎫ ⎝⎛=+--+-111k n n n k n a a a A ,⎪⎪⎪⎪⎪⎭⎫ ⎝⎛=----k n n n k n a a a A 21,⎪⎪⎪⎪⎪⎭⎫ ⎝⎛=010000121 k c c c A , 则式(1)可以写成k n k n AA A -+-=1.由该式递推得11A A AA A k n k n k n --+-=== .那么求n a 的问题就转为求矩阵1+-k n A ,也就是求解矩阵k n A -.若矩阵A 可以对角化,即存在可逆矩阵P ,使得B AP P =-1为对角形矩阵,则问题变得更方便求解.例3.1.2 已知数列{}n a 满足n n n a a a a a 23,3,11221-===++.求数列{}n a 的通项公式.解:由原数列可得 ⎩⎨⎧=-=++++,,231112n n n n n a a a a a 也即 ⎥⎦⎤⎢⎣⎡⎥⎦⎤⎢⎣⎡-=⎥⎦⎤⎢⎣⎡⎥⎦⎤⎢⎣⎡-=⎥⎦⎤⎢⎣⎡+++1211201230123a a a a a a nn n n n . 可令 ⎥⎦⎤⎢⎣⎡-=0123A , 则存在 ⎥⎦⎤⎢⎣⎡=1112T , 使得 P AT T =⎥⎦⎤⎢⎣⎡=-10021. 从而 ⎥⎦⎤⎢⎣⎡--=⎥⎦⎤⎢⎣⎡=⎥⎦⎤⎢⎣⎡++-++12121212112n n n n n a a T TP a a , 综上所述 *)(12N n a n n ∈-=.小结:对于该题的求解,我们可以发现矩阵方法解决此类型题比较简便,首先我们应用矩阵方法求出矩阵A ,进而求出可逆矩阵T ,在求解矩阵T 的逆矩阵时,使用矩阵的乘法需要细心,避免求解错误,运用矩阵方法可避免了构造新的数列难点,更突出了矩阵方法方便、快捷的优点.例3.1.3 有递推关系,1,1,1021==+=--F F F F F n n n ,4,3,2=n 求解这个常系数线性齐次递推关系.解:该递推关系的递推定义方式可以看成是由11++=n n F F 与n n n F F F +=++12的联立方程组,作矩阵向量),(1+=n n n F F v ,则上述联立方程组可表为:,1,0,11101=⎪⎪⎭⎫ ⎝⎛=+n v v n n ,记⎪⎪⎭⎫ ⎝⎛=1110A ,则A 的特征多项式1)det(2--=-λλλI A ,故A 的特征根为 2511+=λ,2512-=λ. 故A 可对角化,令⎪⎪⎭⎫ ⎝⎛=2111λλQ ,⎪⎪⎭⎫ ⎝⎛---=-11112211λλλλQ ,可得 12100-⎪⎪⎭⎫ ⎝⎛=Q Q A n n n λλ. 又由于n n n A v A v v 01===- ,故有:()()1211211211510010)(++-+--=⎪⎪⎭⎫ ⎝⎛==⋅n n n n n n n n n Q Q v F F λλλλλλ, 可得 ()nn n F 2151λλ-= 即 ⎥⎥⎦⎤⎢⎢⎣⎡⎪⎪⎭⎫ ⎝⎛--⎪⎪⎭⎫ ⎝⎛+=n n n F 25125151. 小结:类似上题的斐波那契数列也是一类常系数线性齐次递推关系,在求解时用矩阵的加减法求出nn 21λλ-,进而利用矩阵对角化方法,将递推关系的定义方式看成联立的方程组,作出矩阵向量,避免了母函数构造新数列的复杂操作,使得求解方便快捷.3.2 矩阵在常系数线性非齐次递推关系(组)的应用3.2.1 应用矩阵表示常系数线性非齐次递推关系情况3.2.1 递推数列形如n n n qb pa a +=+1,由此数列可得⎩⎨⎧⨯=+=-+,,11n n n n n b b b qb pa a 写成矩阵形式表示为⎥⎦⎤⎢⎣⎡⎥⎦⎤⎢⎣⎡=⎥⎦⎤⎢⎣⎡-+110n n n n b a b qb p b a情况3.2.2 双递推数列形如⎩⎨⎧++=++=++,,2111ααn n n n n n db ca b bb aa a (21,αα为常数). 对此数列,可写成矩阵形式⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡==⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡+++110011001001212111b a d c b a b a d c b a b a n n n n n αααα . 因此原递推关系问题转化成求解幂矩阵问题,从而可求出数列{}n a 和{}n b 的通项公式.3.2.2 矩阵方法求解常系数线性非齐次递推关系对于递推数列n n n qb pa a +=+1将其写成矩阵形式⎥⎦⎤⎢⎣⎡⎥⎦⎤⎢⎣⎡=⎥⎦⎤⎢⎣⎡-+110n n n n b a b qb p b a进而对其求解即⎥⎦⎤⎢⎣⎡⎥⎦⎤⎢⎣⎡==⎥⎦⎤⎢⎣⎡⎥⎦⎤⎢⎣⎡=⎥⎦⎤⎢⎣⎡⎥⎦⎤⎢⎣⎡=⎥⎦⎤⎢⎣⎡---+1000111211a b qb p b a b qb p b a b qb p b a nn n n n n n . 由此原问题转化成求矩阵运算,进而可求出通项公式n a .例3.2.1 设数列满足,23,21211-+⨯=-=n n n a a a 求数列{}n a 的通项公式.解:将递推关系12123-+⨯=-n n n a a 变形后写成矩阵形式.14061440614111⎥⎦⎤⎢⎣⎡⎥⎦⎤⎢⎣⎡=⎥⎦⎤⎢⎣⎡⎥⎦⎤⎢⎣⎡=⎥⎦⎤⎢⎣⎡-+a a a nn n n n 易求得矩阵 ⎥⎦⎤⎢⎣⎡=4061A 的特征根和对应的一个特征向量分别为,12,4,01,12211⎥⎦⎤⎢⎣⎡==⎥⎦⎤⎢⎣⎡==αλαλ 则存在 ⎥⎦⎤⎢⎣⎡=1021T 使得 ,40011P AT T =⎥⎦⎤⎢⎣⎡=-所以 ,421241211⎥⎦⎤⎢⎣⎡=⎥⎦⎤⎢⎣⎡=⎥⎦⎤⎢⎣⎡+-+n n n n n T TP a从而可知 .212-=n n a小结:这个问题的正常思路是通过构造{}122--n n a 型的常数列来求解,但是却不容易易想得到,应用矩阵方法可以避开这些难点,因此问题转化成求解矩阵的问题. 例 3.2.2 设数列{}n a 和{}n b 满足 ,0,100==b a ),2,1,0(,478,36711 =⎩⎨⎧-+=-+=++n b a b b a a n n n n n n .求证:n a 是完全平方数.解:有已知条件容易推知 .49,421==a a记矩阵 ⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡--=100478367A . 易求得矩阵A 的特征根为 ,1,347,347321=-=+=λλλ则存在可逆矩阵P 使得 ⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡-+=-10003470003471AP P .于是可由 ⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡-+=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡--=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡-++++1011000347000347101100478367111111P P b a n n n n . 求得n a 的通项公式形如 ,)347()347(321k k k a n n n +-++=将210,,a a a 代入上式可求得 ,21,41321===k k k 于是有 []2)32()32(4121)347(41)347(41n n n n n a -++=+-++=. 小结:双递推数列问题在使用一般方法解决的过程中较为繁杂,类似此题,需要构造新的数列再使用特征方程的方法求解.若用矩阵方法求解,可达到事半功倍的效果.4 应用矩阵方法求解常系数线性递推关系的优劣求解常系数线性递推关系最有效的常见的方法是母函数法和特征根法,而本文用矩阵方法进行求解,那么矩阵方法又存在怎样的优势以及局限性,以下对三种方法进行一下讨论.例4.1.1 设边界条件1,010==h h ,24-=n n h h , 4,3,2=n ,求解该递推关系.解法一:(母函数法)设() +++++=n n x h x h x h h x A 22110则存在 ∑∑∞=-∞==2224n n n n nn x h x h 所以 ()∑∞=--=--2222104n n n x h xx h h x A 易求得 ()()()⎪⎭⎫ ⎝⎛+--=-+=-=x x x x x xx x A 211211412121412 又有 x x x x n -=+++++1112 所以 ()n n n h 241241--⋅= 解法二:(特征根法)该递推关系的特征方程为: 0)2)(2(042=+-⇒=-x x x , 所以 2,221-==x x ,从而 n n n c c h )2(221-+= , 3,2,1=n又由1,010==h h 可得 ⎩⎨⎧=+=-+1)2(20)2(212110201c c c c 解得 41,4121-==c c 因此 n n n h )2(41241--⋅=. 解法三:(矩阵方法)由原数列可得⎩⎨⎧==---1124n n n n h h h h , 也即 ⎥⎦⎤⎢⎣⎡⎥⎦⎤⎢⎣⎡=⎥⎦⎤⎢⎣⎡⎥⎦⎤⎢⎣⎡=⎥⎦⎤⎢⎣⎡---n nn n n n h h h h h h 121101400140, 可令 ⎥⎦⎤⎢⎣⎡=0140A , 则存在 ⎥⎦⎤⎢⎣⎡-=1122T ,使得 P AT T =⎥⎦⎤⎢⎣⎡-=-20021, 从而 ()()⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡-⋅-⋅-⋅-⋅=⎥⎦⎤⎢⎣⎡=⎥⎦⎤⎢⎣⎡----110111241241241241n n n n n n n h h T TP h h 所以 ()n n n h 241241-⋅-⋅=. 小结:母函数法需要构造新的数列,操作比较复杂,但是能够有效的解决递推关系问题.特征根法求解便捷,类似这一道题,如果在遇到有重根的问题时会对求解递推关系带来不便.矩阵方法求解递推关系时,如果能够将递推关系写成矩阵形式,并且该矩阵能够对角化,进而求解幂矩阵,那么求解递推关系就很方便了.例4.2.1 设边界条件0,110=-=h h ,21168---=n n n h h h , 4,3,2=n ,求该递推关系. 解法一:(母函数法)设 +++++=n n x h x h x h h x A 2210)(则存在 n n n nn n n n n x h x h x h 22212168-∞=∞=-∞=∑∑∑-= 所以 222212110168)(-∞=--∞=-∑∑-=--n n n n n n x h x xh x h h x A易求得 2222)41(1)41(8)41(18168118)(x x x x x x x x x A ---=--=+-+= 又有 2132)1(1)1(4321x x n nx x x x n n -=+++++++- 所以 n n n n n x 4)1(481⋅+-⋅⋅=-综上所述 n n n h 4)1(-= .解法二:(特征根法)该递推关系的特征方程为 01682=+-x x提公因式得 ()()044=--x x解得 4,421==x x所以 n n n n c c h 4421+=因为 0,110=-=h h所以 ⎩⎨⎧=+-=0441211c c c所以 1,121=-=c c综上所述 ()n n n n n n h 4144-=+-=.解法三:(矩阵方法)将递推关系21168---=n n n h h h 变形后写为矩阵形式⎥⎦⎤⎢⎣⎡⎥⎦⎤⎢⎣⎡-=⎥⎦⎤⎢⎣⎡⎥⎦⎤⎢⎣⎡-=⎥⎦⎤⎢⎣⎡---012110116801168h h h h h h n n n n n易求得矩阵⎥⎦⎤⎢⎣⎡-=01168A 的特征根和对应的一个特征向量分别为 ,28-,4,14-,42211⎪⎪⎭⎫ ⎝⎛==⎪⎪⎭⎫ ⎝⎛==αλαλ 因为该矩阵的特征方程有相同的特征根并且特征向量线性相关,因此无法求出对角化矩阵,无法应用矩阵方法求解.小结:母函数方法能够有效求解递推关系,但是需要构造新的数列,操作比较复杂,特征根法求解便捷,但是如果在遇到有重根的问题时会对求解递推关系带来不便.而矩阵方法则可避免重新构造数列,但是类似上题,通过变形求解得出两个特征向量线性相关,无法求出对角化矩阵,因此应用矩阵方法求解递推关系具有一定的局限性.5 结论矩阵的对角化将数列的一般项表示为含有对角阵的矩阵乘法形式,避免了类似母函数一样需要构造新的数列,解决问题时较为方便快捷,至于特征根法,对于有重根的特征方程求解不方便,我们利用矩阵方法时,列出矩阵,求出矩阵A 可对角化,再得出可逆矩阵T ,进而求出幂矩阵,最终求解出递推关系式.本文在研究中也存在很多不足之处:对于某些方阵不可对角化时,矩阵方法存在很大的局限性;对于阶数较大的方阵不便于求解.并且由于研究水平能力有限等原因,因此,本文对矩阵方法应用于常系数线性递推关系中只是初步的研究,实践中还有需进一步验证和总结.【参考文献】[1]杨振生.组合数学及其算法[M].合肥:中国科学科技大学出版社,1997.110-124.[2]岳嵘. 利用矩阵对角化求数列通项[J]. 高等数学研究, 2007, 10(4):66-68.[3]尹飞,杨方,赵天玉.用矩阵对角化求解一类递推关系组[J].科学与财富, 2010(1):37-38.[4]郑华盛, 徐伟. 矩阵对角化方法的应用[J]. 高等数学研究, 2008, 11(3):58-64.[5]赵树嫄.线性代数[M].北京:中国人民大学出版社,2017.45-50.[6]徐爱华.线性代数[M].上海:同济大学出版社,2015.102-104.[7]龚丽燕, 陈益智, 蔡俊树. 递推数列通项的矩阵解法[J]. 高等数学研究, 2014(5):3-6.[8]郑长波. 利用矩阵特征值理论求解递推关系[J]. 沈阳师范大学学报(自然科学版), 2011, 29(3):347-351.Application of Matrix in Linear Recursive relation with constantcoefficients[Abstract] On the basis of previous studies, this paper studies the relationship between the relative knowledge of applied matrices and linear recursion of constant coefficients. Firstly, some related knowledge of matrices is summarized. The matrix is used to express the linear recursion relation of constant coefficient, then the matrix is used to solve the linear recursive relation of constant coefficient, and how to apply the matrix method is introduced. Finally, the problem of simple recursive relation is given. The general method and matrix method are used to solve these problems, and the advantages and disadvantages of these methods in solving practical problems are compared, and some suggestions are put forward. To solve the problem of matrix diagonalization and eigenvalue theory Class recursive relation group, and give the general solution.[Key words] Keywords addition of matrix; diagonalization; application matrix; recursive relation。
幂矩阵的计算方法

幂矩阵的计算方法
幂矩阵是一种特殊的矩阵乘法,在计算机科学和数学领域被广泛应用。它可以用于解决一些重要的问题,比如图论中的路径计算、网络分析中的节点权重计算等。
幂矩阵的计算方法是通过矩阵的乘法运算来实现的。假设我们有一个n阶矩阵A,我们想要计算A的m次幂矩阵,也就是A的m-1次幂矩阵与A的乘积。
我们需要定义矩阵的乘法运算。矩阵的乘法运算是将两个矩阵的对应们的乘积C可以表示为C = AB,其中C的元素c[i][j]的计算方式为c[i][j] = ∑a[i][k] * b[k][j],其中k的范围是从1到n。
幂矩阵的计算方法在实际应用中有广泛的用途。例如,在图论中,我们可以使用幂矩阵的计算方法来计算图中两个节点之间的路径数量。具体来说,我们可以定义一个邻接矩阵,其中矩阵的元素a[i][j]表示从节点i到节点j的边的数量。然后,我们可以计算邻接矩阵的m次幂矩阵,其中m表示两个节点之间的最短路径的长度。通过这种方式,我们可以快速有效地计算出图中任意两个节点之间的最短路径。
在计算幂矩阵的过程中,我们需要进行多次矩阵乘法运算。假设我们要计算矩阵A的m次幂矩阵,我们可以使用迭代的方法来实现。具体来说,我们首先将A赋值给一个临时矩阵B,然后进行以下操作m-1次:将B与A相乘,将结果赋值给B。最后,B就是A的m次幂矩阵。
需要注意的是,幂矩阵的计算方法要求矩阵A是一个方阵,也就是行数和列数相等。否则,矩阵的乘法运算无法进行。
矩阵乘法的优化

>才智/207分析方法,分别a/b、c/a、t/a、d/l、h/a 对最大翘曲应力精确度的影响。
限于文章篇幅有限,本文仅讨论h/a 对求最大翘曲应力精度的的影响。
h/a 的变化情况可以直接反映连梁的数量以及杆件有效高度Z 的变化情况。
取a/b=1.30,c/a=0.30,t/a=0.06,并固定三者数值不变。
然后分别取h/a=0.60、1.0、1.50、2.0、3.0。
即截面尺寸为:a=10.0cm,b=8.0cm,c=2.50cm,壁厚t=0.50cm,杆件材料的弹性模量E=2.50×105N/cm2,泊松比V= V=0.1667,杆件顶端所受到的几种扭矩大小M=2010N.cm。
对其最大翘曲应力进行计算,其中有限元计算结果同理论解的比较见表2。
表2有限元解同理论解的比较结果从表2中可以看出,当h/a 的取值越小时,本文采用的连续法所得到的结果越接近理论值,随着h/a 比值的逐渐增大,有限元解同理论解之间的相对误差逐渐增大。
2 结语本文以高层建筑筒体结构约束扭转为研究对象,较为详细的分析了连梁对开口薄壁筒体约束扭转的影响,最后,探讨了连续化方法求最大翘曲应力时对精确度的影响关系。
希望本文的提出能起到抛砖引玉的作用,其他研究人员继续这方面的研究,为取得更大的研究成果而不懈努力。
参考文献:[1] 往荫长. 高层建筑筒体结构的计算,科学出版社,1988.[2] 鲍永方. 薄壁结构的约束扭转分析[D]. 北京农业工程大学学报,北京,1996.矩阵乘法的优化谢林川 武警警官学院电子技术系 610041在科学与工程计算的许多问题中经常需要进行矩阵计算。
矩阵乘、求解线性方程组和矩阵特征值问题是矩阵计算最基本的内核。
许多先进的计算机上都配有高效的串行程序库。
为了在并行计算环境上实现矩阵乘积,研究并行算法是非常必要的。
本文主要讲述了如何在多核处理器上对矩阵乘法进行优化。
1. 矩阵乘法串行算法矩阵乘法在实现上比较简单,可以通过3层循环得到。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
矩阵乘幂优化k 阶常系数线性递推关系一、认识k 阶常系数线性递推关系我们熟悉的Fibonacci 数列:F[n]=F[n-1]+F[n-2],就是一个2阶常系数线性递推关系,由此我们得出k 阶常系数线性递推关系的一般形式:k n k n n n F a F a F a F −−−+++=Λ2211其中:,是常数,有k 项,所以叫着k 阶常系数线性递推关系;k a a a 、、、Λ21∑=−×=k i in i n F a F 1二、对矩阵的认识矩阵就是一个数字阵列,一个n 行r 列的矩阵可以表示为: ⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡nr n n r r a a a a a a a a a ΛΛΛΛ212222111211 我们称上面的矩阵为r n ×矩阵。
例如下面一个2×3矩阵; ⎥⎦⎤⎢⎣⎡662341如果一个行数和列数相等的矩阵,我们叫作方阵。
例如下面3×3方阵:⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡679762341 其实,矩阵对我们来说,并不陌生,因为它正好对应Pascal 中的一个二维数组。
Type matrix=array[1..n,1..r] of longint;三、矩阵的运算1、加法,减法⎥⎦⎤⎢⎣⎡=⎥⎦⎤⎢⎣⎡+⎥⎦⎤⎢⎣⎡964687652342312345⎥⎦⎤⎢⎣⎡=⎥⎦⎤⎢⎣⎡−⎥⎦⎤⎢⎣⎡0100036523426623452、乘法:设A ,B 是两个矩阵,令C=A ×B ;那么:(1)A 的列数必须和B 的行数相等;设A 是n ×r 矩阵,B 是r ×m 矩阵;(2)A 和B 的乘积C 是一个n ×m 的矩阵;(3)∑=×=×++×+×+×=r k jk k i jr r i j i j i j i j i b a b a b a b a b a c 1,,,,,33,,22,,11,,Λ例如:已知: ,,求A ×B 。
⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=635241A ⎥⎦⎤⎢⎣⎡=654321B ⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡+++++++++=×4536273629222722176*63*35*62*34*61*36*53*25*52*24*51*26*43*15*42*14*41*1B A 由矩阵乘法的运算法则,我们得出下列结论:矩阵乘法满足结合律,不满足交换律。
矩阵乘法的程序实现:function mul(a,b:matrix;n,r,m:integer):matrix; //矩阵乘法var c:matrix;i,j,k:longint;beginfillchar(c,sizeof(c),0);for i:=1 to n dofor j:=1 to m dofor k:=1 to r doc[i,j]:=c[i,j]+a[i,k]*b[k,j]mul:=c;end;练习:并观察有什么样的结论(和F[n]=F[n-1]+F[n-2])已知: ,,求A ×B ;A ×B ×B ;A ×B ×B ×B 。
[]21−−=n n F F A ⎥⎦⎤⎢⎣⎡=0111B 3、方阵乘幂方阵乘幂是指,A 是一个方阵,将A 连乘n 次,即:。
n A C =【想一想】:如果A 不是方阵,能否进行n 次幂运算?【练习试题】: ⎥⎦⎤⎢⎣⎡=0111A ,求 3A C =由于矩阵乘法满足“乘法结合律”,因此我们可以用二分快速幂的思想来求方阵乘幂。
(1)求a^n 的二分快速幂程序//程序中的mm 为取余数function power(a,n:longint):longint;var x:longint;beginif n=1 then power:=a elsebeginx:=power(a,n shr 1) mod mm;x:=(x*x) mod mm;if odd(n) then power:=(x*a) mod mmelse power:=xend;end;(2)求矩阵A^xfunction mpower(a:matrix;n,r,m,x:longint):matrix;var c:matrix;beginif x=1 then mpower:=a elsebeginc:=mpower(a,n,r,m,x shr 1);c:=mul(c,c,n,r,m);if odd(x) then mpower:=mul(c,a,n,r,m)else mpower:=c;end;end;四、线性递推方程的优化算法【例题一】:Fibonacci 数列求Fibonacci 数列的第n 项,其中1<=n<=10^9,第一项是1,第2项是1。
输出Fibonacci 数列的第n 项Mod 2008 的值。
【问题分析】:考虑1×2的矩阵[f[n-2],f[n-1]]。
根据fibonacci 数列的递推关系,我们希望通过乘以一个2×2的矩阵,得到矩阵[f[n-1],f[n]]=[ f[n-1],f[n-2]+f[n-1]],很容易构造出这个2×2矩阵A ,即:[][]⎥⎦⎤⎢⎣⎡×−−=−1110]1[]2[][]1[n F n F n F n F 所以,有[f[1],f[2]]×A =[f[2],f[3]]又因为矩阵乘法满足结合律,故有: [][][][][]1111110111110]2[]1[]2[]1[1110]1[]2[][]1[−−−⎥⎦⎤⎢⎣⎡×=⎥⎦⎤⎢⎣⎡×=×=⎥⎦⎤⎢⎣⎡×−−=−n n n F F A F F n F n F n F n F这个矩阵的第一个元素即为所求。
至于如何快速求出A n-1,相信大家都会,即递归地:n 为偶数时,A n =(A n/2)2;n 为奇数时,A n =(A n/2)2*A 。
【例题二】:数列f[n]=f[n-1]+f[n-2]+1,f[1]=f[2]=1的第n 项的快速求法, 输出该数列的第n 项Mod 2008 的值。
【试题分析】:仿照前例,考虑1×3的矩阵 [f[n-2],f[n-1],1],希望求得某3×3的矩阵A ,使得此1×3的矩阵乘以A 得到矩阵:[f[n-1],f[n],1]=[f[n-1],f[n-1]+f[n-2]+1,1]容易构造出这个3×3的矩阵A ,即: ⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=110011010A2110011010 f[2],1][f[1],110011010 1],1]-f[n 2],-[f[n A 1],1]-f[n 2],-[f[n 1,1]2]-f[n 1]-f[n 1],-[f[n f[n],1]1],-[f[n −⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡×==⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡×=×=++=n 五.常见例题【典型例题1】:线性递推式【问题描述】动态规划的实现形式之一是递推,因此递推在OI 中十分重要。
在某信息学的分支学科中,LC 学会了如何求一阶线性递推数列。
由于他想在正在学习主干学科,因此希望知道求出N 阶线性递推数列。
为此,他了解到了以下的内容:一个N 阶线性递推式是这样的式子:也就是说,这个数列的每一项都是由他之前连续N 项相加所得。
其中还包括一个常数An 。
例如,当N=2,A0=A1=1,A2=0时,这个式子就是我们熟悉的斐波那契数列。
当然,作为边界条件,F0、F1……Fn-1都是已知的。
LC 对如何去求这个式子一筹莫展,因此请你来帮助他。
你的任务就是对于一个给定的N 阶线性递推式,求出它的第K 项是多少。
【文件输入】第一行两个整数:N ,K ,其中N 表示这个式子是N 阶线性递推式,K 表示你需要求的那一项。
第二行有N+1个整数:A0,A1,…,An ,表示这个递推式的系数。
第三行有N 个整数:F0,F1,….,Fn-1,表示数列的初始值。
【文件输出】只有一行,其中只有一个整数,表示这个数列第K 项的值。
由于数据较大,你只需输出结果 mod 9973的值。
【样例输入】2 101 1 00 1【样例输出】55【数据规模】对于50%的数据:N<=K<=10^6对于100%的数据:1<N<=10N<=K<=101^81<=Ai ,Fi<=104【试题分析】线性递推式求第k 项可转换成矩阵连乘如:已知起始项F1,F2,F3,F n =2F n-1+3*f n-2+4F n-3+6,求第K 项值列矩阵方法1:]6,1*6322314,3,2[1100021003010400*]6,3,2,1[]6,4,3,2[+++=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=F F F F F F F F F F F ,,,,,,,,,,,,或]1,1*6322314,3,2[1600021003010400*]1,3,2,1[]6,4,3,2[+++=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=F F F F F F F F F F F ,,,,,,,,,,,,因此第K 项的值是[F1,F2,F3,6]* 矩阵的k-1次方得到的矩阵第一项的值。
构造方法,若不考虑常数项,则n 阶递推式构造n*n 的矩阵,从第二行第一列开始的(n-1)*(n-1)的子矩阵为对角线为1的矩阵,第n 列从上到下为n 阶递推式由前到后的n 个系数,其它项为0。
若有常数项,则列在最后,并增加矩阵维数。
注意:列项时由前到后列如,[F n-2 F n-1 F n ]列矩阵方法2:⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡+++=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡66322314326321*10001234010000106432F F F F F F F F F F F ,,,,,,,,,,,,同样,第K 项的值是矩阵的k-1次方得到的矩阵第一项的值。
构造方法,若不考虑常数项,则n 阶递推式构造n*n 的矩阵,从第一行第二列开始的(n-1)*(n-1)的子矩阵为对角线为1的矩阵,第n 行为n 阶递推式由前到后的n 个系数,其它为项为0。
注意:列项时由前到后列如,[F n-2 F n-1 F n ]因此,本题的方法核心是构造矩阵。
本题由于项是从第0项开始的,所以第k 项即为求矩阵的k 次方。
const m=9973;mxn=9;type matrix=array[1..mxn+1,1..mxn+1]of longint;var a,b:matrix;f,ans,n,i,j,c:longint;k:int64;function multiply(a,b:matrix):matrix;var c:matrix;i,j,k:longint;beginfillchar(c,sizeof(c),0);for i:=1 to n+1 dofor j:=1 to n+1 dofor k:=1 to n+1 doc[i,j]:=(c[i,j]+a[i,k]*b[k,j])mod m;exit(c);end;function pow(i:int64):matrix;var t:matrix;beginif i=1 then exit(a);t:=pow(i div 2);t:=multiply(t,t);if odd(i) then t:=multiply(t,a);exit(t);end;beginreadln(n,k);for i:=2 to n do a[i,i-1]:=1;for i:=1 to n+1 dobeginread(c);a[i,n]:=c;end;a[n+1,n+1]:=1;b:=pow(k);ans:=b[n+1,1];for i:=1 to n dobeginread(f);ans:=(ans+f*b[i,1])mod m;end;writeln(ans);end.【典型例题1】:病毒入侵【问题描述】H5N1型高致病性禽流感击了bzbz国,不可避免的,bzbz 国的大量鸡死于流感。