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*DD
和BB= CC*B*DD
,其中AA和BB具有大小大致相同的非零元素,并且CC和DD是置换对角矩阵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的下带宽和上带宽.
矩阵的下/上带宽是具有非零项的下对角线/上对角线的数量。
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。当数字较大时,这表示较小的变化(如下溢或舍入误差)将在结果输出中返回较大的变化。在这种情况下,数值计算的求解结果不太可能是准确的。
c =
condeig (a)
¶[v, lambda, c] =
condeig (a)
¶计算矩阵相对于特征值的条件数。
条件数是左右特征向量之间夹角余弦的倒数;大的值表明矩阵具有多个不同的特征值。
输入a必须是一个数字方阵。
输出为:
[v, lambda]=eig(a)
.
[v, lambda]=eig(a)
.
用例
a = [1, 2; 3, 4]; c = condeig (a) ⇒ c = 1.0150 1.0150
d =
det (A)
¶[d, rcond] =
det (A)
¶计算A的行列式.
如果指定rcond,则也会返回倒数条件数的估计值。
编程说明:子程序来自LAPACK 用于完整矩阵和代码UMFPACK用于稀疏矩阵。
行列式不应用于检查矩阵的奇异性。为此,请使用任何条件编号函数: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算法。(无论何时使用A或B不是对称的)
无标志 | chol | qz | |
---|---|---|---|
两者都是对称的 | chol |
chol |
qz |
至少有一个不是对称的 | qz |
qz |
qz |
返回的特征值eig
没有订购。
G =
givens (x, y)
¶[c, s] =
givens (x, y)
¶计算Givens旋转矩阵G.
Givens矩阵是一个2乘2的正交矩阵
G = [ c , s -s', c]
使得
G * [x; y] = [*; 0]
具有x和y标量。
如果指定了两个输出参数,则返回因子c和s而不是Givens旋转矩阵。
例如
givens (1, 1) ⇒ 0.70711 0.70711 -0.70711 0.70711
注:Givens矩阵表示二维平面的逆时针旋转,可用于在完全分解之前将零引入矩阵。
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子程序。如果矩阵A和B是二者都那么rankdeficientLAPACK 将返回不正确的因式分解。程序员应该避免这种组合。
详见: svd.
[G, y] =
planerot (x)
¶计算两元素列向量的Givens旋转矩阵x.
Givens矩阵是一个2乘2的正交矩阵
G = [ c , s -s', c]
使得
y = G * [x(1); x(2)] ≡ [*; 0]
注:Givens矩阵表示二维平面的逆时针旋转,可用于在完全分解之前将零引入矩阵。
x =
inv (A)
¶[x, rcond] =
inv (A)
¶[…] =
inverse (…)
¶计算平方矩阵的逆A.
如果指定,返回倒数条件数的估计值,否则如果倒数条件数很小,则警告存在病态矩阵。
一般来说,最好避免直接计算矩阵的逆。例如,求解方程组既更快又更准确(A*x= b具有y= A\ b
而不是y=发票(A) * b
.
如果用稀疏矩阵调用,那么通常x将是需要显著更多存储的全矩阵。如果可能的话,避免形成天冬氨酸基质的反序。
编程说明:相反的
是的别名inv
并且可以互换使用。
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是上三角矩阵
A是上海森堡(目前没有区别)
A是对称的或复杂的埃尔米特人(目前没有区别)
A是正定的
A一般为矩形(目前没有区别)
解决A'*x=b
如果为true而不是A*x=b
可选的第二个输出R是的逆条件数A(如果矩阵是奇异的,则为零)。
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高于它。如果nl和nu为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是矩阵(或稀疏矩阵):
1
1-范数,的绝对值的最大列和A.
2
的最大奇异值A.
Inf
或inf
¶
无穷范数,的绝对值的最大行和A.
fro
¶
的Frobenius范数A,sqrt(sum(diag(A * A)))
.
p1.
¶
最大限度范数(A*x,p)
使得范数(x,p)==1
如果A是向量或标量:
Inf
或inf
最大(abs(A))
.
-Inf
最小值(绝对值(A))
.
fro
的Frobenius范数A, sqrt(sumsq(abs(A))
.
汉明范数——非零元素的数量。
p1.
的p-范数A, (总和(abs(A) .^ p1.p)
.
p1.
如上所定义的p-伪范数。
如果opt是值行
,将每一行视为一个向量,并计算其范数。结果将作为列向量返回。类似地,如果opt是列
或列
然后计算每列的范数并返回一个行向量。
Z =
null (A)
¶Z =
null (A, tol)
¶返回正交基Z的空空间的A.
空空间的维度Z取为的奇异值的个数A不大于tol。如果参数tol缺少,则计算为
max (size (A)) * max (svd (A, 0)) * eps
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
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,:)
c =
rcond (A)
¶计算从返回的倒数条件数的1-范数估计LAPACK .
如果矩阵条件良好,那么c将接近1,如果矩阵条件较差,则将接近0。
矩阵A不得稀疏。如果矩阵是稀疏的,那么condest(A)
或rcond(满(A))
应该改为使用。
r =
rref (A)
¶r =
rref (A, tol)
¶[r, k] =
rref (…)
¶返回的缩减行梯队形式A.
tol默认为eps*max(尺寸(A标准A,inf)
.
可选的返回参数k包含“绑定变量”的向量,这些列已经进行了消除。
版权所有 © 2024 Octave中文网
ICP备案/许可证号:黑ICP备2024030411号