以下函数返回著名的矩阵形式。
a = gallery ("chow", n) ¶a = gallery ("chow", n, alpha) ¶a = gallery ("chow", n, alpha, delta) ¶创建一个 Chow 矩阵——一个奇异的 Toeplitz 下 Hessenberg 矩阵。
c = gallery ("circul", v) ¶创建一个循环矩阵。
a = gallery ("condex", n) ¶a = gallery ("condex", n, k) ¶a = gallery ("condex", n, k, theta) ¶为条件估计器创建一个"反例"矩阵。
[c, d, e] = gallery ("dorr", n) ¶[c, d, e] = gallery ("dorr", n, theta) ¶a = gallery ("dorr", …) ¶创建一个对角占优、病态的三对角矩阵。
a = gallery ("fiedler", c) ¶创建一个对称的 Fiedler 矩阵。
a = gallery ("forsythe", n) ¶a = gallery ("forsythe", n, alpha) ¶a = gallery ("forsythe", n, alpha, lambda) ¶创建一个 Forsythe 矩阵(一个扰动的 Jordan 块)。
c = gallery ("gcdmat", n) ¶创建最大公约数矩阵。
c 是一个 n×n 的矩阵,其值为坐标的最大公约数,即 c(i,j) 对应 gcd (i, j)。
a = gallery ("gearmat", n) ¶a = gallery ("gearmat", n, i) ¶a = gallery ("gearmat", n, i, j) ¶创建一个 Gear 矩阵。
a = gallery ("integerdata", imax, [M N …], j) ¶a = gallery ("integerdata", imax, M, N, …, j) ¶a = gallery ("integerdata", [imin, imax], [M N …], j) ¶a = gallery ("integerdata", [imin, imax], M, N, …, j) ¶a = gallery ("integerdata", …, "class") ¶创建一个包含范围 [1, imax] 内的随机整数的矩阵。如果给出了 imin,则整数范围在 [imin, imax] 之间。
第二个输入是描述输出大小的维度矩阵。维度也可以作为逗号分隔的参数输入。
输入 j 是范围 [0, 2^32-1] 内的整数索引。对于给定的尺寸输入和 j 索引,输出矩阵的值始终完全相同(可重复性)。
最后一个可选参数确定结果矩阵的类型。class 的可能值:"uint8"、"uint16"、"uint32"、"int8"、"int16"、"int32"、"single"、"double"。默认为 "double"。
a = gallery ("invol", n) ¶创建一个对合矩阵。
u = gallery ("kahan", n) ¶u = gallery ("kahan", n, theta) ¶u = gallery ("kahan", n, theta, pert) ¶创建一个 Kahan 矩阵(上梯形)。
b = gallery ("krylov", a) ¶b = gallery ("krylov", a, x) ¶b = gallery ("krylov", a, x, j) ¶创建一个 Krylov 矩阵。
a = gallery ("lehmer", n) ¶创建一个 Lehmer 矩阵(对称正定)。
t = gallery ("lesp", n) ¶创建一个具有实数值敏感特征值的三对角矩阵。
a = gallery ("lotkin", n) ¶创建一个 Lotkin 矩阵。
a = gallery ("minij", n) ¶创建一个对称正定矩阵 MIN(i,j)。
[a, t] = gallery ("neumann", n) ¶从离散 Neumann 问题创建一个奇异矩阵(稀疏)。
a = gallery ("normaldata", [M N …], j) ¶a = gallery ("normaldata", M, N, …, j) ¶a = gallery ("normaldata", …, "class") ¶创建一个包含标准正态分布随机样本的矩阵(均值 = 0,标准差 = 1)。
第一个输入是描述输出大小的维度矩阵。维度也可以作为逗号分隔的参数输入。
输入 j 是范围 [0, 2^32-1] 内的整数索引。对于给定的尺寸输入和 j 索引,输出矩阵的值始终完全相同(可重复性)。
最后一个可选参数确定结果矩阵的类型。class 的可能值:"single"、"double"。默认为 "double"。
a = gallery ("parter", n) ¶创建一个 Parter 矩阵(奇异值接近 pi 的 Toeplitz 矩阵)。
a = gallery ("poisson", n) ¶从泊松方程创建一个块三对角矩阵(稀疏)。
h = gallery ("randhess", x) ¶创建一个随机的正交上 Hessenberg 矩阵。
a = gallery ("randsvd", n) ¶a = gallery ("randsvd", n, kappa) ¶a = gallery ("randsvd", n, kappa, mode) ¶a = gallery ("randsvd", n, kappa, mode, kl) ¶a = gallery ("randsvd", n, kappa, mode, kl, ku) ¶创建一个具有预设奇异值的随机矩阵。
a = gallery ("redheff", n) ¶创建一个与黎曼猜想相关的 Redheffer 0-1 矩阵。
a = gallery ("riemann", n) ¶创建一个与黎曼猜想相关的矩阵。
a = gallery ("ris", n) ¶创建一个对称的 Hankel 矩阵。
t = gallery ("toeppd", n) ¶t = gallery ("toeppd", n, m) ¶t = gallery ("toeppd", n, m, w) ¶t = gallery ("toeppd", n, m, w, theta) ¶创建一个对称正定的 Toeplitz 矩阵。
p = gallery ("toeppen", n) ¶p = gallery ("toeppen", n, a) ¶p = gallery ("toeppen", n, a, b) ¶p = gallery ("toeppen", n, a, b, c) ¶p = gallery ("toeppen", n, a, b, c, d) ¶p = gallery ("toeppen", n, a, b, c, d, e) ¶创建一个五对角 Toeplitz 矩阵(稀疏)。
a = gallery ("tridiag", x, y, z) ¶a = gallery ("tridiag", n) ¶a = gallery ("tridiag", n, c, d, e) ¶创建一个三对角矩阵(稀疏)。
t = gallery ("triw", n) ¶t = gallery ("triw", n, alpha) ¶t = gallery ("triw", n, alpha, k) ¶创建一个由 Kahan、Golub 和 Wilkinson 讨论过的上三角矩阵。
a = gallery ("uniformdata", [M N …], j) ¶a = gallery ("uniformdata", M, N, …, j) ¶a = gallery ("uniformdata", …, "class") ¶创建一个包含标准均匀分布随机样本的矩阵(范围 [0,1])。
第一个输入是描述输出大小的维度矩阵。维度也可以作为逗号分隔的参数输入。
输入 j 是范围 [0, 2^32-1] 内的整数索引。对于给定的尺寸输入和 j 索引,输出矩阵的值始终完全相同(可重复性)。
最后一个可选参数确定结果矩阵的类型。class 的可能值:"single"、"double"。默认为 "double"。
[a, b] = gallery ("wilk", n) ¶创建由 Wilkinson 设计/讨论的各种特定矩阵。
h = hadamard (n) ¶构造一个 n×n 的 Hadamard 矩阵 (Hn)。
尺寸 n 必须为 2^k * p 的形式,其中 p 是 1、12、20 或 28 之一。返回的矩阵是归一化的,即 Hn(:,1) == 1 且 Hn(1,:) == 1。
Hadamard 矩阵的一些性质:
kron (Hm, Hn) 是一个大小为 m×n 的 Hadamard 矩阵。Hn * Hn' = n * eye (n)。det (A) <= abs (det (Hn)) 对于所有 abs (A(i, j)) <= 1 的 A 成立。h = hankel (c) ¶h = hankel (c, r) ¶返回从第一列 c 和(可选)最后一行 r 构造的 Hankel 矩阵。
如果 c 的最后一个元素与 r 的第一个元素不同,则使用 c 的最后一个元素。如果省略第二个参数,则假设其为一个与 c 大小相同的零向量。
由 m 向量 c 和 n 向量 r 形成的 Hankel 矩阵具有以下元素:
H(i,j) = c(i+j-1), i+j-1 <= m; H(i,j) = r(i+j-m), otherwise
h = hilb (n) ¶返回 n 阶 Hilbert 矩阵。
Hilbert 矩阵的 i,j 元素定义为
H(i, j) = 1 / (i + j - 1)
Hilbert 矩阵接近奇异,这使得它们很难用数值方法求逆。将 5x5 随机矩阵的条件数与 5 阶 Hilbert 矩阵的条件数进行比较,可以看出问题的难度。
cond (rand (5)) ⇒ 14.392 cond (hilb (5)) ⇒ 4.7661e+05
另请参阅: invhilb。
hinv = invhilb (n) ¶返回 n 阶 Hilbert 矩阵的逆矩阵。
这可以使用如下公式精确计算:
(i+j) /n+i-1\ /n+j-1\ /i+j-2\ 2
A(i,j) = -1 (i+j-1)( )( ) ( )
\ n-j / \ n-i / \ i-2 /
= p(i) p(j) / (i+j-1)
其中
k /k+n-1\ /n\
p(k) = -1 ( ) ( )
\ k-1 / \k/
此公式的有效性可以通过将两个公式中的二项式系数展开为阶乘来轻松验证。它也可以通过 Cauchy 矩阵理论更直接地推导得出。参见 J. W. Demmel, Applied Numerical Linear Algebra,第 92 页。
将此与 inv (hilb (n)) 的数值计算进行对比,后者受 Hilbert 矩阵的病态性和计算机浮点运算有限精度的影响。
另请参阅: hilb。
M = magic (n) ¶创建一个 n×n 的幻方矩阵。
幻方是整数 1:n^2 的一个排列,使得行和、列和以及对角线和都等于同一个值。
注意:n 必须是大于或等于 3 的标量。如果您提供的 n 小于 3,magic 将返回一个非幻方矩阵,或者返回退化的幻方矩阵 1 和 []。
P = pascal (n) ¶P = pascal (n, t) ¶如果 t = 0,返回 n 阶 Pascal 矩阵。
t 的默认值为 0。
当 t = 1 时,返回 Pascal 矩阵的伪下三角 Cholesky 因子(某些列的符号可能为负)。该矩阵是其自身的逆矩阵,即 pascal (n, 1) ^ 2 == eye (n)。
如果 t = -1,返回对角线上具有严格正值的真实 Cholesky 因子。
如果 t = 2,返回 pascal (n, 1) 的转置和排列版本,它是单位矩阵的立方根。即 pascal (n, 2) ^ 3 == eye (n)。
另请参阅: chol。
T = toeplitz (c) ¶T = toeplitz (c, r) ¶返回从第一列 c 以及可选的第一行 r 构造的 Toeplitz 矩阵。
如果省略第二个参数,第一行将被视为与第一列相同。如果 r 的第一个元素与 c 的第一个元素不同,则使用 c 的第一个元素。
Toeplitz(即对角常数)矩阵沿每条对角线具有相同的值。虽然它不一定是方阵,但通常是方阵。一个 M×N 的 Toeplitz 矩阵形式如下:
c(1) r(2) r(3) ... r(n) c(2) c(1) r(2) ... r(n-1) c(3) c(2) c(1) ... r(n-2) . . . . . . . . . . . . . . . c(m) c(m-1) c(m-2) ... c(m-n+1)
另请参阅: hankel。
V = vander (c) ¶V = vander (c, n) ¶返回 Vandermonde 矩阵,其倒数第二列为 c。
如果指定了 n,则它决定列数;否则 n 取为 c 的长度。
Vandermonde 矩阵的形式如下:
c(1)^(n-1) ... c(1) 1 c(2)^(n-1) ... c(2) 1 . . . . . . . . . . . . c(m)^(n-1) ... c(m) 1
另请参阅: polyval。