特征值和特征向量的子集
矩阵A = delsq(numgrid('C',15))
是一个对称正定矩阵,其特征值合理地分布在区间(0 8)中。计算六个最大的幅值特征值。
A = delsq(numgrid)“C”、15));d = eigs(A)
d =6×17.8666 7.7324 7.6531 7.5213 7.4480 7.3517
指定第二个输入来计算最大特征值的特定数量。
d = eigs(A,3)
d =3×17.8666 7.7324 7.6531
矩阵A = delsq(numgrid('C',15))
是一个对称正定矩阵,其特征值合理地分布在区间(0 8)中。计算最小的5个特征值。
A = delsq(numgrid)“C”、15));d = eigs(A,5,“smallestabs”)
d =5×10.1334 0.2676 0.3469 0.4787 0.5520
创建一个1500 × 1500的随机稀疏矩阵,非零元素的近似密度为25%。
N = 1500;A = sprand(n,n,0.25);
求矩阵的LU分解,返回一个排列向量p
满足A(p,:) = L*U
.
[L,U,p] = U (A, U,p)“向量”);
创建一个函数句柄Afun
它接受一个向量输入x
并使用LU分解的结果,实际上,返回x \
.
Afun = @(x) U\(L\(x(p)));
计算六个最小幅度特征值eigs
函数句柄Afun
.第二个输入是的大小一个
.
d = eigs(Afun,1500,6,“smallestabs”)
d =6×1复杂0.1423 + 0.0000i 0.4859 + 0.0000i -0.3323 - 0.3881i -0.3323 + 0.3881i 0.1019 - 0.5381i 0.1019 + 0.5381i
west0479
是一个实值479 × 479稀疏矩阵,同时具有实值和复值共轭特征值对。
加载west0479
矩阵,然后计算和绘制所有的特征值使用eig
.因为特征值是复数,情节
自动使用实部作为x坐标,虚部作为y坐标。
负载west0479A = west0479;d = eig(满(A));情节(d,“+”)
特征值沿着实线(x轴)聚集,特别是在原点附近。
eigs
有以下几个选项σ
它可以挑选出不同类型的最大或最小特征值。计算并绘制出每个可用选项的特征值σ
.
图绘制(d,“+”)举行在la = eigs(A,6;“largestabs”);情节(洛杉矶,“罗”) A = eigs(A,6,“smallestabs”);情节(sa),“去”)举行从传奇(所有特征值的,最大程度的,最小程度的)包含(“实轴”) ylabel (“虚轴”)
图绘制(d,“+”)举行在ber = eigs(A,4,“bothendsreal”);情节(ber,“r ^”(A,4,)“bothendsimag”);情节(贝,“g ^”)举行从传奇(所有特征值的,“两端都是真实的”,“两端都是虚构的”)包含(“实轴”) ylabel (“虚轴”)
图绘制(d,“+”)举行在lr = eigs(A,3,“largestreal”);情节(lr,“罗”) sr = eigs(A,3,“smallestreal”);情节(sr,“去”(A,3;“largestimag”,“SubspaceDimension”, 45岁);情节(李“m ^”) si = eigs(A,3,“smallestimag”,“SubspaceDimension”, 45岁);情节(si,“c ^”)举行从传奇(所有特征值的,最大的真实”,“最小的真实”,“最大的想象”,“最小的想象”)包含(“实轴”) ylabel (“虚轴”)
“smallestabs”
而且“smallestreal”
特征值创建一个对称正定稀疏矩阵。
A = delsq(numgrid)“C”, 150));
计算6个最小实特征值“smallestreal”
,采用Krylov方法使用一个
.
tic d = eigs(A, 6,“smallestreal”)
d =6×10.0013 0.0025 0.0033 0.0045 0.0052 0.0063
toc
运行时间为3.380573秒。
计算相同的特征值“smallestabs”
的逆,它采用的是Krylov方法一个
.
tic dsm = eigs(A, 6,“smallestabs”)
dsm =6×10.0013 0.0025 0.0033 0.0045 0.0052 0.0063
toc
运行时间为0.341139秒。
特征值聚集在零附近。的“smallestreal”
计算努力收敛于使用一个
因为特征值之间的差是如此之小。相反,“smallestabs”
选项使用的逆一个
的特征值的倒数一个
,它们之间的差距大得多,因此更容易计算。这种性能的提高是以分解为代价的一个
,这是没有必要的“smallestreal”
.
计算一个数字附近的特征值σ
它几乎等于一个特征值。
矩阵A = delsq(numgrid('C',30))
是一个大小为632的对称正定矩阵,其特征值在区间(0 8)中合理均匀分布,但在4.0处有18个特征值重复。为了计算4.0附近的一些特征值,尝试函数调用是合理的4.0 eigs (20)
.然而,这个调用计算的逆的最大特征值A - 4.0* i
,在那里我
是一个单位矩阵。因为4.0是的特征值一个
,这个矩阵是奇异的,因此没有逆矩阵。eigs
失败并产生错误消息。的数值σ
不能完全等于一个特征值。相反,您必须使用值σ
这接近但不等于4.0来找到那些特征值。
计算所有的特征值eig
,最接近4 - 1e-6的20个特征值使用eigs
比较结果。画出用每种方法计算的特征值。
A = delsq(numgrid)“C”, 30));Sigma = 4 - 1e-6;d = eig(A);D = sort(eigs(A,20,sigma));
情节(d (307:326),“ks”)举行在情节(D,k +的)举行从传奇(“eig (A)”,“eigs(σ),20日”)标题('18 A的重复特征值')
创建稀疏随机矩阵一个
而且B
它们的非零元素密度都很低。
B = sprandn(1e3,1e3,0.001) + speye(1e3);B = B'*B;A = sprandn(1e3,1e3,0.005);A = A+A';
求矩阵的Cholesky分解B
,使用三个输出返回排列向量年代
和测试值p
.
[R,p,s] = l(B,“向量”);p
P = 0
自p
是零,B
一个对称正定矩阵满足吗B(s,s) = R'*R
.
计算所涉及的广义特征值问题的六个最大幅特征值和特征向量一个
而且R
.自R
的Cholesky因子是多少B
,指定“IsCholesky”
作为真正的
.此外,由于B(s,s) = R'*R
因此R = chol(B(s,s))
,使用排列向量年代
的价值“CholeskyPermutation”
.
[V,D,flag] = eigs(A,R,6)“largestabs”,“IsCholesky”,真的,“CholeskyPermutation”,年代);国旗
Flag = 0
自国旗
等于零,所有的特征值都收敛了。
一个
- - - - - -输入矩阵输入矩阵,指定为方阵。一个
通常,但并不总是,一个大而稀疏的矩阵。
如果一个
是对称的,那么eigs
在这种情况下使用专门的算法。如果一个
是近对称的,然后考虑使用A = (A+A')/2
为了使一个
调用前对称eigs
.这确保了eigs
计算实特征值而不是复特征值。
数据类型:双
复数支持:万博1manbetx是的
B
- - - - - -输入矩阵输入矩阵,指定为大小相同的方阵一个
.当B
是指定的,eigs
解决了广义特征值问题A* v = b * v * d
.
如果B
对称是正定的吗eigs
在这种情况下使用专门的算法。如果B
是近对称正定,则考虑使用B = (B+B')/2
为了使B
调用前对称eigs
.
当一个
是标量,可以指定吗B
作为一个空矩阵eigs ([], k)
解决标准特征值问题,消除之间的歧义B
而且k
.
数据类型:双
复数支持:万博1manbetx是的
k
- - - - - -需要计算的特征值的个数要计算的特征值的个数,指定为正标量整数。如果k
大于大小(2)
,然后eigs
使用最大有效值k = size(A,2)
代替。
例子:eigs (2)
的两个最大的特征值一个
.
σ
- - - - - -特征值的类型“largestabs”
(默认)|“smallestabs”
|“largestreal”
|“smallestreal”
|“bothendsreal”
|“largestimag”
|“smallestimag”
|“bothendsimag”
|标量特征值的类型,指定为表中的值之一。
σ |
描述 |
sigma (R2017a及更早的版本) |
---|---|---|
标量(实数或复数,包括0) |
最接近这个数的特征值 |
没有变化 |
|
最大的大小。 |
“lm” |
|
最小的大小。一样 |
“sm” |
|
最大的真实。 |
“lr” ,“拉” |
|
最小的真实。 |
“老” ,“sa” |
|
两端,用 |
“是” |
为非对称问题,σ
也可以是:
σ |
描述 |
sigma (R2017a及更早的版本) |
---|---|---|
|
最大虚部。 |
“李” 如果一个 是复杂的。 |
|
最小虚部。 |
“如果” 如果一个 是复杂的。 |
|
两端,用 |
“李” 如果一个 是真实的。 |
例子:eigs (k, 1)
返回k
特征值最接近于1。
例子:eigs (k ' smallestabs ')
返回k
最小幅特征值。
数据类型:双
|字符
|字符串
选择
- - - - - -选择结构选项结构,指定为包含此表中的一个或多个字段的结构。
请注意
不建议使用选项结构来指定选项。请使用名称-值对。
选择字段 | 描述 | 名称-值对 |
---|---|---|
issym |
对称的 |
“IsFunctionSymmetric” |
托尔 |
收敛宽容。 |
“宽容” |
麦克斯特 |
最大迭代次数。 |
“MaxIterations” |
p |
兰索斯基向量的个数。 |
“SubspaceDimension” |
半 |
从向量。 |
“StartVector” |
disp |
诊断信息显示级别。 |
“显示” |
失败 |
输出中非收敛特征值的处理。 | “FailureTreatment” |
上海浦东发展银行 |
是B 对称正定? |
“IsSymmetricDefinite” |
cholB |
是 |
“IsCholesky” |
permB |
指定排列向量 |
“CholeskyPermutation” |
例子:opts.issym=1,选择。托尔=1e-10
创建具有为字段设置的值的结构issym
而且托尔
.
数据类型:结构体
Afun
- - - - - -矩阵函数矩阵函数,指定为函数句柄。这个函数y = Afun(x)
必须根据σ
输入:
* x
——如果σ
是未指定或任何文本选项除“smallestabs”
.
x \
——如果σ
是0
或“smallestabs”
.
(我)一个σ* \ x
——如果σ
是一个非零标量(对于标准特征值问题)。
(一个σ* B) \ x
——如果σ
是一个非零标量(对于广义特征值问题)。
例如Afun
调用时工作eigs
与Sigma = ' smallstab '
:
[L,U,p] = lu(A,'vector');Afun = @(x) U\(L\(x(p)));d = eigs(Afun,100,6,'smallestab ')
对于广义特征值问题,加矩阵B
详情如下(B
不能用函数句柄表示):
d = eigs(Afun,100,B,6,'smallestab ')
一个
假设是非对称的,除非“IsFunctionSymmetric”
(或opts.issym
)则指定相反。设置“IsFunctionSymmetric”
来真正的
确保eigs
计算实特征值而不是复特征值。
方法提供附加参数的信息Afun
功能,请参阅参数化功能.
提示
调用eigs
与“显示”
选项已打开,以查看预期的输出Afun
.
n
- - - - - -方阵的大小由Afun
方阵尺寸一个
它由Afun
,指定为正标量整数。
指定逗号分隔的可选对名称,值
参数。的名字
参数名称和价值
对应的值。的名字
必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家
.
d = eigs(A,k,sigma,'Tolerance',1e-10,'MaxIterations',100)
放宽收敛公差并使用更少的迭代。
宽容
- - - - - -收敛公差1 e-14
(默认)|正实标量收敛公差,指定为逗号分隔对,由“宽容”
和一个正实数标量。
例子:s = eigs(A,k,sigma,'公差',1e-3)
MaxIterations
- - - - - -算法的最大迭代次数300
(默认)|正整数算法迭代的最大次数,指定为逗号分隔的对,由“MaxIterations”
一个正整数。
例子:d = eigs(A,k,sigma,'MaxIterations',350)
SubspaceDimension
- - - - - -Krylov子空间的最大大小马克斯(2 * k, 20)
(默认)|非负整数Krylov子空间的最大大小,指定为逗号分隔的对,由“SubspaceDimension”
和一个非负整数。的“SubspaceDimension”
值必须大于或等于K + 1
对于真正的对称问题,和K + 2
否则,k
是特征值的个数。
推荐值为P >= 2*k
,或者对于真正的非对称问题,P >= 2*k+1
.如果不指定“SubspaceDimension”
值,则默认算法使用20.
兰索斯向量。
对于以下问题eigs
的值增加,不能收敛“SubspaceDimension”
可以改善收敛行为。但是,过多地增加该值会导致内存问题。
例子:d = eigs(A,k,sigma,'SubspaceDimension',25)
StartVector
- - - - - -初始起始向量初始起始向量,指定为逗号分隔的对,由“StartVector”
一个数字向量。
指定不同的随机起始向量的主要原因是希望控制用于生成向量的随机数流。
请注意
eigs
使用私有随机数流以可再现的方式选择起始向量。改变随机数种子就可以了不影响起始向量。
例子:d = eigs(A,k,sigma,'StartVector',randn(m,1))
使用从全局随机数流中提取值的随机起始向量。
数据类型:双
FailureTreatment
- - - - - -非收敛特征值的处理“replacenan”
(默认)|“保持”
|“下降”
非收敛特征值的处理,指定为逗号分隔的对,由“FailureTreatment”
其中一个选项是:“replacenan”
,“保持”
,或“下降”
.
的价值“FailureTreatment”
决定了eigs
在输出中显示非收敛的特征值。
选项 |
对产量的影响 |
---|---|
|
将非收敛特征值替换为 |
|
在输出中包含非收敛特征值。 |
|
从输出中删除非收敛特征值。这个选项可以导致 |
例子:d = eigs(A,k,sigma,'FailureTreatment','drop')
从输出中删除非收敛特征值。
数据类型:字符
|字符串
显示
- - - - - -切换诊断信息显示假
或0
(默认)|真正的
或1
切换诊断信息显示,指定为逗号分隔的对,由“显示”
和一个数字或逻辑1
(真正的
)或0
(假
).指定的值真正的
或1
在计算过程中打开诊断信息的显示。
Afun
IsFunctionSymmetric
- - - - - -对称的Afun
矩阵真正的
或1
|假
或0
对称的Afun
矩阵,指定为逗号分隔的对,由“IsFunctionSymmetric”
和一个数字或逻辑1
(真正的
)或0
(假
).
此选项指定矩阵是否Afun
作用于它的输入向量是对称的。指定的值真正的
或1
为了表明eigs
应该对对称矩阵使用专门的算法并返回实特征值。
A* v = b * v * d
IsCholesky
- - - - - -Cholesky分解开关B
真正的
或1
|假
或0
Cholesky分解开关B
,指定为逗号分隔的对,由“IsCholesky”
和一个数字或逻辑1
(真正的
)或0
(假
).
此选项指定是否为矩阵的输入B
在电话中eigs (A, B, ___)
是乔里斯基因素吗R
所产生的R = chol(B)
.
请注意
不使用此选项,如果σ
是“smallestabs”
或者一个数字标量。
CholeskyPermutation
- - - - - -Cholesky排列向量1: n
(默认)|向量Cholesky排列向量,指定为逗号分隔的对,由“CholeskyPermutation”
一个数字向量。指定排列向量permB
如果稀疏矩阵B
在因式分解之前重新排序根据胆固醇(B (permB permB))
.
的三输出语法胆固醇
对于稀疏矩阵直接获取permB
与[R,p,permB] = chol(B,'vector')
.
请注意
不使用此选项,如果σ
是“smallestabs”
或者一个数字标量。
IsSymmetricDefinite
- - - - - -对称-正确定性切换B
真正的
或1
|假
或0
对称-正确定性切换B
,指定为逗号分隔的对,由“IsSymmetricDefinite”
和一个数字或逻辑1
(真正的
)或0
(假
).指定真正的
或1
当你知道的时候B
是对称正定的,也就是说,它是一个特征值严格为正的对称矩阵。
如果B
是否对称正半定(某些特征值为零),则指定“IsSymmetricDefinite”
作为真正的
或1
部队eigs
使用它在B
是对称正定的。
请注意
要使用此选项,的值σ
必须是数字或“smallestabs”
.
d
——特征值特征值,作为列向量返回。d
根据的值排序不同σ
.
的价值 |
输出排序 |
---|---|
|
按大小降序排列 |
|
按实部降序排列 |
|
按虚部降序排列 |
|
按大小升序排列 |
|
按实部升序 |
|
按虚部升序排列 |
|
虚数部绝对值降序排列 |
V
——特征向量特征向量,作为矩阵返回。的列V
的对角线上对应的特征值D
.的形式和规范V
取决于输入参数的组合:
[V,D] = eigs(A)
收益矩阵V
,它的列是的右特征向量一个
这样A* v = v * d
.的特征向量V
都是归一化的,所以每个的2范数都是1。
如果一个
是对称的,那么特征向量,V
,是标准正交的。
[V,D] = eigs(A,B)
返回V
作为一个矩阵,它的列是广义右特征向量满足A* v = b * v * d
.每个特征向量的2范数不一定是1。
如果B
对称正定,那么特征向量在V
都是标准化的,所以B
-每个的norm为1。如果一个
也是对称的,那么特征向量是B
正交。
不同的机器,MATLAB的发行版®,或参数(如起始向量和子空间维数)可以产生不同的特征向量,它们在数值上仍然是准确的:
对于实特征向量,特征向量的符号可以改变。
对于复特征向量,特征向量可以乘以任何大小为1的复数。
对于多个特征值,其特征向量可以通过线性组合的方式重新组合。例如,如果一个x=λx而且一个y=λy,然后一个(x+y) =λ(x+y),所以x+y也是的特征向量一个.
D
-特征值矩阵特征值矩阵,作为一个对角矩阵返回特征值在主对角线上。
国旗
-收敛标志0
|1
收敛标志,返回为0
或1
.的值0
表示所有特征值都收敛了。否则,不是所有的特征值都收敛。
使用这个收敛标志输出可以抑制关于收敛失败的警告。
eigs
使用私有随机数流生成默认的起始向量,以确保跨运行的可再现性。使用设置随机数生成器状态rng
在调用之前eigs
不影响输出。
使用eigs
并不是最有效的方法来找到一些小而密集的矩阵的特征值。对于这类问题,使用它可能会更快eig(全(A))
.例如,在一个500 × 500矩阵中找到三个特征值是一个相对较小的问题,很容易处理eig
.
如果eigs
的值,增加Lanczos基向量的个数“SubspaceDimension”
.作为辅助选项,调整最大迭代次数,“MaxIterations”
,收敛公差,“宽容”
,也有助于收敛行为。
在R2017b中行为发生了改变
更改输出的排序顺序
eigs
现在根据的值对输出进行排序σ
.例如,命令eigs (k ' largestabs ')
生产k
特征值按大小降序排列。
的输出的排序顺序eigs
不能保证。
再现性
调用eigs
现在连续多次会产生相同的结果。集“StartVector”
来改变这个行为。
显示
的显示值2
不再返回计时信息。相反,eigs
的值。2
的值相同1
.控件显示的消息“显示”
选项已更改。新消息显示每个迭代中的剩余,而不是Ritz值。
斯图尔特G.W.大特征问题的Krylov-Schur算法矩阵分析与应用杂志.2001年第3期第23卷第601-614页。
[2] Lehoucq, r.b., D.C. Sorenson, C. Yang。ARPACK用户指南.费城,宾夕法尼亚州:SIAM, 1998。
backgroundPool
或使用并行计算工具箱™加速代码ThreadPool
.这个函数完全支持基于线程的环境。万博1manbetx有关更多信息,请参见在线程环境中运行MATLAB函数.
这个函数完全支持分布式数组。万博1manbetx有关更多信息,请参见运行MATLAB函数与分布式数组(并行计算工具箱).
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。万博1manbetx
您也可以从以下列表中选择网站:
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。