奇异值的子集和向量
矩阵一个= delsq (numgrid (' C ', 15))
是一个对称正定矩阵的奇异值相当均匀间隔(0 8)。计算出六大奇异值。
一个= delsq (numgrid (“C”、15));s =圣言(A)
s =6×17.8666 7.7324 7.6531 7.5213 7.4480 7.3517
指定第二个输入来计算一个特定数量的最大奇异值。
s =圣言(3)
s =3×17.8666 7.7324 7.6531
矩阵一个= delsq (numgrid (' C ', 15))
是一个对称正定矩阵的奇异值相当均匀间隔(0 8)。计算五个最小奇异值。
一个= delsq (numgrid (“C”、15));s =圣言(5“最小”)
s =5×10.5520 0.4787 0.3469 0.2676 0.1334
创建一个100 - 100年-诺伊曼稀疏矩阵。
C =画廊(“纽曼”,100);
计算十最小奇异值。
党卫军=圣言(C, 10,“最小”)
党卫军=10×10.9828 0.9049 0.5625 0.5625 0.4541 0.4506 0.2256 0.1139 0.1139 0
计算10最小非零奇异值。由于矩阵的奇异值等于0,“smallestnz”
选择省略了。
snz =圣言(C, 10,“smallestnz”)
snz =10×10.9828 0.9828 0.9049 0.5625 0.5625 0.4541 0.4506 0.2256 0.1139 0.1139
创建代表右上角和左下角的两个矩阵非零块稀疏矩阵。
n = 500;B =兰德(500);C =兰德(500);
保存Afun
在您的当前目录,以便它是可用的圣言会
。
函数y = Afun (x, tflag, B, C, n)如果比较字符串(tflag“notransp”)y = [B * x (n + 1:结束);C * x (1: n)];其他的* x y = [C”(n + 1:结束);B * x (1: n)];结束
这个函数Afun
使用B
和C
来计算* x
或‘* x
(根据指定的标志)没有形成整个稀疏矩阵一个= [0 B (n);C 0 (n))
。这利用矩阵的稀疏模式节省内存的计算* x
和‘* x
。
使用Afun
计算的十大奇异值一个
。通过B
,C
,n
作为额外的输入Afun
。
s =圣言(@ (x, tflag) Afun (x, tflag, B, C, n), (1000 1000), 10)
s = 250.3248 249.9914 12.7627 12.7232 12.6988 12.6608 12.6166 12.5643 12.5419 12.4512
直接计算的十大奇异值一个
比较结果。
一个= [0 B (n);C 0 (n)];s =圣言(10)
s = 250.3248 249.9914 12.7627 12.7232 12.6988 12.6608 12.6166 12.5643 12.5419 12.4512
west0479
是一个实值479 - 479稀疏矩阵。几大奇异值矩阵,和许多小的奇异值。
负载west0479
并将其存储为一个
。
负载west0479一个= west0479;
计算的奇异值分解一个
,返回六大奇异值和对应的奇异向量。检查指定第四个输出参数奇异值的收敛性。
[U, V,添加]=圣言();添加
添加= 0
添加
表明所有的奇异值聚集。奇异值是输出矩阵的对角线上年代
。
s =诊断接头(s)
s =6×1105×3.1895 3.1725 3.1695 3.1685 3.1669 0.3038
检查结果通过计算的奇异值分解一个
。转换一个
一个完整的矩阵和使用圣言会
。
[U1, S1, V1] =圣言(完整的(A));
情节的六大奇异值一个
计算圣言会
和圣言会
用对数刻度。
s2 =诊断接头(S1);semilogy (s2 (1:6),“r”。)举行在semilogy(年代,“罗”,“MarkerSize”10)标题(“west0479奇异值”)传说(“圣言”,“圣言”)
创建一个稀疏的对角矩阵,并计算出六大奇异值。
=诊断接头(稀疏([1 e4的* (8)1 e4: 1:1)));s =圣言(A)
警告:只有2的6所请求的奇异值聚集。奇异值南不收敛。
s =6×1104×1.0000 - 0.9999南南南南
的圣言会
算法产生一个警告以来的最大迭代数进行但不能宽容的实现。
解决收敛问题的最有效的方法是增加的最大大小维子空间中使用的计算通过使用一个更大的值“SubspaceDimension”
。这通过在名称-值对吗“SubspaceDimension”
的价值60
。
s =圣言(6“最大”,“SubspaceDimension”、60)
s =6×1104×1.0000 1.0000 1.0000 1.0000 1.0000 1.0000
计算10近奇异矩阵的最小奇异值。
rng默认的格式shortgB = spdiags ([repelem ([1;1 e],[2] 198年)(200,1)],[0,1],200年,200年);s1 =圣言(B 10“最小”)
警告:侦测到大型残留标准。这可能是因为糟糕的条件输入矩阵条件数1.0008 e + 16)。
s1 =10×17.0945 7.0945 7.0945 7.0945 7.0945 7.0945 7.0945 7.0945 0.2593 0.0000
警告表明圣言会
无法计算出适当的奇异值。的失败圣言会
是因为之间的差距最小的和第二最小奇异值。圣言(…,“最小”)
需要反B
,从而导致大的数值误差。
相比之下,计算准确的奇异值使用圣言会
。
s =圣言(完整的(B));s = s (end-9:结束)
s =10×10.1420 0.1262 0.1105 0.0947 0.0789 0.0631 0.0474 0.0316 0.0158 0.0000
为了重现这个计算圣言会
,做的QR分解B
。三角矩阵的奇异值R
是一样的吗B
。
(Q, R, p) = qr (B, 0);
每一行的规范R
。
rownormR =√诊断接头(R * R '));semilogy (rownormR)在;semilogy(大小(R, 1), rownormR(结束),“罗”)
最后一个条目R
几乎是零,导致的不稳定的解决方案。
防止这个条目腐蚀好的部分的解决方案通过设置的最后一行R
是零。
R (,) = 0;
使用圣言会
找到10最小奇异值R
。结果相媲美圣言会
。
sr =圣言(R, 10日“最小”)
sr =10×10.1420 0.1262 0.1105 0.0947 0.0789 0.0631 0.0474 0.0316 0.0158 0
计算的奇异向量B
使用这种方法,将左、右奇异向量使用问
和排列向量p
。
(U, V) =圣言(R, 20日“年代”);U = Q *;:V (p) = V;
一个
- - - - - -输入矩阵输入矩阵。一个
通常,但并非总是如此,一个大的和稀疏矩阵。
数据类型:双
复数的支持:金宝app是的
k
- - - - - -奇异值来计算奇异值来计算数量,指定为一个积极的标量整数。圣言会
奇异值返回少于要求如果这些条件得到满足:
k
大于min(大小(A))
σ= ' smallestnz '
和k
比非零奇异值的数量大吗一个
如果k
太大呢圣言会
替换的最大有效值k
。
例子:圣言(2)
返回的两个最大的奇异值一个
。
σ
- - - - - -类型的奇异值“最大”
(默认)|“最小”
|“smallestnz”
|标量指定类型的奇异值,这些值。
选项 | 描述 |
---|---|
|
最大奇异值 |
|
最小奇异值 |
|
最小非零奇异值 |
标量 |
奇异值最接近一个标量 |
例子:圣言(k“最小”)
计算k
最小奇异值。
例子:圣言(k, 100)
计算k
奇异值接近One hundred.
。
数据类型:双
|字符
|字符串
选择
- - - - - -选择结构选择结构,指定为一个结构包含一个或多个字段的表。
请注意
使用结构的选项来指定选项不推荐。使用名称-值对。
选择字段 | 描述 | 名称-值对 |
---|---|---|
托尔 |
收敛公差 |
“宽容” |
麦克斯特 |
最大迭代次数 |
“MaxIterations” |
p |
维子空间的最大大小 |
“SubspaceDimension” |
情况 |
离开初始向量 |
“LeftStartVector” |
半 |
开始正确的初始向量 |
“RightStartVector” |
disp |
诊断信息显示水平 |
“显示” |
失败 |
治疗nonconverged奇异值的输出 | “FailureTreatment” |
请注意
圣言会
忽略了选项p
当使用一个数字标量的转变σ
。
例子:选择。托尔= 1e-6, opts.maxit = 500
创建一个结构设置的字段值托尔
和麦克斯特
。
数据类型:结构体
Afun
- - - - - -矩阵函数矩阵函数,指定为一个函数处理。这个函数Afun
必须满足以下条件:
Afun (x, notransp)
接受一个向量x
并返回产品* x
。
Afun (x,“透明”)
接受一个向量x
并返回产品‘* x
。
请注意
使用功能处理的情况σ= '大'
(这是默认的)。
例子:圣言(Afun [1000 - 1200])
n
- - - - - -使用的矩阵大小Afun
矩阵的大小一个
所使用的Afun
双元素大小,指定为一个向量(mn)
。
指定可选的逗号分隔条名称,值
参数。的名字
参数名称和吗价值
相应的价值。的名字
必须出现在引号。您可以指定几个名称和值对参数在任何顺序Name1, Value1,…,的家
。
s =圣言(k,σ,“宽容”,1平台以及MaxIterations, 100)
放松的收敛宽容和使用更少的迭代。
宽容
- - - - - -收敛公差1 e-14
(默认)|非负实数收敛宽容,指定为逗号分隔组成的“宽容”
和非负的实际数字标量。
例子:s =圣言(k,σ,“宽容”,1 e - 3)
MaxIterations
- - - - - -最大数量的迭代算法300年
(默认)|正整数最大数量的算法迭代,指定为逗号分隔组成的“MaxIterations”
和一个正整数。
例子:s =圣言(k,σ,MaxIterations, 350)
SubspaceDimension
- - - - - -维子空间的最大大小马克斯(3 * k, 15)
(默认)|非负整数维子空间的最大大小,指定为逗号分隔组成的“SubspaceDimension”
和一个非负整数。的“SubspaceDimension”
值必须大于或等于k + 2
,在那里k
是奇异值的数量。
的问题,圣言会
无法收敛,增加的价值“SubspaceDimension”
可以提高收敛行为。
这个选项被忽略的数值σ
。
例子:s =圣言(k,σ,SubspaceDimension, 25)
LeftStartVector
- - - - - -离开初始向量离开初始向量开始,指定为逗号分隔组成的“LeftStartVector”
和一个数字向量。
您可以指定“LeftStartVector”
或“RightStartVector”
,但不能两者兼得。如果没有指定选项,那么一个米
——- - - - - -n
矩阵一个
,默认的是:
m < n
——离开初始起动向量集randn (m, 1)
m > = n
——正确的初始向量将开始randn (n, 1)
开始指定一个不同的随机向量的主要原因是控制随机数流用于生成向量。
请注意
圣言会
选择初始向量可再生的方式使用私人随机数流。改变随机数种子不影响的使用randn
。
例子:s =圣言(k,σ,LeftStartVector, randn (m, 1))
使用一个随机向量开始吸引全球随机数流值。
数据类型:双
RightStartVector
- - - - - -开始正确的初始向量正确的初始向量开始,指定为逗号分隔组成的“RightStartVector”
和一个数字向量。
您可以指定“LeftStartVector”
或“RightStartVector”
,但不能两者兼得。如果没有指定选项,那么一个米
——- - - - - -n
矩阵一个
,默认的是:
m < n
——离开初始起动向量集randn (m, 1)
m > = n
——正确的初始向量将开始randn (n, 1)
开始指定一个不同的随机向量的主要原因是控制随机数流用于生成向量。
请注意
圣言会
选择初始向量可再生的方式使用私人随机数流。改变随机数种子不影响的使用randn
。
例子:s =圣言(k,σ,RightStartVector, randn (n - 1))
使用一个随机向量开始吸引全球随机数流值。
数据类型:双
FailureTreatment
- - - - - -治疗nonconverged奇异值“replacenan”
|“保持”
|“下降”
治疗nonconverged奇异值,指定为逗号分隔组成的“FailureTreatment”
其中一个选项:“replacenan”
,“保持”
,或“下降”
。
的价值“FailureTreatment”
决定nonconverged奇异值显示在输出中。
选项 |
对输出的影响 |
---|---|
|
Nonconverged奇异值从输出,从而导致 |
|
Nonconverged奇异值替换 |
|
Nonconverged奇异值包含在输出中。 |
例子:s =圣言(k,σ,“FailureTreatment”,“下降”)
删除nonconverged奇异值的输出。
数据类型:字符
|字符串
显示
- - - - - -切换显示的诊断信息假
(默认)|真正的
|0
|1
切换显示的诊断信息,指定为假
,真正的
,0
,或1
。的值假
或0
关掉显示器,而值真正的
或1
打开。
年代
- - - - - -奇异值奇异值,作为一个列向量返回。奇异值非负实数列在减少。
U
——左奇异向量左奇异向量,作为一个矩阵的列返回。如果一个
是一个米
——- - - - - -n
矩阵和你请求k
奇异值,然后U
是一个米
——- - - - - -k
与正交矩阵的列。
不同的机器上,MATLAB的版本®,或参数(如起始矢量和子空间维度)仍然可以产生不同的奇异向量数值准确。对应的列U
和V
可以翻转他们的迹象,因为这并不影响表达式的值一个= U * * V '
。
年代
- - - - - -奇异值奇异值,返回为一个对角矩阵。的对角元素年代
是负的奇异值。如果一个
是一个米
——- - - - - -n
矩阵和你请求k
奇异值,然后年代
是k
——- - - - - -k
。
V
——右奇异向量右奇异向量,作为一个矩阵的列返回。如果一个
是一个米
——- - - - - -n
矩阵和你请求k
奇异值,然后V
是一个n
——- - - - - -k
与正交矩阵的列。
不同的机器、版本的MATLAB或参数(如起始矢量和子空间维度)仍然可以产生不同的奇异向量数值准确。对应的列U
和V
可以翻转他们的迹象,因为这并不影响表达式的值一个= U * * V '
。
国旗
——收敛国旗收敛国旗,作为一个标量返回。的值0
表明所有奇异值聚集。否则,不是所有的奇异值聚集。
使用这种收敛国旗输出抑制警告收敛失败。
svdsketch
是有用的,当你不知道提前等级指定用什么圣言会
,但你知道宽容的近似计算应该满足。
圣言会
使用私人随机数生成默认的初始向量流以确保在运行再现性。设置随机数字生成器使用状态rng
在调用之前圣言会
不影响输出。
使用圣言会
并不是最有效的方式找到一些奇异值小、密度矩阵。对于这样的问题,使用圣言(全(A))
可能会更快。例如,发现三个矩阵奇异值在500 - 500年是一个相对较小的问题圣言会
很容易处理。
如果圣言会
不能收敛为给定的矩阵,增加维子空间的大小增加的价值“SubspaceDimension”
。作为二次选择,调整的最大迭代数(“MaxIterations”
)和收敛公差(“宽容”
)也可以帮助收敛行为。
增加k
有时可以提高性能,尤其是当矩阵奇异值重复。
行为改变R2016a
再现性
调用圣言会
连续多次现在产生相同的结果。要改变这种行为:
在设置R2017a或更早情况
或半
字段选择结构的随机向量。
R2017b或后,选择设置“LeftStartVector”
或“RightStartVector”
一个随机向量。
[1]Baglama, j·l·Reichel“增强隐式地重启兰索斯Bidiagonalization方法。”暹罗期刊在科学计算。27卷,2005年,页到。
[2]拉森,r . m .”兰索斯与部分reorthogonalization Bidiagonalization。”计算机科学部门,奥尔胡斯大学。DAIMI pb - 357, 1998。
backgroundPool
与并行计算工具箱™或加速代码ThreadPool
。这个函数完全支持线程的环境。金宝app有关更多信息,请参见MATLAB函数线程环境中运行。
如果dispone di una versione modificata di questo esempio。Desideri aprire questo esempio con le modifiche星期二吗?
海脂肪clic苏联合国collegamento切corrisponde questo第一MATLAB:
Esegui il第一inserendolo所以nella隙缝di第一MATLAB。我浏览器web非supportano金宝app comandi MATLAB。
你也可以从下面的列表中选择一个网站:
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。