18.3矩阵分解

 
: R = chol (A)
: [R, p] = chol (A)
: [R, p, Q] = chol (A)
: [R, p, Q] = chol (A, "vector")
: [L, …] = chol (…, "lower")
: [R, …] = chol (…, "upper")

计算Cholesky因子的上限,R,的实对称复埃尔米特正定矩阵A.

Cholesky因子的上限R通过使用矩阵的上三角部分来计算A定义为

R * R= A.

调用chol使用可选"upper"标志具有相同的行为。相比之下,使用可选"lower"标志位chol返回使用矩阵的下三角部分计算的下三角因子分解A,使得

L * L = A.

使用一个输出参数调用chol如果矩阵失败A不是肯定的。注意,如果矩阵A不是实对称复埃尔米特,则下三角部分被认为是上三角部分的(复共轭)转置,或反之亦然,给定"lower"标志位

使用两个或多个输出参数调用p符号矩阵是否A是肯定的并且chol不会失败。的零值p表示矩阵A是正定的并且R给出了因子分解。否则p将具有正值。

如果使用三个输出参数矩阵调用A必须是稀疏的,并且将保持稀疏性的行/列排列应用于矩阵A在因子分解之前。那是R是的因子分解A(Q,Q)使得

R * R= Q * A * Q.

保持稀疏性的排列通常以矩阵形式返回。然而,给定可选标志"vector", Q将变为向量,使得

R * R= A(Q, Q).

一般来说,较低的三角因子分解对于稀疏矩阵来说明显更快。

详见: hess, lu, qr, qz, schur, svd, ichol, cholinv, chol2inv, cholupdate, cholinsert, choldelete, cholshift.

广告
 
: Ainv = cholinv (A)

计算对称正定矩阵的逆A使用Cholesky因子分解。

详见: chol, chol2inv, inv.

广告
 
: Ainv = chol2inv (R)

从Cholesky分解中反演一个对称的正定方阵,R.

请注意R应该是具有正对角化元素的上三角矩阵。chol2inv(U)提供inv(R*R)但比使用快得多inv.

详见: chol, cholinv, inv.

广告
 
: [R1, info] = cholupdate (R, u, op)

更新或降低Cholesky因子分解的日期。

给定一个上三角矩阵R和列向量u,尝试确定另一个上三角矩阵R1使得

如果op"-", info设置为

如果info如果不存在,则在情况1和情况2中会打印错误消息。

详见: chol, cholinsert, choldelete, cholshift.

广告
 
: R1 = cholinsert (R, j, u)
: [R1, info] = cholinsert (R, j, u)

更新给定行或列的Cholesky因子分解以插入原始因子矩阵。

给定实对称或复埃尔米特正定矩阵的Cholesky因子分解A= R’*R , R上三角,返回的Cholesky因子分解A1,其中A1(p,p)=A ,A1(:,j)=A1(j,:)'=u andp=[1:j-1,j+1:n+1] .u(j) 应该是积极的。

在返回时,info设置为

如果info如果不存在,则在情况1和情况2中会打印错误消息。

详见: chol, cholupdate, choldelete, cholshift.

广告
 
: R1 = choldelete (R, j)

更新Cholesky因子分解,给定要从原始因子矩阵中删除的行或列。

给定实对称或复埃尔米特正定矩阵的Cholesky因子分解A= R’*R , R上三角,返回A(p,p)的Cholesky因子分解 ,其中p=[1:j-1,j+1:n+1] .

详见: chol, cholupdate, cholinsert, cholshift.

广告
 
: R1 = cholshift (R, i, j)

更新Cholesky因子分解,给定要在原始因子矩阵中移动的列的范围。

给定实对称或复埃尔米特正定矩阵的Cholesky因子分解A= R’*R , R上三角,返回的Cholesky因子分解A(p,p) ,其中p是排列
p = [1:i-1, shift(i:j, 1), j+1:n]如果i< j 

p = [1:j-1, shift(j:i,-1), i+1:n]如果j< i .

详见: chol, cholupdate, cholinsert, choldelete.

广告
 
: H = hess (A)
: [P, H] = hess (A)

计算矩阵的Hessenberg分解A.

Hessenberg分解是P * H * P = A这里的P是一个平方次矩阵(P * P,使用复合共轭四移位)和H是上海森堡(H(i,j)=0(对于所有i>j+1).

Hessenberg分解通常被用作单位值计算的第一步,但也有其他应用(见Golub、Nash和Van Loan,IEEE Transactions on Automatic Control,1979)。

详见: eig, chol, lu, qr, qz, schur, svd.

广告
 
: [L, U] = lu (A)
: [L, U, P] = lu (A)
: [L, U, P, Q] = lu (S)
: [L, U, P, Q, R] = lu (S)
: […] = lu (S, thresh)
: y = lu (…)
: […] = lu (…, "vector")

计算的LU分解A.

如果A已满,则从中执行子程序LAPACK 使用,如果A那么是稀疏的UMFPACK使用。

根据可选的返回值,结果以排列的形式返回P例如,给定矩阵A= [1, 2; 3, 4],

[L, U, P]=lu(A)

退货

L =

  1.00000  0.00000
  0.33333  1.00000

U =

  3.00000  4.00000
  0.00000  0.66667

P =

  0  1
  1  0

矩阵不需要是正方形的。

当用两个或三个输出自变量和稀疏输入矩阵调用时,lu不尝试执行保持稀疏性的列排列。使用第四个输出参数调用,即保持稀疏性的列转换Q返回,从而P * A * Q= L * U。这是首选调用的方式lu具有稀疏输入矩阵。

用第五输出自变量和稀疏输入矩阵调用,lu尝试使用比例因子R在输入矩阵上,使得P* (R\ A) * Q= L * U这通常导致更稀疏和更稳定的因子分解。

一个额外的输入参数thresh可以给出定义枢转阈值的。thresh可以是标量,在这种情况下,它定义UMFPACK对称和非对称情况下的枢轴公差。如果thresh是一个2元素向量,那么第一个元素定义了不对称的枢转公差UMFPACK第二种是对称策略。默认情况下,从定义的值spparms使用([0.1,0.001])。

给定字符串参数"vector", lu返回的值PQ作为向量值,A(P,:) = L * UR(P,:)* A(:,Q) = L * U.

使用两个输出参数,返回上三角矩阵和下三角矩阵的排列形式,使得A= L * U。带有一个输出参数y,然后从返回的矩阵LAPACK 返回子程序。如果输入矩阵是稀疏的,那么矩阵L嵌入到U以给出类似于完整大小写的返回值。对于满秩矩阵和稀疏矩阵,lu丢失术语信息。

详见: luupdate, ilu, chol, hess, qr, qz, schur, svd.

广告
 
: [L, U] = luupdate (L, U, x, y)
: [L, U, P] = luupdate (L, U, P, x, y)

给定实矩阵或复矩阵的LU因子分解A= L*U , L下部单元梯形和U上梯形,返回的LU分解A+ x*y.’ 这里的xy列向量(秩1更新)或列数相等的矩阵(秩k更新)。

可选地,可以通过提供行排列(枢轴)矩阵来使用行枢轴更新P; 在这种情况下,将返回更新的置换矩阵。请注意,如果L, U, P是一个枢轴LU因子分解,从lu:

[L, U, P]=lu(A);

则的因子分解A+x*y.可以作为

[L1, U1]=lu(L, U, P*x, y)

[L1, U1, P1]=lu(L, U, P, x, y)

第一种形式使用非点动算法,速度更快,但稳定性较差。第二种形式使用了一种较慢的数据透视算法,这更具稳定性。

矩阵情况作为秩1更新的序列来完成;因此,对于足够大的k,从头开始重新计算重构将更快、更准确。

详见: lu, cholupdate, qrupdate.

广告
 
: [Q, R] = qr (A)
: [Q, R, P] = qr (A)
: X = qr (A) # non-sparse A
: R = qr (A) # sparse A
: X = qr (A, B) # sparse A
: [C, R] = qr (A, B)
: […] = qr (…, 0)
: […] = qr (…, "econ")
: […] = qr (…, "vector")
: […] = qr (…, "matrix")

计算的QR因子分解A,使用标准LAPACK 子程序。

QR因子分解是

Q * R= A

这里的Q是正交矩阵,并且R是上三角矩阵。

例如,给定矩阵A= [1, 2; 3, 4],

[Q, R]=qr(A)

退货

Q=  -0.31623  -0.94868  -0.94868   0.31623R=  -3.16228  -4.42719   0.00000  -0.63246

相乘后返回原始矩阵

Q * R⇒     1.0000   2.0000     3.0000   4.0000

如果只指定一个返回值,则为R如果A稀疏,或者X,使得R=triu(X)如果A已满。(注意:与大多数命令不同,当指定多个值时,单个返回值不是第一个返回值。)

如果第三个输出P被指定,则qr计算置换QR因子分解

Q * R= A * P

这里的Q是正交矩阵,R是上三角矩阵,并且P是置换矩阵。

如果A是稠密的,置换QR因子分解具有的对角项的附加性质R按递减幅度排序。换句话说,abs(diag(R))将按从大到小的顺序排列。

如果A是稀疏的,P是列的填充减少排序A。在这种情况下,的对角线条目R不是按大小递减排序的。

例如,给定矩阵A= [1, 2; 3, 4],

[Q, R, P]=qr(A)

退货

Q=  -0.44721  -0.89443  -0.89443   0.44721R=  -4.47214  -3.13050   0.00000   0.44721P=   0  1   1  0

如果输入矩阵A是稀疏的,稀疏的QR因子分解是通过使用SPQRCXsparse(例如,如果SPQR不可用)。因为矩阵Q通常是一个完整的矩阵,建议只指定一个返回值R。在这种情况下,计算避免了的构造Q并返回稀疏R使得R=chol(A * A).

如果A是稠密的,一个额外的矩阵B并指定两个返回值,然后qr退货C这里的C= Q * B。这允许的最小二乘近似A\ B计算为

[C, R]=qr(A, B)X= R\ C

如果A是稀疏MxN矩阵和附加矩阵B如果已应用,则可能有一个或两个返回值。如果一个返回值X被指定并且M<N,则X是的最小2-范数解A\ B 如果M>=N,X是的最小二乘逼近A\ B 如果指定两个返回值,CR与稠密情况下的含义相同(C密度大R稀疏)。应该首选带有一个返回参数的版本,因为它使用较少的内存,并且可以更好地处理缺k矩阵。

如果最后一个参数是字符串"vector"然后P是变异向量(的列A)而不是排列矩阵。在这种情况下,定义关系是:

Q * R= A(:, P)

然而,默认情况是返回一个排列矩阵,这可以通过使用的最后一个参数来明确指定"matrix".

如果最后一个参数是标量0或字符串"econ",返回经济因子。如果原始矩阵A具有大小MxN和M>N,则经济因子分解将仅计算中的NrowsR和中的N列Q并省略中的零R.如果M≤N,则经济因子分解和标准因子分解之间没有区别。当计算经济因子分解和Aisdense,输出P总是向量而不是矩阵。如果A稀疏,输出P是一个稀疏排列矩阵。

背景:QR因子分解在最小二乘问题的求解中有应用

min norm (A*x - b)

对于超定方程组(即。,A是高而薄的矩阵)。

置换QR因子分解[Q, R, P]=qr(A)允许构造的正交基span (A).

详见: chol, hess, lu, qz, schur, svd, qrupdate, qrinsert, qrdelete, qrshift.

广告
 
: [Q1, R1] = qrupdate (Q, R, u, v)

在给定更新向量或矩阵的情况下更新QR因子分解。

给定实矩阵或复矩阵的QR因子分解A= Q*R , Q酉和R上梯形,返回的QR因子分解A+ u*v 这里的uv是列向量(秩1更新)或具有相等列数的矩阵(秩k更新)。请注意,后一种情况是作为一系列的rank-1更新完成的;因此,对于足够大的k,从头开始重新计算因子分解将更快、更准确。

所提供的QR因子分解可以是完全的(Q是平方)或经济的(R是平方)。

详见: qr, qrinsert, qrdelete, qrshift.

广告
 
: [Q1, R1] = qrinsert (Q, R, j, x, orient)

更新给定行或列的QR因子分解以插入原始因子矩阵。

给定实矩阵或复矩阵的QR因子分解A= Q*R , Q酉和R上梯形,返回[A(:,1:j-1)xA(:,j:n)]的QR因子分解 这里的u是要插入的列向量A如果orient"col"),或[A(1:j-1,:);x;A(:,j:n)]的QR因子分解 这里的x是要插入的行向量A如果orient"row").

的默认值orient"col"如果orient"col", u可以是矩阵,并且j矩阵QR因子分解的一个索引向量B使得B(:,j) 给予u和B(:,j) = [] 给予A注意,后一种情况是作为k个插入的序列来完成的;因此,对于足够大的k,从头开始计算因子分解将更快、更准确。

如果orient"col",所提供的QR因子分解可以是满的(Q是平方)或节省的(R是平方)。

如果orient"row",需要完全因子分解。

详见: qr, qrupdate, qrdelete, qrshift.

广告
 
: [Q1, R1] = qrdelete (Q, R, j, orient)

更新给定行或列的QR因子分解以从原始因子矩阵中删除。

给定实矩阵或复矩阵的QR因子分解A= Q*R , Q酉和R上梯形,返回[A(:,1:j-1),U,A(:,j:n)]的QR因子分解 这里的u是要插入的列向量A如果orient"col"),或[A(1:j-1,:);X;A(:,j:n)]的QR因子分解 这里的x是一排orient"row").的默认值orient"col".

如果orient"col", j可以是导致矩阵的QR因子分解的索引向量B使得A(:,j) = [] 给予B请注意,后一种情况是作为k个删除的序列来完成的;因此,对于足够大的k,从头开始重新计算因子分解将更快、更准确。

如果orient"col",所提供的QR因子分解可以是满的(Q是平方)或节省的(R是平方)。

如果orient"row",需要完全因子分解。

详见: qr, qrupdate, qrinsert, qrshift.

广告
 
: [Q1, R1] = qrshift (Q, R, i, j)

更新QR因子分解,给定要在原始因子矩阵中移动的列的范围。

给定实矩阵或复矩阵的QR因子分解A= Q*R , Q酉和R上梯形,返回的QR分解A</p> ,其中p 是排列
p = [1:i-1, shift(i:j, 1), j+1:n]如果i< j 

p = [1:j-1, shift(j:i,-1), i+1:n]如果j< i .

详见: qr, qrupdate, qrinsert, qrdelete.

广告
 
: [AA, BB, Q, Z, V, W] = qz (A, B)
: [AA, BB, Q, Z, V, W] = qz (A, B, opt)

计算广义特征值问题的QZ分解。

广义特征值问题定义为

A x=lambdaB x

函数有两种调用形式:

  1. [AA, BB, Q, Z, V, W, lambda]=qz(A, B)

    计算复QZ分解、广义特征向量和广义特征值。

    
    AA= Q * A * Z, BB= Q * B * Z
    A * V*diag(diag(BB)) = B * V*diag(diag(AA))diag(diag(BB)) * W * A=diag(diag(AA)) * W * B
    
    

    具有AABB上部三角形,以及QZ单一的。矩阵VW分别包含右广义特征向量和左广义特征向量。

  2. [AA, BB, Z{, lambda}]=qz(A, B, opt)

    这个opt自变量必须等于"real""complex"。如果等于"complex",则此调用形式等效于第一个只有两个inputarguments的调用形式。

    如果opt等于"real",则计算出真实的QZ分解。特别地,AA仅保证是对角线上具有1乘1和2乘2块的准上三角矩阵,并且QZ是正交的。只有当AA是上三角的(即,当所有广义本征值都是实数时,在这种情况下实数和复数QZ重合)。

注意qz执行排列平衡,但不执行缩放(详见balance),这可能导致比eig。选择输出参数的顺序是为了与兼容MATLAB.

详见: eig, gsvd, balance, chol, hess, lu, qr, qzhess, schur.

广告
 
: [aa, bb, q, z] = qzhess (A, B)

计算矩阵笔的Hessenberg三角分解(A, B),返回aa= q * A * z,bb= q * B * z具有qz正交的。

例如

[aa, bb, q, z] = qzhess ([1, 2; 3, 4], [5, 6; 7, 8])
  ⇒ aa =
      -3.02244  -4.41741
       0.92998   0.69749
  ⇒ bb =
      -8.60233  -9.99730
       0.00000  -0.23250
  ⇒ q =
      -0.58124  -0.81373
      -0.81373   0.58124
  ⇒ z =
     Diagonal Matrix
       1   0
       0   1

Hessenberg三角分解是Moler和Stewart的QZ分解算法的第一步。

算法取自Golub和Van Loan,矩阵计算,第2版.

详见: lu, chol, hess, qr, qz, schur, svd.

广告
 
: S = schur (A)
: S = schur (A, "real")
: S = schur (A, "complex")
: S = schur (A, opt)
: [U, S] = schur (…)

计算的Schur分解A.

正方阵的Schur分解A定义为

S= U * A * U

这里的U是酉矩阵(U* U是身份)和S是上三角矩阵。的特征值AS)的对角线元素S.如果矩阵A是真实的,那么计算真实的Schur分解,其中矩阵U是正交的,并且S是块的上三角矩阵,块的大小最大2 x 2沿着对角线。

实数矩阵的默认值是实数Schur分解。可以通过传递标志来强制进行复杂分解"complex".

根据的值,特征值可选地沿着对角线排序opt:

opt

将具有负实部的特征值移动到的前导块S.助记符:"a"对于代数Riccati方程,这种排序是有用的。

广告
optd

将幅度小于1的特征值移动到的前导块S.助记符:"d"对于离散代数Riccati方程,这种排序是有用的。

广告
optu

无序。没有特定的特征值排序(默认)。

广告

领先的k的列U始终跨越A-不变量空间对应于k的前导特征值S.

详见: rsf2csf, ordschur, ordeig, lu, chol, hess, qr, qz, svd, eig.

广告
 
: [U, T] = rsf2csf (UR, TR)

转换实的上拟三角形Schur形式TR到复上三角Schur形式T.

请注意,以下关系成立:

UR * TR * UR = U * T * UU * U是单位矩阵I。

还要注意的是UT不是唯一的。

详见: schur.

广告
 
: [UR, SR] = ordschur (U, S, select)

重排序实Schur因子分解(U,S)使用获得schur函数,使得所选择的特征值出现在拟三角Schur矩阵的左上对角线块中。

逻辑向量select指定所选特征值沿S的对角线。

例如,给定矩阵A= [1, 2; 3, 4],及其Schurdecomposition

[U, S]=舒尔(A)

返回

U=  -0.82456  -0.56577   0.56577  -0.82456S=  -0.37228  -1.00000   0.00000   5.37228

可以对分解进行重新排序,使正本征值位于左上角,方法如下:

[U, S]=单词搅拌器(U, S, [0,1])

详见: schur, ordeig, ordqz.

广告
 
: [AR, BR, QR, ZR] = ordqz (AA, BB, Q, Z, keyword)
: [AR, BR, QR, ZR] = ordqz (AA, BB, Q, Z, select)

重新排序广义特征值问题的QZ分解。

广义特征值问题定义为

A x=lambdaB x

它的广义Schur分解是使用qz算法:

[AA, BB, Q, Z]=qz(A, B)

这里的AA, BB, QZ完成


AA= Q * A * Z, BB= Q * B * Z

这个ordqz函数计算酉变换QRZR使得特征值在的对角线上的阶AABB已更改。得到的重新排序矩阵ARBR完成:


AR= QR * A * ZR, BR= QR * B * ZR

函数可以用调用keyword选择的左上角块中的特征值的自变量ARBR以以下方式:

"S", "udi"

small:前导块具有所有|lambda1.

广告
"B", "udo"

big:领先区块拥有所有|lambda| ≥ 1

广告
"-", "lhp"

负实部:前导块在开左半平面上具有所有特征值

广告
"+", "rhp"

非负实部:前导块在闭右半平面上具有所有特征值

广告

如果一个逻辑向量select而不是关键字ordqz函数对所有特征值进行重新排序k到左侧块select(k)是真的。

注意:关键字与中的关键字兼容qr.

详见: eig, ordeig, qz, schur, ordschur.

广告
 
: lambda = ordeig (A)
: lambda = ordeig (A, B)

按拟三角矩阵在矩阵中的出现顺序返回其特征值A.

拟三角矩阵A通常是曲面化的结果。如果使用第二个输入调用B则该对的广义特征值A, B按矩阵出现的顺序返回A-lambda*B。这对A, B通常是QZ分解的结果。

详见: ordschur, ordqz, eig, schur, qz.

广告
 
: angle = subspace (A, B)

确定矩数组扫描的两个子空间之间的最大主角AB.

广告
 
: s = svd (A)
: [U, S, V] = svd (A)
: [U, S, V] = svd (A, "econ")
: [U, S, V] = svd (A, 0)

计算的奇异值分解A.

奇异值分解从以下关系定义

A = U*S*V'

函数svd通常只返回奇异值的向量。当使用三个返回值调用时,它计算U, SV例如

svd (hilb (3))

退货

ans =

  1.4083189
  0.1223271
  0.0026873

[u, s, v] = svd (hilb (3))

退货

u =

  -0.82704   0.54745   0.12766
  -0.45986  -0.52829  -0.71375
  -0.32330  -0.64901   0.68867

s =

  1.40832  0.00000  0.00000
  0.00000  0.12233  0.00000
  0.00000  0.00000  0.00269

v =

  -0.82704   0.54745   0.12766
  -0.45986  -0.52829  -0.71375
  -0.32330  -0.64901   0.68867

当给出不为0的第二自变量时,svd返回经济大小的组合,消除不必要的行或列UV.

如果第二个参数恰好为0,则分解的选择基于矩阵A如果A行数多于列数,则返回经济大小的分解,否则计算出规则分解。

算法注释:当计算全分解(除了奇异值之外还有左奇异矩阵和右奇异矩阵)时,可以选择中的两个子程序LAPACK 。Octave使用的默认子程序是gesvd。另一种选择是gesdd其速度快5倍,但可能使用更多的内存并且对于某些输入矩阵可能不准确。还有第三个程序gejsv,适用于在极端规模下获得更好的精度。详见的文档svd_driver有关选择驾驶员的更多信息。

详见: svd_driver, svds, eig, lu, chol, hess, qr, qz.

广告
 
: val = svd_driver ()
: old_val = svd_driver (new_val)
: old_val = svd_driver (new_val, "local")

查询或设置基础LAPACK 使用的驱动程序svd.

目前公认的价值是"gesdd", "gesvd""gejsv"。默认为"gesvd".

当从具有的函数内部调用时"local"参数,则该变量会为函数及其调用的任何子程序在本地进行更改。退出函数时将恢复原始变量值。

算法注释:LAPACK 库子程序gesvdgesdd只有在计算全奇异值分解(左奇异矩阵和右奇异矩阵以及奇异值)时才不同。当仅计算奇异值时,以下讨论不相关。

更新的gesdd子程序是基于一个Divide and Conquer算法,该算法比其他算法快5倍gesvd,它是基于QRFactorion的。然而,新算法可以使用明显更多的内存。对于MxN输入矩阵,内存使用是O(min(M,N)^2)阶,而替代是O(max(M,N))阶。

例行程序gejsv使用预处理的Jacobi SVD算法。不像gesvdgesdd在里面gejsv,在某些极端情况下,不存在可能污染准确性的双向校准步骤。而且gejsv已知在某种意义上是最佳准确的。但是,速度较慢(核心为单线程),并使用更多内存(O(min(M,N)^2+M+N))。

除了速度和内存问题之外,有些情况下,一些输入矩阵没有通过gesdd。详见当前活动的bughttps://savannah.gnu.org/bugs/?55564。在新版本的中解决这些准确性问题之前LAPACK 库,Octave中的默认驱动程序已设置为"gesvd".

详见: svd.

广告
 
: [housv, beta, zer] = housh (x, j, z)

计算豪斯霍尔德反射向量housv以反映x作为身份的第j列。,

(I - beta*housv*housv')x =  norm (x)*e(j) if x(j) < 0,
(I - beta*housv*housv')x = -norm (x)*e(j) if x(j) >= 0

输入

x

向量

广告
j

索引到向量

广告
z

零的阈值(通常应该是数字0)

广告

输出(见Golub和Van Loan):

beta

如果beta=0,则不需要应用反射(zer设置为0)

广告
housv

豪斯霍尔德向量

广告
广告
 
: [u, h, nu] = krylov (A, V, k, eps1, pflg)

构造正交基u块Krylov子空间的。

块Krylov子空间具有以下形式:

[v a*v a^2*v ... a^(k+1)*v]

该结构体采用Householder反射,以防止正交性的损失。

如果V是一个向量,那么h包含Hessenberg矩阵,因此a*u == u*h+rk*ek',其中rk = a*u(:,k)-u*h(:,k)ek'是向量[0, 0, …, 1]的长度k否则h毫无意义。

如果V是一个向量,并且k大于length (A) - 1然后h包含Hessenberg矩阵,使得a*u == u*h.

的值nu是Krylov子空间跨度的维数(基于eps1).

如果b是一个向量,并且k大于m-1然后h包含的Hessenberg分解A.

可选参数eps1是零的阈值。默认值为1e-12。

如果可选参数pflg为非零时,行旋转用于改进数值行为。默认值为0。

参考文献:A.Hodel,P.Misra,大型稀疏系统Krylov子空间计算中的局部旋转,第42届IEEE决策与控制会议论文集,2003年12月。

广告

版权所有 © 2024-2025 Octave中文网

ICP备案/许可证号:黑ICP备2024030411号-2