15章 求矩阵特征值和特征向量(3)

2019-08-30 22:31

0.499988 -0.5 0.707115

此结果说明迭代6次,求得误差为1.16685?10-9的矩阵A的所有特征值?1=0.585786,?2=3.41421,?3=2 及对应的特征向量

{0.500012,0.707107,0.499988},

{-0.5,0.707107,-0.5},

{-0.707098,0.0000120684,0.707115}

本题矩阵A的3个特征值为{2-sqrt[2],2+sqrt[2], 2}。线性代数告诉我们,不同特征值对应的特征向量是正交的,用如上求出的特征向量验证,可以得到

-17

{0.500012,0.707107,0.499988}.{-0.5,0.707107,-0.5}= -5.55112?10,

{0.500012,0.707107,0.499988}.{-0.707098,0.0000120684,0.707115}=-5.55112?10

{-0.5,0.707107,-0.5}.{-0.707098,0.0000120684,0.707115}=-1.66533?10

可见求出的特征向量有很好的正交性,这也是Jacobi方法的优点

-16

-17

QR 方 法

求镜面反射矩阵算法

1.输入向量x,维数n 2. 计算a ?sgn(x1)||x||2 3. x1 ?x1 +a 4. b ? a.x1

5. 计算H?E-b-1xTx

注:向量x=( x1 ,x2 ,… ,xn)T,E为n阶单位矩阵。该算法算出的镜面反射矩阵H左乘给定的非零向量x=( x1,x2,???? , xn)T后,获得只有第一个分量不为零的向量 Hx=-?e 1

T

其中e1=( 1,0,???? , 0), ? =?||x|| 2。

求Householder矩阵(镜面反射矩阵)程序

x=Input[“输入非零向量x=”]

n=Length[x];

a=Sign[x[[1]]]*Sqrt[Sum[x[[i]]^2,{i,1,n}]]; x[[1]]=x[[1]]+a; b=a*x[[1]];

h=Table[0,{n},{n}];

Do[h[[i,j]]=x[[i]]*x[[j]],{i,1,n},{j,1,n}]; h=IdentityMatrix[n]-h/b; MatrixForm[%]

说明:本程序用于求把向量x变为?||x||2e1的镜面反射矩阵H。程序执行后,先通过键盘输入向量x,程序即可给出镜面反射矩阵H。

程序中变量说明 h:存放镜面反射矩阵H x:存放向量x

求Householder矩阵(镜面反射矩阵)例题

设向量x={3,5,1,1},试构造一个镜面反射矩阵H,使Hx=-||x||2e1, e1 ={1,0,0,0}. 解:执行求镜面反射矩阵H程序后在输入窗口中按输入向量:

{3,5,1,1},然后用鼠标点击窗口的“OK”按扭,得如下输出结果。

T

T

-1/2 -5/6 -1/6 -1/6

-5/6 29/54 -5/54 5/54

-1/6 -5/54 53/54 -1/54

-1/6 -5/54 -1/54 53/54

这个结果就是所求的镜面反射矩阵H.

QR分解算法

1. Q?E, R?A

2. For k=1,2,..,n-1

取出矩阵R的第k列的ak+1 ,k,ak+2 k,ak+3 k,…,an k元素构造(n-k+1)?(n-k+1)阶镜面反射矩阵H(k)

将n阶单位矩阵的右下脚子阵用H(k) 取代构造n?n阶正交矩阵Qk

做Q? QkR , Q? QQk

注: E为n阶单位矩阵。该算法算出矩阵A的QR分解A=QR,其中Q存放正交矩阵, R存放上三角矩阵。

用Householder变换求矩阵QR分解程序

Clear[x,h,a];

h[x_]:=Module[{a,b,v,t,n},n=Length[x];

a=Sign[x[[1]]]*Sqrt[Sum[x[[i]]^2,{i,1,n}]]; v=Table[0,{n},{n}]; t=Table[0,{n}]; t=x;

t[[1]]=x[[1]]+a;

b=a*t[[1]];

Do[v[[i,j]]=t[[i]]*t[[j]],{i,1,n},{j,1,n}]; IdentityMatrix[n]-v/b];

a=Input[“输入矩阵A=”] n=Input[“输入矩阵A的阶n=”] hh=IdentityMatrix[n]; Do[

b=Table[a[[i,k]],{i,k,n}]; h1=h[b];

h2=IdentityMatrix[n];

Do[h2[[i+k-1,j+k-1]]=h1[[i,j]],{i,1,n-k+1},{j,1,n-k+1}]; a=h2.a; hh=hh.h2; Print[\ Print[\ {k,1,n-1}]

说明:本程序用于求矩阵A的QR分解。程序执行后,先通过键盘输入矩阵A,程序即可给出每次的镜面反射矩阵H和对应的正交矩阵。

程序中变量说明

h[x]:求出向量x的镜面反射矩阵H

a: 存放矩阵A和QR分解过程中的矩阵R

hh: 存放矩阵A阵QR分解过程中的正交矩阵Q

QR分解例题与实验

例5.设矩阵

??3?A??4???12??14130?313?19??135??13?11??13??求A的QR分解。

解:执行QR分解程序后在输入窗口中按输入向量

{{3,-14/13,-19/13},{4,0,5/13},{12,-3/13,-11/13}},3

然后用鼠标点击窗口的“OK”按扭,得如下输出结果。

R={{-13, 6/13, 1}, {0, 5/13, 1}, {0, 12/13, 1}}

Q={{-3/13, -4/13,-12/13},{-4/13, 12/13, -3/13}, {-12/13, -3/13, 4/13}} R={{-13, 6/13, 1}, {0, -1, -17/13}, {0, 0, -7/13}} Q={{-3/13,164/169,-12/169},{-4/13,-24/169,-159/169},

{-12/13,-33/169,56/169}}

故得到A的QR分解为

??3?A??4???12??14130??31319??3???13?13?54????13??1311??12???13???1316416924?16933?16912????13169??159???0169??56????0169???613?10?1??17??13?7???13?

QR方法算法

1.输入矩阵A、最大迭代次数nmax 2.k?0

3.将A做QR分解得A= Q0 R0 4.交换乘积次序得A1 =R0 Q0

5.判断A1 是否本质上一致收敛于上三角形矩阵或分快三角形矩阵,如果收敛,则停止,否则做A?A1,k?k+1,转3

QR算法程序

h[x_]:=Module[{a,b,v,t,n},n=Length[x];

a=N[Sign[x[[1]]]*Sqrt[Sum[x[[i]]^2,{i,1,n}]],10]; v=Table[0,{n},{n}]; t=Table[0,{n}]; t=x;

t[[1]]=x[[1]]+a; b=a*t[[1]];

Do[v[[i,j]]=t[[i]]*t[[j]],{i,1,n},{j,1,n}]; IdentityMatrix[n]-v/b]; a=Input[“输入矩阵A=”]

n=Input[“输入矩阵A的阶n=”] nmax=Input[“输入迭代最大次数nmax=”] Do[ hh=IdentityMatrix[n];

Do[ b=Table[a[[i,k]],{i,k,n}]; h1=h[b];

h2=IdentityMatrix[n];

Do[h2[[i+k-1,j+k-1]]=h1[[i,j]],{i,1,n-k+1},{j,1,n-k+1}]; a=h2.a; hh=hh.h2, {k,1,n-1}];

Print[\迭代次数m=\ a=a.hh;

Print[\ {mm,1,nmax}]

说明:本程序用于求一般矩阵A的全部特征值。程序执行后,先通过键盘输入矩阵A、矩阵的阶数、迭代最大次数,程序即可给出每次迭代的矩阵序列,通过观察最后给出的矩阵

可以得到矩阵A的全部特征值。

程序中变量说明:

h[x]:求出向量x的镜面反射矩阵H函数

a:存放矩阵A和QR分解过程中的R和QR方法的迭代序列Ak hh: 存放矩阵A阵QR分解过程中的正交矩阵Q nmax: 存放QR方法的迭代允许的最大次数。 注:最大次数nmax可以调控。

QR方法例题与实验

例6.设矩阵

?5?1A???0??0?2020?5?321?1??2??3???2?用 QR方法求A的全部特征值。

解:执行QR方法程序后在输入窗口中按输入向量

{{5,-2,-5,-1}, {1,0,-3,2}, {0,2,2,-3}, {0,0,1,-2}},4,20 然后用鼠标点击窗口的“OK”按扭,得如下输出结果。

迭代次数m=1 a=

4.61538 -5.95115 1.42869 1.25978 0.399704 1.94017 -2.52456 1.66248 1.18016?10-16 2.46957 -0.853801 3.19062 5.11023?10-17 6.6913?10-18 0.303869 -0.701754 迭代次数m=2 a=

4.11828 -3.46451 5.39263 -0.151083 0.299921 0.687205 -3.30064 -4.2376 3.64519?10-17 0.930157 1.11718 -0.711995 8.69753?10-18 4.45096?10-17 0.22015 -0.922664 迭代次数m=3

a=

3.87093 0.996828 6.20813 0.862851 0.0959 -0.352723 -2.44633 3.34172 2.14451?10 2.39185 2.56005 -2.23815 1.3935?10-18 3.94583?10-17 0.0700648 -1.07825 …………………………………………………………………. 迭代次数m=18

a=

4.00003 -6.2063 0.580683 -0.845242 0.0000160962 2.41472 -2.23612 -2.00627

-17

1.06607?10 2.68388 -0.414755 -3.49264 3.81442?10 6.06345?10 3.57803?10 -1. 迭代次数m=19 a=

4.00001 -3.71942 5.00213 0.845252 0.0000145278 1.07369 -3.89046 3.9383 6.8727?10-21 1.02954 0.926304 0.844604 1.77561?10 3.26111?10 2.58357?10 -1.

迭代次数m=20

a=

3.99999 0.777338 6.18475 -0.845265 5.4027?10-6 -0.426111 -2.59369 -3.4272 2.76352?10-21 2.32634 2.42612 2.1161

2.12415?10 2.46193?10 7.68638?10 -1.

观察输出结果可以明显看到矩阵序列虽然开始收敛规律不明显,但随着迭代次数的增加,其本质上收敛特点变得越来越明显,如在矩阵的a21,a31 ,a41 ,a42 ,a43对应的数列具有明显的收敛于零的特点。当迭代20次后,这些数相应变为5.4027?10-6,2.76352?10,2.12415?10 ,2.46193?10 ,7.68638?10 ,由此可以知道矩阵A有2个实特征值3.99999 和-1和两个复特征值,它们由二阶主子阵

-0.426111 -2.59369 2.32634 2.42612 的特征值得出,键入命令

Eigenvalues[{{-0.426111,-2.59369},{2.32634,2.42612}}]

可以得出两个复特征值{1. + 2. I, 1. - 2. I}。本题的4个特征值为{4., 1. + 2. I, 1. - 2. I, -1.},可见收敛效果相当满意。

-21

-28

-22

-8

-28

-22

-8

-27

-22

-7

-27

-22

-7

-20

(k)(k)(k)(k)(k)


15章 求矩阵特征值和特征向量(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:银行存量客户盘活项目方案3.0

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: