18.2基本矩阵函数

 
: AA = balance (A)
: AA = balance (A, opt)
: [DD, AA] = balance (A, opt)
: [D, P, AA] = balance (A, opt)
: [CC, DD, AA, BB] = balance (A, B, opt)

平衡矩阵A以减少未来计算中的数值误差。

计算AA = DD \ A * DD,这里的AA 是一个矩阵,其行规范形和列规范形的大小大致相等,并且DD= P * D,其中P是一个排列矩阵,并且D是二次幂的对角矩阵。这允许在不进行舍入的情况下计算平衡。特征值计算的结果通常通过首先进行平衡来改进。

如果指定两个输出值,balance返回对角线D和排列P分别作为向量。在这种情况下,DD=eye(n)(:,P)*diag(D)这里的n是矩阵大小。

如果指定四个输出值,则计算AA=CC*A*DDBB= CC*B*DD,其中AABB具有大小大致相同的非零元素,并且CCDD是置换对角矩阵asinDD对于代数特征值问题。

特征值平衡参数opt可以是以下其中之一:

noperm, S

仅缩放;不排列。

noscal, P

仅排列;不缩放。

代数特征值平衡使用标准LAPACK 子程序。

广义特征值问题平衡使用Ward算法(SIAM Journal on Scientific and Statistical Computing, 1981)。

 
: bw = bandwidth (A, type)
: [lower, upper] = bandwidth (A)

计算A的带宽.

这个type自变量是字符串下带宽lower和上带宽upper。如果没有type被指定则同时返回A的下带宽和上带宽.

矩阵的下/上带宽是具有非零项的下对角线/上对角线的数量。

详见: isbanded, isdiag, istril, istriu.

 
: c = cond (A)
: c = cond (A, p)

计算矩阵的p-范数条件数。

cond(A)定义为norm(A, p)*norm(inv(A), p).

默认情况下,p=2.这意味着(相对较慢的)奇异值分解。其他可能的选择包括p=1,Inf,"fro"通常更快。为了充分讨论可能p值,详见norm.

当矩阵元素发生微小变化时,矩阵的条件数量化了矩阵转换运算的灵敏度。理想情况下,条件数将接近1。当数字较大时,这表示较小的变化(如下溢或舍入误差)将在结果输出中返回较大的变化。在这种情况下,数值计算的求解结果不太可能是准确的。

详见: condest, rcond, condeig, 标准, svd.

 
: c = condeig (a)
: [v, lambda, c] = condeig (a)

计算矩阵相对于特征值的条件数。

条件数是左右特征向量之间夹角余弦的倒数;大的值表明矩阵具有多个不同的特征值。

输入a必须是一个数字方阵。

输出为:

  • ca的特征值的条件数的向量.
  • va的右特征向量矩阵。结果相当于调用[v, lambda]=eig(a).
  • lambdaa的特征值的对角矩阵。Thesort相当于调用[v, lambda]=eig(a).

用例

a = [1, 2; 3, 4];
c = condeig (a)
  ⇒ c =
       1.0150
       1.0150

详见: eig, cond, balance.

 
: d = det (A)
: [d, rcond] = det (A)

计算A的行列式.

如果指定rcond,则也会返回倒数条件数的估计值。

编程说明:子程序来自LAPACK 用于完整矩阵和代码UMFPACK用于稀疏矩阵。

行列式不应用于检查矩阵的奇异性。为此,请使用任何条件编号函数:cond,condest, rcond.

详见: cond, condest, rcond.

 
: lambda = eig (A)
: lambda = eig (A, B)
: [V, lambda] = eig (A)
: [V, lambda] = eig (A, B)
: [V, lambda, W] = eig (A)
: [V, lambda, W] = eig (A, B)
: […] = eig (A, balanceOption)
: […] = eig (A, B, algorithm)
: […] = eig (…, eigvalOption)

计算特征值(lambda)以及可选的右特征向量(五、)以及左特征向量(W)矩阵或矩阵对的。

旗帜balanceOption可以是以下其中之一:

balance默认

正在进行初步平衡。

失去平衡

禁用初步平衡。

旗帜eigvalOption可以是以下其中之一:

矩阵

返回对角矩阵中的特征值。(如果需要2或3个输出,则为默认值)

向量

返回列向量中的特征值。(如果仅指定1个输出。,lambda=eig(A))

旗帜算法可以是以下其中之一:

chol

使用B的Cholesky因子分解。(默认情况下A是对称的(埃尔米特)并且B对称(埃尔米特)正定)

qz

使用QZ算法。(无论何时使用AB不是对称的)

无标志 chol qz
两者都是对称的 chol chol qz
至少有一个不是对称的 qz qz qz

返回的特征值eig没有订购。

详见: eigs, svd.

 
: G = givens (x, y)
: [c, s] = givens (x, y)

计算Givens旋转矩阵G.

Givens矩阵是一个2乘2的正交矩阵

G = [ c , s
     -s', c]

使得

G * [x; y] = [*; 0]

具有xy标量。

如果指定了两个输出参数,则返回因子cs而不是Givens旋转矩阵。

例如

givens (1, 1)
   ⇒   0.70711   0.70711
       -0.70711   0.70711

注:Givens矩阵表示二维平面的逆时针旋转,可用于在完全分解之前将零引入矩阵。

详见: planerot, qr.

 
: S = gsvd (A, B)
: [U, V, X, C, S] = gsvd (A, B)
: [U, V, X, C, S] = gsvd (A, B, 0)

计算的广义奇异值分解(A, B).

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

A = U*C*X'
B = V*S*X'
C'*C + S'*S = eye (columns (A))

函数广义奇异值分解通常只返回广义奇异值的向量sqrt(diag(C'*C)./diag(S'*S))如果要求五个返回值,它还计算U、V、X和C。

如果存在可选的第三输入,广义奇异值分解构造“经济规模”分解,其中的列数U, 五、和的行数C, S小于或等于的列数A。此参数尚未实施。

编程注意:代码是对应的软件包器LAPACK dggsvd和zggsvd子程序。如果矩阵AB二者都那么rankdeficientLAPACK 将返回不正确的因式分解。程序员应该避免这种组合。

详见: svd.

 
: [G, y] = planerot (x)

计算两元素列向量的Givens旋转矩阵x.

Givens矩阵是一个2乘2的正交矩阵

G = [ c , s
     -s', c]

使得

y = G * [x(1); x(2)] ≡ [*; 0]

注:Givens矩阵表示二维平面的逆时针旋转,可用于在完全分解之前将零引入矩阵。

详见: givens, qr.

 
: x = inv (A)
: [x, rcond] = inv (A)
: […] = inverse (…)

计算平方矩阵的逆A.

如果指定,返回倒数条件数的估计值,否则如果倒数条件数很小,则警告存在病态矩阵。

一般来说,最好避免直接计算矩阵的逆。例如,求解方程组既更快又更准确(A*x= b具有y= A\ b而不是y=发票(A) * b.

如果用稀疏矩阵调用,那么通常x将是需要显著更多存储的全矩阵。如果可能的话,避免形成天冬氨酸基质的反序。

编程说明:相反的是的别名inv并且可以互换使用。

详见: 右除, rdivide, pinv.

 
: x = linsolve (A, b)
: x = linsolve (A, b, opts)
: [x, R] = linsolve (…)

求解线性系统A*x=b.

在没有参数的情况下,此函数等效于左除法运算符(x=A\b)或矩阵左除法函数(x=mldivide(A,b)).

Octave通常考察矩阵的性质A并选择与矩阵最匹配的解算器。通过传递结构体opts符号解法你可以直接通知Octave矩阵A在这种情况下,Octave将跳过矩阵检查,直接进行求解线性系统。

警告如果矩阵A中没有列出的属性opts结构体,则结果将不准确,并且将给出无警告。当有疑问时,让Octave检查矩阵并选择合适的解算器,因为这一步骤只需很少的时间,并且结果会被缓存,因此每个线性系统只执行一次。

可能的opts字段(将值设置为true/false):

书信电报

A是下三角矩阵

美国犹他州

A是上三角矩阵

UHESS

A是上海森堡(目前没有区别)

SYM

A是对称的或复杂的埃尔米特人(目前没有区别)

POSDEF

A是正定的

RECT

A一般为矩形(目前没有区别)

TRANSA

解决A'*x=b如果为true而不是A*x=b

可选的第二个输出R是的逆条件数A(如果矩阵是奇异的,则为零)。

详见: mldivide, 矩阵类型, rcond.

 
: type = matrix_type (A)
: type = matrix_type (A, "nocompute")
: A = matrix_type (A, type)
: A = matrix_type (A, "upper", perm)
: A = matrix_type (A, "lower", perm)
: A = matrix_type (A, "banded", nl, nu)

识别矩阵类型或将矩阵符号为特定类型。

这允许更快速地求解线性方程,包括A要执行。

使用单个参数调用,matrix_type返回矩阵的类型并将其缓存以备将来使用。

使用多个参数调用,matrix_type允许定义矩阵的类型。

如果参数不计算如果给定,函数将不会尝试猜测类型,如果它仍然未知。这对于调试非常有用。

可能的矩阵类型取决于矩阵是满的还是稀疏的,可以是以下类型之一

未知的

删除任何以前缓存的矩阵类型,并将类型符号为未知。

满的

将矩阵符号为已满。

正定

可能的完全正定矩阵。

斜线的

对角矩阵。(仅限于稀疏矩阵)

排列对角线

置换对角矩阵。置换不需要具体指示,因为矩阵的结构体明确给出了这一点。(仅限稀疏矩阵)

upper

上部三角形。如果可选的第三个参数烫发假设矩阵是一个置换的上三角矩阵,其置换从向量定义烫发.

lower

下部三角形。如果可选的第三个参数烫发假设矩阵是一个排列的下三角,其排列从向量定义烫发.

带状
带状正定

带大小为的带状矩阵nl对角线以下,以及nu高于它。如果nlnu为1,则矩阵是三对角的,并用专用代码处理。此外,矩阵可以被符号为正定矩阵。(仅限稀疏矩阵)

单数的

假设矩阵是奇异的,并将用最小范数解进行处理。

请注意,矩阵类型将在第一次尝试求解线性方程时自动查找,该线性方程涉及A因此matrix_type仅用于给出矩阵类型的Octave提示。不正确地定义矩阵类型将导致线性方程组解的不正确结果;完全是用户的责任以正确地识别矩阵类型。

此外,正定性检验是对具有实正对角线的埃尔米特矩阵的低成本检验。这并不能保证矩阵是正定的,而只能保证它是一个可能的候选者。当矩阵被因子分解时,首先尝试Cholesky因子分解,如果失败,则用LU因子分解处理矩阵。一旦矩阵被因子分解,matrix_type将返回矩阵的正确分类。

 
: n = norm (A)
: n = norm (A, p)
: n = norm (A, p, opt)

计算矩阵的p范数A.

如果没有给出第二个自变量,p=2使用。

如果A是矩阵(或稀疏矩阵):

p= 1

1-范数,的绝对值的最大列和A.

p= 2

的最大奇异值A.

p= Infinf

无穷范数,的绝对值的最大行和A.

p= fro

的Frobenius范数A,sqrt(sum(diag(A * A))).

另外p, p1.

最大限度范数(A*x,p)使得范数(x,p)==1

如果A是向量或标量:

p= Infinf

最大(abs(A)).

p= -Inf

最小值(绝对值(A)).

p= fro

的Frobenius范数A, sqrt(sumsq(abs(A)).

p= 0

汉明范数——非零元素的数量。

另外p, p1.

的p-范数A, (总和(abs(A) .^ p1.p).

另外p p1.

如上所定义的p-伪范数。

如果opt是值,将每一行视为一个向量,并计算其范数。结果将作为列向量返回。类似地,如果opt然后计算每列的范数并返回一个行向量。

详见: normest, 标准1, 向量范数, cond, svd.

 
: Z = null (A)
: Z = null (A, tol)

返回正交基Z的空空间的A.

空空间的维度Z取为的奇异值的个数A不大于tol。如果参数tol缺少,则计算为

max (size (A)) * max (svd (A, 0)) * eps

详见: orth, svd.

 
: B = orth (A)
: B = orth (A, tol)

返回的范围空间的正交基A.

范围空间的维数取为的奇异值的个数A大于tol。如果参数tol缺失,计算为

max (size (A)) * max (svd (A)) * eps

详见: 无效的.

 
: [y, h] = mgorth (x, v)

正交化给定的列向量x关于包括的列的一组通式向量v使用改进的Gram-Schmidt方法。

在退出时,y是单位向量,使得:

  norm (y) = 1
  v' * y = 0
  x = [v, y]*h'
 
: B = pinv (A)
: B = pinv (A, tol)

返回的Moore Penrose伪逆A.

奇异值小于tol被忽略。

如果省略了第二个参数,则将其视为

tol = max ([rows(x), columns(x)]) * norm (x) * eps

详见: inv, 右除.

 
: k = rank (A)
: k = rank (A, tol)

计算矩阵的秩A,使用奇异值分解。

秩取为的奇异值的个数A大于指定公差tol.如果第二个参数成立,则视为

tol = max (size (A)) * sigma(1) * eps;

这里的eps是机器精度和西格玛(1)的最大奇异值A.

矩阵的秩是线性独立的行或列的数量,等于行和列空间的维数。函数orth可以用于计算列空间的正交基。

用于测试系统A*x= b线性方程是可解的,可以使用

rank (A) == rank ([A b])

在这种情况下,x= A\ b找到特定的解决方案x。一般的解决方案是x加上矩阵的零空间A.函数无效的可以用于计算全空间的基。

用例

A = [1 2 3
     4 5 6
     7 8 9];
rank (A)
  ⇒ 2

在这个例子中,线性独立行的数量只有2,因为最后一行是前两行的线性组合:

A(3,:) == -A(1,:) + 2 * A(2,:)

详见: 无效的, orth, sprand, svd, eps.

 
: c = rcond (A)

计算从返回的倒数条件数的1-范数估计LAPACK .

如果矩阵条件良好,那么c将接近1,如果矩阵条件较差,则将接近0。

矩阵A不得稀疏。如果矩阵是稀疏的,那么condest(A)rcond(满(A))应该改为使用。

详见: cond, condest.

 
: t = trace (A)

计算的轨迹A,沿主对角线的元素之和。

实现非常简单:总和(diag(A)).

详见: eig.

 
: r = rref (A)
: r = rref (A, tol)
: [r, k] = rref (…)

返回的缩减行梯队形式A.

tol默认为eps*max(尺寸(A标准A,inf).

可选的返回参数k包含“绑定变量”的向量,这些列已经进行了消除。

 
: n = vecnorm (A)
: n = vecnorm (A, p)
: n = vecnorm (A, p, dim)

返回数组元素的向量p范数A沿尺寸dim.

向量的p范数定义为

p-norm (A, p) = sum (abs (A) .^ p)) ^ (1/p)

输入p必须是正标量。如果省略,则默认为2(欧几里得范数或距离)。的其他特殊值p为1(曼哈顿范数,绝对值之和)和Inf(最大元素的绝对值)。

输入dim指定函数操作的数组的维度,并且必须是正整数。如果省略,则使用第一个非单例维度。

详见: 标准.


版权所有 © 2024 Octave中文网

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