⋮
TestArrays
测试矩阵生成模块
函数库: TyMath
测试矩阵是在生产生活以及理论研究中所遇到的特殊矩阵。
语法
TestArrays 模块中的函数以 TestArrays.函数名 形式进行调用,例如 TestArrays.cauchy 调用该模块的 cauchy 函数。
TestArrays 中的函数大多数包含 T(生成数据类型) 作为其第一个可选参数,该参数默认来自于对于用户输入的推断,例如,如果要生成以 Float64 为元素类型的二项分布矩阵,应写为 TestArrays.binomial(Float64,...)。注意,部分函数的生成即使对于全整数输入也会生成浮点数,对于这些函数,指定 T 为 Integer 类型的子类型就是不可行的,这些函数见下表。
| 函数名称 | 原因 |
cauchy,chebspec,cycol,house,kahan,invol,lesp,lotkin,orthog parter,qmult,randcolu,randcorr,randhess,randjorth,randsvd,ris sampling,smoke,toeppd,wathen,wilk | 矩阵生成时产生浮点数 |
| dorr,forsythe,kms,lauchli,prolate | 函数默认参数存在浮点数 |
TestArrays 中的部分矩阵生成过程中会使用随机算法,对于所有牵涉到随机算法的函数都支持随机数种子 rng 作为其第二个可选参数,该参数默认设置随机数种子为全局随机数流。例如,对于 randcolu 函数,就可以指定随机数种子,而对于其他不涉及到随机数算法的函数,指定随机数种子是不可行的。可以指定随机数种子的函数见下表。
在同时指定两个可选参数时,必须保证生成数据类型 T 在随机数种子 rng 之前,例如 TestArrays.rando(Float64,MT19937ar(1)) 为随机整数矩阵指定了数据类型 Float64 与随机数种子 MT19937ar(1)。
内容
该模块包含以下函数作为其模块子函数。
| binomial | 描述:二项矩阵,它是对合矩阵的倍数 语法:
- A = TestArrays.binomial(n) 返回一个 n×n 矩阵,其中包含整数项,满足 A^2 = 2^(n-1)*eye(n)。
属性:
- 矩阵 B = A*2^((1-n)/2) 是对合矩阵(矩阵与其逆矩阵相同)。
|
| cauchy | 描述:柯西矩阵 语法:
- A = TestArrays.cauchy(x,y) 返回一个 n×n 矩阵,其中包含的项满足 A[i,j] = 1/(x[i]+y[j])。参数 x 和 y 是长度为 n 的向量。如果您为 x 和 y 传入标量,它们将解释为向量 1:x 和 1:y。
- A = TestArrays.cauchy(x) 返回与上述 y = x 的情况相同的结果。换言之,A[i,j] = 1/(x[i]+x[j])。
属性:
- 柯西矩阵的逆矩阵和行列式的显式公式是已知的。
- 如果 x 和 y 均具有不同元素,则行列式 det(C) 为非零值。
- 如果 0 < x[1] < ... < x[n] 且 0 < y[1] < ... < y[n],则 C 为完全正值。
|
| chebspec | 描述:Chebyshev 谱微分矩阵 语法:
- A = TestArrays.chebspec(n,k) 返回一个大小为 n×n 的 Chebyshev 谱微分矩阵。参数 k 可以取值 false(默认值)或 true,它决定输出矩阵的字符。
对于 k = false(无边界条件),A 是幂零矩阵,这意味着存在满足 A^c = 0 的正整数 c。矩阵 A 具有空向量 ones(n)。
对于 k = true,A 是非奇异且条件设置良好的矩阵,其特征值具有负实部。 属性:
- 对于 k = 0,矩阵 A 与具有特征值零、大小为 n 的 Jordan 块类似。对于两个矩阵 A 和 B,如果存在一个具有相同大小的可逆矩阵 P 满足 B = inv(P)*A*P,则将这两个矩阵称为相似矩阵。
- 对于这两种 k 值,Chebyshev 谱微分矩阵的特征向量矩阵是病态的。
|
| chebvand | 描述:Chebyshev 多项式的 Vandermonde 类矩阵 语法:
- A = TestArrays.chebvand(x) 基于由点 x 组成的向量生成原始 Chebyshev Vandermonde 矩阵,这些点定义计算 Chebyshev 多项式的位置。参数 x 是长度为 n 的向量,A 的大小为 n×n。A 中的项满足 A[i,j] = Ti – 1(x[j]),其中 Ti – 1 是 i - 1 次第一类 Chebyshev 多项式。如果 x 为标量,则将使用区间 [0,1] 上的 x 个等间距点计算 A。
- A = TestArrays.chebvand(m,x) 生成上述矩阵的矩形版本(具有 m 行),其中 m 为标量。
|
| chow | 描述:奇异的托普利茨下 Hessenberg 矩阵 语法:
- A = TestArrays.chow(n,alpha,delta) 返回一个阶数为 n 的 Chow 矩阵,它是 n×n 的下 Hessenberg 矩阵。矩阵 A 定义为
A=Hα+δI
其中 Hα 的矩阵元素为 Hα[i,j] = α(i – j + 1)(在 (i – j + 1) ≥ 0 时),δ 是系数,I 是 n×n 单位矩阵。 - A = TestArrays.chow(n) 分别对 alpha 和 delta 使用默认值 1 和 0。
属性:
- Hα 具有等于零的 p = floor(n/2) 特征值。其余特征值等于 4*alpha*cos(k*pi/(n+2))^2,其中 k = 1:(n-p)。
|
| circul | 描述:循环矩阵 语法:
- A = TestArrays.circul(v) 返回一个 n×n 循环矩阵,其第一行是长度为 n 的向量 v。循环矩阵是一种特殊的托普利茨矩阵,其中每行都通过周期性地将上一行中的各元向右移一位来获得。如果 v 是标量,则 A = TestArrays.circul(1:v)。
属性:
- A 的特征系统是显式可知的。如果 t 是 n 次单位根,则 v 和 w = [1,t,t^2,...,t^(n – 1)] 的内积是 A 的特征值,w[n:-1:1] 是特征向量。
另请参阅:toeplitz |
| clement | 描述:具有零值对角线元的 Clement 三对角矩阵 语法:
- A = TestArrays.clement(n,k) 返回一个主对角线元为 0 的 n×n 三对角矩阵。对于 k = false(默认值),A 是非对称的。对于 k = true,A 是对称的。
属性:
- A = TestArrays.clement(n,true) 在对角线方面类似于 B = TestArrays.clement(n,0),其中存在一个具有相同大小的对角线矩阵 D 满足 B = inv(D)*A*D。
- 如果 n 是奇数,则 A 是奇异矩阵。
- A 的特征值是显式可知的,其中包括正负数字 n-1、n-3、n-5、...、1 或 0。
- 前两个属性也适用于 TestArrays.tridiag(x,y,z),其中 y = zeros(n)。如果输入向量 y 的长度或 n 是奇数,则 TestArrays.tridiag(x,y,z) 是奇异的。特征值仍然以正负对组形式出现,但它们并不是显式可知的。
- 对于奇数 n = 2*m+1 和 k = 0,TestArrays.clement(n,false) 有 m+1 个奇异值等于 @. sqrt((2*m+1)^2 - (2*t+1)^2)(对于 t = 0:m)。
|
| compar | 描述:比较矩阵 语法:
- A = TestArrays.compar(B,k) 返回 B 的比较矩阵。
对于 k = false(默认值),如果 i == j,则 A[i,j] = abs(B[i,j]),否则 A[i,j] = -abs(B[i,j])。
对于 k = true,A = TestArrays.compar(B,true) 将 B 的每个对角线元素替换为其绝对值,并将每个非对角线元素替换为同一行中非对角线元素的最大绝对值的负值。 属性:
- 如果 B 是三角矩阵,则 A = TestArrays.compar(B,true) 也是三角矩阵。
|
| condex | 描述:矩阵条件数估计量的反例 语法:
- A = TestArrays.condex(n,k,alpha) 返回条件数估计量的反例矩阵。它采用标量参数 alpha(默认值为 100),并返回大小为 n×n 的矩阵。
该矩阵、其实际大小及其适用的估计量是由 k 指定的:
| k = 1 | 4×4 | LINPACK 的 RCOND 的反例 | | k = 2 | 3×3 | LINPACK 的 RCOND 的反例 | | k = 3 | 任意 | LINPACK 的 RCOND 的反例(独立于 alpha) | | k = 4(默认值) | n >== 4 | LAPACK 的 RCOND 的反例(它是作为反例的该矩阵的逆矩阵) |
如果 n 不等于该矩阵的实际大小,则为该矩阵补上单位矩阵以构成 n 阶。
|
| cycol | 描述:其列周期性重复的矩阵 语法:
- A = TestArrays.cycol(n,k) 返回具有周期性重复列的 n×n 矩阵,其中一个周期由 randn(n,k) 定义的列构成。因此,矩阵 A 的秩不能超过 k,k 必须是标量。参数 k 是标量,默认值为 round(n/4),它不需要整除 n。
- A = TestArrays.cycol((m,n),k) 返回具有周期性重复列的 m×n 矩阵,其中一个周期由 randn(m,k) 定义的列构成。
|
| dorr | 描述:对角占优、病态、三对角矩阵(稀疏矩阵) 语法:
- A,v1,v2,v3 = TestArrays.dorr(n,theta) 返回 Dorr 矩阵,即 n×n 的行对角占优的三对角矩阵 A 以及定义 Dorr 矩阵的向量 v1, v2, v3。如果 theta 为较小的非负值,则该矩阵是病态的。theta 的默认值是 0.01。
|
| dramadah | 描述:由 0 和 1 组成的矩阵 语法:
- A = TestArrays.dramadah(n,k) 返回由 0 和 1 组成的 n×n 矩阵。n 和 k 必须均为标量。对于 k = 0 和 1,mu(A) = norm(inv(A),"fro") 相对较大(尽管不一定最大)[2]。参数 k 确定输出矩阵的字符,如下所示。
| k = 1(默认值) | A 是满足 abs(det(A)) = 1 和 mu(A) >= c*(1.75)^2n 的托普利茨和幺模矩阵,其中 c 是常量。A 的逆矩阵具有整数项。 | | k = 2 | A 是上三角托普利茨矩阵。A 的逆矩阵具有整数项。 | | k = 3 | A 是托普利茨矩阵,它在下 Hessenberg 二值矩阵(所有元素均为 0 或 1)中具有最大行列式。det(A) 等于第 n 个斐波那契数。特征值在复平面中的分布很有意义。 |
|
| fiedler | 描述:Fiedler 对称矩阵 语法:
- A = TestArrays.fiedler(x),其中 x 是长度为 n 的向量,返回含有元素 A[i,j] = abs(x[i]-x[j]) 的 n×n 对称矩阵。对于标量 x,A = TestArrays.fiedler(1:x)。
属性:
- 矩阵 A 具有占优正特征值,所有其他特征值是负数。
- inv(A) 和 det(A) 的显式公式由 Fiedler 在其著作 [3] 中给出。这些公式说明,除了非零 (1,n) 和 (n,1) 元素外,inv(A) 是三对角矩阵。
|
| forsythe | 描述:Forsythe 矩阵或扰动 Jordan 块 语法:
- A = TestArrays.forsythe(n,alpha,lambda) 返回具有特征值 lambda 的等于 Jordan 块的 n×n 矩阵,但 A[n,1] = alpha 除外。标量 alpha 和 lambda 的默认值分别为 sqrt(eps()) 和 0。
属性:
- A 的特征多项式由 det(A-t*I) = (lambda-t)^n - alpha*(-1)^n 给出。
|
| frank | 描述:具有病态特征值的 Frank 矩阵 语法:
- 对于默认值 k = false,A = TestArrays.frank(n,k) 返回大小为 n×n 的 Frank 矩阵。Frank 矩阵是具有行列式 1 的上 Hessenberg 矩阵。如果 k = true,则围绕反对角线 (1,n)、(2,n-1)、…、(n,1) 反射元素。
属性:
- 可以按 Hermite 多项式的零值形式获取 A 的特征值。它们是正值并以可逆对组形式出现。
- 如果 n 是奇数,则 1 是特征值。
- 最小的一半特征值(即最小的 floor(n/2) 个特征值)是病态的。
|
| galleryint | 描述:特殊的测试矩阵 语法:
- A = TestArrays.galleryint(n) 返回 n×n 矩阵。
对于 n = 3,TestArrays.galleryint(n) 返回一个病态的 3x3 矩阵。
对于 n = 5,TestArrays.galleryint(n) 返回一个具有全零作为特征值的矩阵。
|
| gcdmat | 描述:最大公约数矩阵 语法:
- A = TestArrays.gcdmat(n) 返回 n×n 矩阵,其 A[i,j] 等于 gcd(i,j)。
属性:
- 对于所有非负 r,矩阵 A 是对称正定矩阵,A.^r 是对称半正定矩阵。
|
| gearmat | 描述:Gear 矩阵 语法:
- A = TestArrays.gearmat(n,i,j) 返回 n×n 矩阵,其中下对角线和上对角线上为 1,(1,abs(i)) 位置为 sign(i),(n,n+1-abs(j)) 位置为 sign(j),其余所有位置为 0。参数 i 和 j 的默认值分别为 n 和 -n。它们必须为 -n 到 n 范围内的整数。
属性:
- 矩阵 A 是奇异矩阵,可具有双重和三重特征值,并且可以是亏损矩阵。
- 所有特征值的形式均为 2*cos(a),特征向量的形式为 [sin(w+a), sin(w+2a), …, sin(w+na)],其中 a 和 w 在 [4] 中给出。
|
| grcar | 描述:具有敏感特征值的托普利茨矩阵 语法:
- A = TestArrays.grcar(n,k) 返回 n×n 托普利茨矩阵,其中下对角线上的元素为 -1,主对角线上的元素为 1,主对角线上方的 k 个对角线上的元素为 1。k 必须为整数,默认值为 k = 3。A 具有对扰动敏感的特征值。
|
| hanowa | 描述:其特征值位于复平面中的垂直线上的矩阵 语法:
- A = TestArrays.hanowa(n,alpha) 返回 2×2 分块矩阵,其中包含四个 n/2×n/2 分块,形式如下:
[alpha*eye(n/2) -diagm(1:n/2)
diagm(1:n/2) alpha*eye(n/2)]
参数 n 必须为偶数整数。alpha 的默认值为 -1。A 具有复数特征值,形式为 alpha ± k*i (1 <= k <= n/2)。
|
| house | 描述:Householder 矩阵 语法:
- v,beta,s = TestArrays.house(x) 接受标量或 n 元素列向量形式的 x 并返回 beta 和 v,以使 H*x = s*e1。在此表达式中,e1 是 eye(n) 的第一列,abs(s) = norm(x),H = eye(n) - beta*v*v 是 Householder 矩阵。Householder 矩阵 H 满足以下属性
H*x = -sign(x[1])*norm(x)*e1
其中,e1 是 eye(n) 的第一列。
请注意,如果 x 是复数,则 sign(x) = exp(i*arg(x)),它在 x 为非零值时等于 x./abs(x)。如果 x 为零,则 v 为零且 beta = 1。
k 确定 s 的符号,如下所示。
| k = 0(默认值) | sign(s) = -sign(x[1]) | | k = 1 | sign(s) = sign(x[1]) | | k = 2 | sign(s) = 1(x 必须为实数) |
如果 x 为零,或如果 x = alpha*e1 (alpha >== 0) 且 k = 1 或 k = 2,则 v 为零,beta = 1 且 s = x[1]。在本例中,H = eye(n) 是单位矩阵,该矩阵并不是严格意义上的 Householder 矩阵。
|
| invhess | 描述:上 Hessenberg 矩阵的逆矩阵 语法:
- A = TestArrays.invhess(x,y),其中 x 是长度为 n 的向量,y 是长度为 n-1 的向量。如果 i <= j,它返回包含元素 A[i,j] = x[j] 的矩阵,否则返回包含元素 A[i,j] = y[i] 的矩阵。A 的下三角基于向量 x,而严格上三角基于 y。参数 y 默认为 -x[1:n-1]。
对于标量 n,TestArrays.invhess(n) 与 TestArrays.invhess(1:n) 相同。 属性:
- 如果对于所有 i,x[1] != 0 且 x[i+1] != y[i],则矩阵 A 是非奇异矩阵。
- A 的逆矩阵是上 Hessenberg 矩阵。
|
| invol | 描述:对合矩阵(矩阵与其逆矩阵相同) 语法:
- A = TestArrays.invol(n) 返回 n×n 对合矩阵,其中 A*A = eye(n) 和 A 为病态。它是 hilb(n) 的沿对角线缩放的版本。
属性:
- 矩阵 B = (eye(n)-A)/2 和 B = (eye(n)+A)/2 是幂等的,即 B*B = B。
另请参阅:hilb |
| ipjfact | 描述:含有阶乘元素的 Hankel 矩阵 语法:
- A,beta = TestArrays.ipjfact(n,k) 返回 n×n Hankel 矩阵 A 及其行列式 beta,该行列式是显式可知的。A 的逆矩阵也是显式可知的。
如果 k = false(默认值),则 A 的元素是 A[i,j] = factorial(i+j)。如果 k = true,则 A 的元素为 A[i,j] = 1/factorial(i+j)。 另请参阅:hankel | toeplitz |
| jordbloc | 描述:Jordan 分块矩阵 语法:
- A = TestArrays.jordbloc(n,lambda) 返回特征值为 lambda 的 n×n Jordan 块。lambda 的默认值是 1。
|
| kahan | 描述:上梯形 Kahan 矩阵 语法:
- A = TestArrays.kahan(n,theta,pert) 返回一个上梯形矩阵,该矩阵具有有关条件和秩的估计值的有意义属性。例如,Kahan 矩阵说明使用列置换的 QR 分解无法给出矩阵的良好秩估计。
如果 n 是一个二元素元组,则 A 为 n[1]×n[2];否则,A 为 n×n。theta 的有用范围是 0 < theta < pi,默认值为 1.2。
为确保使用列主元消去法的 QR 分解不会在存在舍入误差时交换列,将通过 pert*eps()*diagm(n:-1:1) 扰动主对角线。pert 的默认值为 1e3,此值可确保在 IEEE® 算术运算中,TestArrays.kahan(n) 至少在 n = 100 之前不会发生列互换(使用默认值 theta = 1.2 时)。
|
| kms | 描述:Kac-Murdock-Szegö 托普利茨矩阵 语法:
- A = TestArrays.kms(n,rho) 返回 n×n Kac-Murdock-Szegö 托普利茨矩阵以使 A[i,j] = rho^(abs(i-j))(对于实数 rho)。对于复数 rho,同一公式也适用,只不过对角线下的元素是共轭的。rho 的默认值为 0.5。
属性:
- 存在 A 的 LDL 分解,其中 L = inv(TestArrays.triw(n,-rho,1))' 和 D = (1-abs(rho)^2)*eye(n),但 D 的第一个元素 D[1,1] = 1 除外。
- 当且仅当 0 < abs(rho) < 1 时 A 为正定矩阵。
- inv(A) 的逆矩阵是三对角矩阵。
|
| krylov | 描述:Krylov 矩阵 语法:
- A = TestArrays.krylov(B,x,k) 返回 Krylov 矩阵,其中 B 是 n×n 矩阵,x 是长度为 n 的向量,k 必须为整数。Krylov 矩阵等于
[x B*x B^2*x ... B^(k-1)*x]
(对于列向量 x。)如果您没有指定参数 x 和 k,它们将采用默认值 x = ones(n,1) 和 k = n。 - 对于标量 n,A = TestArrays.krylov(n) 与 B = randn(n) 的 TestArrays.krylov(B) 相同。
|
| lauchli | 描述:Lauchli 矩形矩阵 语法:
- A = TestArrays.lauchli(n,mu) 返回 [ones(1,n); mu*eye(n)] 形式的 (n+1)×n 矩阵。参数 mu 默认为 sqrt(eps)。
属性:
- Lauchli 矩阵是最小二乘及其他问题的一个众所周知的示例,它说明了求解方程 A'Ax=A'b 时构建 A'*A 的危险。矩阵 A'*A 通常比初始矩阵 A 对舍入误差更敏感。
|
| lehmer | 描述:Lehmer 对称正定矩阵 语法:
- A = TestArrays.lehmer(n) 返回对称正定 n×n 矩阵以使 A[i,j] = i/j(对于 j >== i),否则 A[i,j] = j/i。
属性:
- A 是完全非负矩阵。
- inv(A) 的逆矩阵是三对角和显式已知的矩阵。
- 阶数 n 满足 n <= cond(A) <= 4*n*n。
|
| leslie | 描述:由 Leslie 人口模型的出生率和成活率组成的矩阵 语法:
- A = TestArrays.leslie(x,y) 是从 Leslie 人口模型(平均出生率为 x[1:n],成活率为 y[1:n-1])得出的 n×n 矩阵。除了包含 x[i] 的第一行和包含 y[i] 的第一个下对角线之外,矩阵元素大多为零。对于有效模型,x 的元素是非负值,y 的元素是正值并且以 1 为界,其中 0 < y[i] <= 1。
- A = TestArrays.leslie(n) 生成 Leslie 矩阵并且 x = ones(n) 和 y = ones(n-1)。
|
| lesp | 描述:含有实数敏感特征值的三对角矩阵 语法:
- A = TestArrays.lesp(n) 返回一个 n×n 矩阵,其特征值是实数且均匀分布在区间 [-2*n-3.5,-4.5] 中。
属性:
- 随着特征值变为越来越小的负值,特征值的敏感度呈指数增加。
- 该矩阵使用 A = inv(D)*B*D(其中 D = diagm(factorial.(1:n)))进行相似变换,这类似于通过对称三对角矩阵 B,后者具有相同的对角线元和非对角线元 1。
|
| lotkin | 描述:Lotkin 矩阵 语法:
- A = TestArrays.lotkin(n) 返回 Hilbert 矩阵,它的第一行全部更改为 1。
属性:
- Lotkin 矩阵 A 是非对称且病态的矩阵,具有许多模较小的负特征值。
- 其逆矩阵具有整数项且是显式已知的 [5]。
|
| minij | 描述:对称正定矩阵 语法:
- A = TestArrays.minij(n) 返回包含项 A[i,j] = min(i,j) 的 n×n 对称正定矩阵。
属性:
- A 具有特征值 0.25*sec(r*pi/(2*n+1)).^2,其中 r = 1:n。
- inv(A) 的逆矩阵是三对角矩阵且等于 -1 乘以第二个差分矩阵,但其 (n,n) 元素为 1。
- 矩阵 2*A-ones(size(A)) 具有三对角逆矩阵和特征值 @. 0.5*sec((2*r-1)*pi/(4*n))^2,其中 r = 1:n。
|
| moler | 描述:Moler 对称正定矩阵 语法:
- A = TestArrays.moler(n,alpha) 返回对称正定 n×n 矩阵 U'*U(其中 U = TestArrays.triw(n,alpha))。默认值为 alpha = -1、A[i,j] = min(i,j)-2 和 A[i,i] = i。
属性:
- 对于 alpha = -1,A 的特征值之一很小,与其余特征值相比有许多数量级的差异。
|
| neumann | 描述:源自离散 Neumann 问题的奇异矩阵(稀疏矩阵) 语法:
- A = TestArrays.neumann(n) 返回行对角占优的稀疏 n×n 奇异矩阵,该矩阵由使用规则网格上的普通五点算子离散 Neumann 问题所生成。参数 n 必须为完全平方整数。A 是稀疏矩阵且具有包含零向量 ones(n) 的一维零空间。
- A = TestArrays.neumann((m,n)) 返回相同的矩阵,但大小为 m*n×m*n。参数 m 和 n 必须为正整数,其中 m 必须大于 1。
|
| orthog | 描述:正交矩阵和准正交矩阵 语法:
- A = TestArrays.orthog(n,k) 返回第 k 个类型的 n 阶矩阵,其中 k >= 0 返回严格正交矩阵,k < 0 返回正交矩阵的不同对角缩放矩阵。
| k = 1(默认值) | A[i,j] = sqrt(2/(n+1)) * sin(i*j*pi/(n+1))
第二个差分矩阵 TestArrays.tridiag(n) 的特征向量矩阵。A 是对称正交矩阵。 | | k = 2 | A[i,j] = 2/(sqrt(2*n+1)) * sin(2*i*j*pi/(2*n+1))
对称正交矩阵。 | | k = 3 | A[r,s] = exp(2*pi*i*(r-1)*(s-1)/n) / sqrt(n)
酉复矩阵。A^4 是单位矩阵。这是与 fft(eye(n))/sqrt(n) 完全相同的矩阵。 | | k = 4 | 标准 Helmert 矩阵:下 Hessenberg 矩阵的置换,该矩阵的第一行是 ones(n)/sqrt(n)。 | | k = 5 | A[i,j] = sin(2*pi*(i-1)*(j-1)/n)/sqrt(n) + cos(2*pi*(i-1)*(j-1)/n)/sqrt(n)
Hartley 变换产生的对称矩阵。 | | k = 6 | A[i,j] = sqrt(2/n) * cos((i-1/2)*(j-1/2)*pi/n)
以离散余弦变换形式产生的对称矩阵。 | | k = -1 | A[i,j] = cos((i-1)*(j-1)*pi/(n-1))
基于第一类 T(n-1) 的 Chebychev 多项式的极值的 Chebyshev Vandermonde 类矩阵。此矩阵是对称矩阵。该矩阵的每个偶数列(行)向量与每个奇数列(行)向量正交,即对于任何偶数 i 和奇数 j,dot(A[i,:],A[j,:]) = 0。 | | k = -2 | A[i,j] = cos((i-1)*(j-1/2)*pi/n)
基于 T(n) 的零值的 Chebyshev Vandermonde 类矩阵。该矩阵的行向量相互正交,即对于 i 不等于 j 的情况,dot(A[i,:],A[j,:]) = 0。矩阵 A*A' 不是单位矩阵,而是对角矩阵。 |
|
| parter | 描述:Parter 矩阵 语法:
- A = TestArrays.parter(n) 返回矩阵 A 以使 A[i,j] = 1/(i-j+0.5)。
属性:
- A 是柯西和托普利茨矩阵。
- A 的大多数奇异值非常接近于 pi。
|
| pei | 描述:Pei 矩阵 语法:
- A = TestArrays.pei(n,alpha)(其中 alpha 是标量)返回对称矩阵 alpha*eye(n) + ones(n)。alpha 的默认值是 1。对于等于 0 或 -n 的 alpha,该矩阵是奇异矩阵。
|
| poisson | 描述:来自 Poisson 方程的块三对角矩阵(稀疏矩阵) 语法:
- A = TestArrays.poisson(n) 返回 n^2 阶稀疏块三对角矩阵,该矩阵使用 n×n 网格上的 5 点算子离散 Poisson 方程所产生。
|
| prolate | 描述:Prolate 矩阵 语法:
- A = TestArrays.prolate(n,alpha) 返回具有参数 alpha 的 n×n prolate 矩阵。它是对称病态托普利茨矩阵。如果 0 < alpha < 0.5,则 A 是正定矩阵。
属性:
- A 的特征值不同,它们在 (0,1) 区间内且往往聚集在 0 和 1 周围。
- w 的默认值为 0.25。
|
| qmult | 描述:随机正交矩阵的左乘矩阵 语法:
- A = TestArrays.qmult(S) 返回 Q*S,其中 Q 为来自 S 的行的数量的维度的 Haar 分布的随机实正交矩阵。当 S 为标量,则 qmult(S) 与 qmult(eye(S)) 等价。
- A = qmult(S, method) 指定计算方法。method = false 为默认值,采取默认方法,而 method = true 则会使用 qr 分解。
|
| randcolu | 描述:具有归一化列和指定的奇异值的随机矩阵 语法:
- A = TestArrays.randcolu(n) 生成一个随机 n×n 矩阵,该矩阵具有单位 2-范数的归一化列和来自均匀分布的随机奇异值。
A'*A 是与由 TestArrays.randcorr(n) 生成的矩阵具有相似形式的相关矩阵。后者的特征值是均匀分布的,而前者的特征值的平方根是均匀分布的。 - A = TestArrays.randcolu(x),其中 x 是长度为 n (n >= 1) 的向量,它生成一个随机 n×n 矩阵,其奇异值由向量 x 给出。向量 x 必须具有其平方和为 n 的非负元素。此矩阵还具有单元 2-范数的归一化列。
- A = TestArrays.randcolu(__,m)(其中 m >== n)生成 m×n 矩阵。
- A = TestArrays.randcolu(__,m,k) 基于 k 提供更多选项。
| k = false(默认值) | diag(x) 最初取决于随机的双向正交变换,随后应用 Givens 旋转序列。 | | k = true | 省略了初始变换。这在生成测试矩阵时更快,但生成的矩阵通常有许多零值元。 |
|
| randcorr | 描述:具有指定特征值的随机相关矩阵 语法:
- A = TestArrays.randcorr(n) 是一个随机 n×n 相关矩阵,具有均匀分布的随机特征值。相关矩阵是对角线上为 1 的对称半正定矩阵。
- A = TestArrays.randcorr(x) 生成一个随机相关矩阵,其特征值由向量 x 给定,其中 length(x) >= 1。向量 x 必须有其和为 length(x) 的非负元素。
- A = TestArrays.randcorr(x,k) 基于 k 提供更多选项。
| k = false(默认值) | 特征值的对角矩阵最初取决于随机正交相似变换,随后应用 Givens 旋转序列 [6]。 | | k = true | 省略了初始变换。这在生成测试矩阵时更快,但生成的矩阵通常有许多零值元。 | 另请参阅:corrcoef |
| randhess | 描述:随机正交上 Hessenberg 矩阵 语法:
- A = TestArrays.randhess(n) 返回 n×n 实数随机正交上 Hessenberg 矩阵。
- A = TestArrays.randhess(x) 使用 x 的元素作为参数以非随机方式构造 A。x 必须是长度为 n 的实数向量,其中 n >= 1。
在这两种情况下,矩阵 A 是基于 n-1 Givens 旋转的乘积构造的。
|
| randjorth | 描述:随机 J 正交矩阵 语法:
- A = TestArrays.randjorth(n) 生成一个满足关系 A'*J*A = J 的随机 n×n 的 J 正交矩阵 A(此类矩阵也称为双曲矩阵)。此处,J = blkdiag(eye(ceil(n/2))-eye(floor(n/2))) 且 cond(A) = sqrt(1/eps())。
- A = TestArrays.randjorth(n,m)(对于正整数 n 和 m)生成随机 (n+m)×(n+m) 正交矩阵 A。此处,J = blkdiag(eye(n),-eye(m)) 且 cond(A) = sqrt(1/eps())。
- A = TestArrays.randjorth(n,m,alpha,symm,method)
使用以下可选输入参数
- alpha - 指定 cond(A) = alpha,其中 alpha 必须等于或大于 1。
- symm - 选择是否强制对称。如果逻辑值 symm 为 false,则 A 是非对称矩阵。如果逻辑值 symm 为 true,则 A 是对称矩阵。
- method - 是否选择调用 qr 来执行基础正交变换。如果逻辑值 method 为 false,则不调用 qr。如果逻辑值 method 为 true,则调用 qr。在针对大维度创建 J正交矩阵时,调用 qr 比默认方法快得多。
|
| rando | 描述:由元素 –1、0 或 1 组成的随机矩阵 语法:
- A = TestArrays.rando(n,k) 返回一个随机 n×n 矩阵。输入参数 k 根据以下离散分布之一确定矩阵元素。
| k = 1(默认值) | A[i,j] = 0 或 1,具有相等概率。 | | k = 2 | A[i,j] = -1 或 1,具有相等概率。 | | k = 3 | A[i,j] = -1、0 或 1,具有相等概率。 | - A = TestArrays.rando((n,m),k) 返回一个随机 n×m 矩阵。
|
| randsvd | 描述:具有预分配奇异值的随机矩阵 语法:
- A = TestArrays.randsvd(n,kappa,mode,kl,ku) 返回 n 阶(多对角)条带随机矩阵,条件数为 cond(A) = abs(kappa) 且必须大于或等于 1。如果 n 是二元素向量,A 的大小为 n(1)×n(2)。
kappa 的默认值是 sqrt(1/eps())。分布众数 mode 决定矩阵的奇异值。
参数 kl 和 ku 分别指定 A 中下非对角线和上非对角线的数目。如果省略它们,将使用 kl = n-1 和 ku = kl 生成一个满矩阵。如果只存在 kl,则 ku 默认为 kl。
mode 的可用值如下所示。
| mode = 1 | 一个等于 1 的大奇异值(其余奇异值等于 1/abs(kappa))。 | | mode = 2 | 一个等于 1/abs(kappa) 的小奇异值(其余奇异值等于 1)。 | | mode = 3(默认值) | 几何分布的奇异值。 | | mode = 4 | 算术分布的奇异值。 | | mode = 5 | 具有均匀分布对数的随机奇异值。 | | mode < 0 | 如果 mode 是 -1、-2、-3、-4 或 -5,则 randsvd 将 mode 视为 abs(mode)。然而,在原始奇异值矩阵中,对角线元的顺序相反:从小到大,而不是从大到小。 |
在 kappa <= 1 的特例中,A 是一个对称正定矩阵,cond(A) = -kappa 且特征值根据 mode 分布。在这种情况下,参数 kl 和 ku 被忽略。 - A = TestArrays.randsvd(n,kappa,mode,kl,ku,method) 指定如何执行生成测试矩阵的计算。method = false 是默认值,而 method = true 使用一种替代方法来调用 qr,对于大的维度,该方法快得多,尽管它每秒使用更多浮点运算。
|
| redheff | 描述:由 1 和 0 组成的 Redheffer 矩阵 语法:
- A = TestArrays.redheff(n) 返回 A[i,j] = 1 定义的由 0 和 1 组成的 n×n 矩阵(如果 j = 1 或 i 等分 j,否则 A(i,j) = 0)。
属性:
- A 具有等于 1 的 n-floor(log2(n))-1 特征值。
- A 的一个实数特征值(及其谱半径)近似于 sqrt(n)。
- A 的一个负特征值近似于 -sqrt(n)。
- 其余 floor(log2(n))-1 个特征值具有相对较小的模数,位于圆 log2−εn 内(对于 ε >= 0 和足够大的 n)。
- 对于每个 ε >= 0 的情况,当且仅当 ∣det(A)∣=O(n1/2+\epsilon) 时,黎曼假设才成立。
- Barrett 和 Jarvis 推断小特征值的 floor(log2(n)) 均位于单位圆 abs(z) = 1 内。此推断的证明,加上随着 n 趋于无穷某些特征值趋于零这一证明,可得到一个新的质数定理证明 [7]。
|
| riemann | 描述:与黎曼假设关联的矩阵 语法:
- A = TestArrays.riemann(n) 返回一个当且仅当以下条件成立时黎曼假设才为真的 n×n 矩阵:
det(A)=O(n!n-1/2+ε)
(对于每个 ε >= 0)[8]。
黎曼矩阵由 A = B[2:n+1,2:n+1] 定义,其中,如果 i 等分 j,则 B[i,j] = i-1,否则 B[i,j] = -1。 属性 - 每个特征值 e[i] 都满足 abs(e[i]) <= m-1/m,其中 m = n+1。
- 特征值也满足 i <= e[i] < i+1,最多 m-sqrt(m) 个例外。
- 区间 (m/3,m/2] 中的所有整数都是特征值。
|
| ris | 描述:Ris 矩阵 语法:
- A = TestArrays.ris(n) 返回一个含有元素 A[i,j] = 0.5/(n-i-j+1.5) 的对称 n×n Hankel 矩阵。A 的特征值聚集在 π/2 和 –π/2 周围。
|
| sampling | 描述:具有病态整数特征值的非对称矩阵 语法:
- A = TestArrays.sampling(x)(其中 x 是长度为 n 的向量)返回 n×n 非对称矩阵。矩阵的元素是 A[i,j] = x[i]/(x[i
-x[j])(对于 i != j)且 A[j,j] 等于 j 列中的非对角线元素之和。如果 x 是标量,则 A = TestArrays.sampling(1:x)。
属性:
- A 具有病态整数特征值 0:n-1。
- 对于特征值 0 和 n-1,对应的特征向量分别是 x 和 ones(n)。
- 对于 i != j,A 满足 A[i,j] + A[j,i] = 1。
- 显式公式可用于 A 的左特征向量。
- 此矩阵的特例出现在抽样理论中,在该理论中,如果其右特征向量经过适当归一化,可给出条件泊松采样设计的包含概率 [9]。
|
| smoke | 描述:具有“烟环”伪谱的复矩阵 语法:
- A = TestArrays.smoke(n) 返回一个 n×n 矩阵,其上对角线上的元素为 1,(n,1) 位置上的元素为 1。对角线由包含所有 n 次单位根的集合组成。
- A = TestArrays.smoke(n,true) 返回与上面相同的矩阵,只不过元素 A[n,1] 为零。
属性:
- TestArrays.smoke(n,true) 的特征值是 n 次单位根。
- TestArrays.smoke(n) 的特征值是 n 次单位根乘以 2^(1/n)。
- 矩阵 A 的伪谱可以通过在复平面中求矩阵 zI-A 的最小奇异值来计算。此处,z 表示复平面上的点,I 是单位矩阵。TestArrays.smoke(n) 和 TestArrays.smoke(n,true) 的伪谱在其特征值附近具有“烟环”模式。
|
| toeppd | 描述:对称正定托普利茨矩阵 语法:
- A = TestArrays.toeppd(n,m,x,theta) 返回一个 n×n 对称托普利茨矩阵,该矩阵由 m 个托普利茨矩阵(秩为 1 或 2)之和组成。x 和 theta 是长度为 m 的向量。如果 x 的所有元素均为正值,则矩阵 A 是正定矩阵。具体而言,A 通过以下方式生成
A = x[1]*T1 + ... + x[k]*Tk + ... + x[m]*Tm
其中 Tk 是依赖于 theta[k] 的 n×n 矩阵。Tk 的元素是 Tk[i,j] = cos(2*pi*theta[k]*(i-j))。
默认情况下,m = n、x = rand(m) 且 theta = rand(m)。
|
| toeppen | 描述:五对角托普利茨矩阵(稀疏矩阵) 语法:
- A = TestArrays.toeppen(n,a,b,c,d,e) 返回具有以下元素的 n×n 稀疏五对角托普利茨矩阵:主对角线下方的第二个对角线上的元素为 a,下对角线上的元素为 b,主对角线上的元素为 c,上对角线上的元素为 d,主对角线上方的第二个对角线上的元素为 e,其中 a、b、c、d 和 e 为标量。
默认情况下,a,b,c,d,e = 1,-10,0,10,1,从而生成最初由 Rutishauser 提出的矩阵 [10]。此矩阵的特征值大致位于复平面中的曲线 2*cos(2*t) + 20*i*sin(t) 上。
|
| tridiag | 描述:三对角矩阵(稀疏矩阵) 语法:
- A = TestArrays.tridiag(n) 返回大小为 n×n 的稀疏三对角矩阵,其中下对角线元素为 -1,对角线元素为 2,上对角线元素为 -1。此矩阵具有特征值 2 + 2*cos(k*pi/(n+1)),其中 k = 1:n。
生成的矩阵是具有实非负特征值的对称正定 M矩阵。此矩阵也是第二个差分矩阵的负矩阵。 - A = TestArrays.tridiag(c,d,e) 返回由向量 c、d 和 e 定义的下对角线为 c、对角线为 d 和上对角线为 e 的三对角矩阵。向量 c 和 e 的长度必须为 length(d)-1。
- A = TestArrays.tridiag(n,c,d,e)(其中 c、d 和 e 都是标量)生成大小为 n×n 的托普利茨三对角矩阵,其中下对角线元素为 c,对角线元素为 d,上对角线元素为 e。此矩阵具有特征值 d + 2*sqrt(c*e)*cos(k*pi/(n+1)),其中 k = 1:n。
|
| triw | 描述:Wilkinson 和其他人讨论的上三角矩阵 语法:
- A = TestArrays.triw(n,alpha,k) 返回对角线上为 1,第一个 k >== 0 上对角线上为 alpha 的上三角矩阵。默认情况下,alpha = -1 且 k = n-1。
阶数 n 可以是二元素向量,在这种情况下矩阵为 n[1]×n[2] 上梯形矩阵。 属性:
- 对于 alpha = 2,矩阵的条件数满足:cond(TestArrays.triw(n,2)) = cot(pi/(4*n))^2。
- 对于大的 abs(alpha),cond(TestArrays.triw(n,alpha)) 近似于 abs(alpha)^n*sin(pi/(4*n-2))。
- 当您将 -2^(2-n) 与其 (n,1) 元素相加时,矩阵 A = TestArrays.triw(n) 会变为奇异矩阵。当您将 -2^(1-n) 与第一列中的元素相加时,该矩阵也会变为奇异矩阵。
|
| wathen | 描述:Wathen 矩阵(稀疏矩阵) 语法:
-
A = TestArrays.wathen(nx,ny) 返回稀疏随机 n×n 有限元矩阵,其中 n = 3*nx*ny + 2*nx + 2*ny + 1。
矩阵 A 准确地说是二维 8 节点(巧合)元素的常规 nx×ny 网格的“相容质量矩阵”。对于随机选择的“密度”rho(nx,ny) 的任何(正)值,A 是对称正定矩阵。 - B = TestArrays.wathen(nx,ny,true) 基于上述语法返回一个沿对角线缩放的矩阵,其中 B = diagm(diag(A))\A。此矩阵的特征值满足0.25 <= eigvals(B) <= 4.5(对于任何正整数 nx 和 ny 以及任何密度 rho(nx,ny)。)
|
| wilk | 描述:Wilkinson 设计或讨论的各种矩阵 语法:
- U,b = TestArrays.wilk(3) 返回一个表明不精确解的上三角矩阵方程组 U*x = b。
- L,b = TestArrays.wilk(4) 返回一个病态下三角矩阵方程组 L*x = b。
- A = TestArrays.wilk(5) 返回一个对称正定矩阵 A = B[1:5,2:6]*1.8144,其中 B = hilb(6)。
- A = TestArrays.wilk(21) 返回 W21+,这是一个三对角矩阵,具有几乎相等的特征值对。
|
参考
[1] Graham, R.L. and N. J. A. Sloane. “Anti-Hadamard Matrices.“ Linear Algebra and Its Applications 62 (1984): 113-137.
[2] Lippold, G. “Todd, J., Basic Numerical Mathematics. Vol. 2: Numerical Algebra. ISNM 22. Basel-Stuttgart, Birkhäuser-Verlag 1977. 216 S. DM 48,–.“ ZAMM - Zeitschrift für Angewandte Mathematik und Mechanik 59, no. 10 (1979): 589–589.
[3] Gear, C. W. “A Simple Set of Test Matrices for Eigenvalue Programs.“ Mathematics of Computation 23, no. 105 (1969): 119-125.
[4] Lotkin, M. “A Set of Test Matrices.“ Mathematical Tables and Other Aids to Computation 9, no. 52 (1955): 153.
[5] Davies, P. I. and N. J. Higham. “Numerically Stable Generation of Correlation Matrices and Their Factors.” BIT Numerical Mathematics 40 (2000): 640-651.
[6] Barrett, W. W. and T. J. Jarvis. “Spectral Properties of a Matrix of Redheffer.“ Linear Algebra and Its Applications 162-164 (1992): 673-83.
[7] Roesler, F. “Riemann's Hypothesis as an Eigenvalue Problem.“ Linear Algebra and Its Applications 81 (1986): 153-98.
[8] Bondesson, L. and I. Traat. “A Nonsymmetric Matrix with Integer Eigenvalues.“ Linear and Multilinear Algebra 55, no. 3 (2007): 239-47.
[9] Rutishauser, H. “On Test Matrices.“ Programmation en Mathematiques Numeriques, Editions Centre Nat Recherche Sci, Paris, 165 (1966): 349-65.
[10] Wilkinson, J. H. The Algebraic Eigenvalue Problem. Monographs on Numerical Analysis. Oxford: Oxford; New York: Clarendon Press; Oxford University Press, 1988.
TestArrays 测试矩阵生成模块 函数库: TyMath 测试矩阵是在生产生活以及理论研究中所遇到的特殊矩阵。 语法 TestArrays 模块中的函数以 TestArrays.函数名 形式进行调用,例如 TestArrays.cauchy 调用该模块的 cauchy 函数。 TestArrays 中的函数大多数包含 T(生成数据类型) 作为其第一个可选参数,该参数默认来自于对于用户输入的推断,例如,如果要生成以 Float64 为元素类型的二项分布矩阵,应写为 TestArrays.binomial(Float64,...)。注意,部分函数的生成即使对于全整数输入也会生成浮点数,对于这些函数,指定 T 为 Integer 类型的子类型就是不可行的,这些函数见下表。 函数名称 原因 cauchy , chebspec , cycol , house , kahan , invol , lesp , lotkin , orthog parter , qmult , randcolu , randcorr , randhess , randjorth , randsvd , ris sampling , smoke , toeppd , wathen , wilk 矩阵生成时产生浮点数 dorr , forsythe , kms , lauchli , prolate 函数默认参数存在浮点数 TestArrays 中的部分矩阵生成过程中会使用随机算法,对于所有牵涉到随机算法的函数都支持随机数种子 rng 作为其第二个可选参数,该参数默认设置随机数种子为全局随机数流。例如,对于 randcolu 函数,就可以指定随机数种子,而对于其他不涉及到随机数算法的函数,指定随机数种子是不可行的。可以指定随机数种子的函数见下表。 函数名称 随机数种子作用 cycol , qmult , randcolu , randcorr , randjorth , rando , randsvd , wathen 矩阵生成时使用随机数 krylov , randhess , toeppd 使用随机数生成输入参数 在同时指定两个可选参数时,必须保证生成数据类型 T 在随机数种子 rng 之前,例如 TestArrays.rando(Float64,MT19937ar(1)) 为随机整数矩阵指定了数据类型 Float64 与随机数种子 MT19937ar(1)。 内容 该模块包含以下函数作为其模块子函数。 binomial 描述 :二项矩阵,它是对合矩阵的倍数 语法 : A = TestArrays.binomial(n) 返回一个 n×n 矩阵,其中包含整数项,满足 A^2 = 2^(n-1)*eye(n)。 属性 : 矩阵 B = A*2^((1-n)/2) 是对合矩阵(矩阵与其逆矩阵相同)。 cauchy 描述 :柯西矩阵 语法 : A = TestArrays.cauchy(x,y) 返回一个 n×n 矩阵,其中包含的项满足 A[i,j] = 1/(x[i]+y[j])。参数 x 和 y 是长度为 n 的向量。如果您为 x 和 y 传入标量,它们将解释为向量 1:x 和 1:y。 A = TestArrays.cauchy(x) 返回与上述 y = x 的情况相同的结果。换言之,A[i,j] = 1/(x[i]+x[j])。 属性 : 柯西矩阵的逆矩阵和行列式的显式公式是已知的。 如果 x 和 y 均具有不同元素,则行列式 det(C) 为非零值。 如果 0 chebspec 描述 :Chebyshev 谱微分矩阵 语法 : A = TestArrays.chebspec(n,k) 返回一个大小为 n×n 的 Chebyshev 谱微分矩阵。参数 k 可以取值 false(默认值)或 true,它决定输出矩阵的字符。 对于 k = false(无边界条件),A 是幂零矩阵,这意味着存在满足 A^c = 0 的正整数 c。矩阵 A 具有空向量 ones(n)。 对于 k = true,A 是非奇异且条件设置良好的矩阵,其特征值具有负实部。 属性 : 对于 k = 0,矩阵 A 与具有特征值零、大小为 n 的 Jordan 块类似。对于两个矩阵 A 和 B,如果存在一个具有相同大小的可逆矩阵 P 满足 B = inv(P)AP,则将这两个矩阵称为相似矩阵。 对于这两种 k 值,Chebyshev 谱微分矩阵的特征向量矩阵是病态的。 chebvand 描述 :Chebyshev 多项式的 Vandermonde 类矩阵 语法 : A = TestArrays.chebvand(x) 基于由点 x 组成的向量生成原始 Chebyshev Vandermonde 矩阵,这些点定义计算 Chebyshev 多项式的位置。参数 x 是长度为 n 的向量,A 的大小为 n×n。A 中的项满足 A[i,j] = T i – 1 (x[j]),其中 T i – 1 是 i - 1 次第一类 Chebyshev 多项式。如果 x 为标量,则将使用区间 [0,1] 上的 x 个等间距点计算 A。 A = TestArrays.chebvand(m,x) 生成上述矩阵的矩形版本(具有 m 行),其中 m 为标量。 chow 描述 :奇异的托普利茨下 Hessenberg 矩阵 语法 : A = TestArrays.chow(n,alpha,delta) 返回一个阶数为 n 的 Chow 矩阵,它是 n×n 的下 Hessenberg 矩阵。矩阵 A 定义为 A=H α +δI 其中 H α 的矩阵元素为 H α [i,j] = α (i – j + 1) (在 (i – j + 1) ≥ 0 时),δ 是系数,I 是 n×n 单位矩阵。 A = TestArrays.chow(n) 分别对 alpha 和 delta 使用默认值 1 和 0。 属性 : H α 具有等于零的 p = floor(n/2) 特征值。其余特征值等于 4alphacos(k*pi/(n+2))^2,其中 k = 1:(n-p)。 circul 描述 :循环矩阵 语法 : A = TestArrays.circul(v) 返回一个 n×n 循环矩阵,其第一行是长度为 n 的向量 v。循环矩阵是一种特殊的托普利茨矩阵,其中每行都通过周期性地将上一行中的各元向右移一位来获得。如果 v 是标量,则 A = TestArrays.circul(1:v)。 属性 : A 的特征系统是显式可知的。如果 t 是 n 次单位根,则 v 和 w = [1,t,t^2,...,t^(n – 1)] 的内积是 A 的特征值,w[n:-1:1] 是特征向量。 另请参阅 : toeplitz clement 描述 :具有零值对角线元的 Clement 三对角矩阵 语法 : A = TestArrays.clement(n,k) 返回一个主对角线元为 0 的 n×n 三对角矩阵。对于 k = false(默认值),A 是非对称的。对于 k = true,A 是对称的。 属性 : A = TestArrays.clement(n,true) 在对角线方面类似于 B = TestArrays.clement(n,0),其中存在一个具有相同大小的对角线矩阵 D 满足 B = inv(D)AD。 如果 n 是奇数,则 A 是奇异矩阵。 A 的特征值是显式可知的,其中包括正负数字 n-1、n-3、n-5、...、1 或 0。 前两个属性也适用于 TestArrays.tridiag(x,y,z),其中 y = zeros(n)。如果输入向量 y 的长度或 n 是奇数,则 TestArrays.tridiag(x,y,z) 是奇异的。特征值仍然以正负对组形式出现,但它们并不是显式可知的。 对于奇数 n = 2m+1 和 k = 0,TestArrays.clement(n,false) 有 m+1 个奇异值等于 @. sqrt((2m+1)^2 - (2*t+1)^2)(对于 t = 0:m)。 compar 描述 :比较矩阵 语法 : A = TestArrays.compar(B,k) 返回 B 的比较矩阵。 对于 k = false(默认值),如果 i == j,则 A[i,j] = abs(B[i,j]),否则 A[i,j] = -abs(B[i,j])。 对于 k = true,A = TestArrays.compar(B,true) 将 B 的每个对角线元素替换为其绝对值,并将每个非对角线元素替换为同一行中非对角线元素的最大绝对值的负值。 属性 : 如果 B 是三角矩阵,则 A = TestArrays.compar(B,true) 也是三角矩阵。 condex 描述 :矩阵条件数估计量的反例 语法 : A = TestArrays.condex(n,k,alpha) 返回条件数估计量的反例矩阵。它采用标量参数 alpha(默认值为 100),并返回大小为 n×n 的矩阵。 该矩阵、其实际大小及其适用的估计量是由 k 指定的: k = 1 4×4 LINPACK 的 RCOND 的反例 k = 2 3×3 LINPACK 的 RCOND 的反例 k = 3 任意 LINPACK 的 RCOND 的反例(独立于 alpha) k = 4(默认值) n >== 4 LAPACK 的 RCOND 的反例(它是作为反例的该矩阵的逆矩阵) 如果 n 不等于该矩阵的实际大小,则为该矩阵补上单位矩阵以构成 n 阶。 cycol 描述 :其列周期性重复的矩阵 语法 : A = TestArrays.cycol(n,k) 返回具有周期性重复列的 n×n 矩阵,其中一个周期由 randn(n,k) 定义的列构成。因此,矩阵 A 的秩不能超过 k,k 必须是标量。参数 k 是标量,默认值为 round(n/4),它不需要整除 n。 A = TestArrays.cycol((m,n),k) 返回具有周期性重复列的 m×n 矩阵,其中一个周期由 randn(m,k) 定义的列构成。 dorr 描述 :对角占优、病态、三对角矩阵(稀疏矩阵) 语法 : A,v1,v2,v3 = TestArrays.dorr(n,theta) 返回 Dorr 矩阵,即 n×n 的行对角占优的三对角矩阵 A 以及定义 Dorr 矩阵的向量 v1, v2, v3。如果 theta 为较小的非负值,则该矩阵是病态的。theta 的默认值是 0.01。 dramadah 描述 :由 0 和 1 组成的矩阵 语法 : A = TestArrays.dramadah(n,k) 返回由 0 和 1 组成的 n×n 矩阵。n 和 k 必须均为标量。对于 k = 0 和 1,mu(A) = norm(inv(A),"fro") 相对较大(尽管不一定最大) [2] 。参数 k 确定输出矩阵的字符,如下所示。 k = 1(默认值) A 是满足 abs(det(A)) = 1 和 mu(A) >= c*(1.75)^2n 的托普利茨和幺模矩阵,其中 c 是常量。A 的逆矩阵具有整数项。 k = 2 A 是上三角托普利茨矩阵。A 的逆矩阵具有整数项。 k = 3 A 是托普利茨矩阵,它在下 Hessenberg 二值矩阵(所有元素均为 0 或 1)中具有最大行列式。det(A) 等于第 n 个斐波那契数。特征值在复平面中的分布很有意义。 fiedler 描述 :Fiedler 对称矩阵 语法 : A = TestArrays.fiedler(x),其中 x 是长度为 n 的向量,返回含有元素 A[i,j] = abs(x[i]-x[j]) 的 n×n 对称矩阵。对于标量 x,A = TestArrays.fiedler(1:x)。 属性 : 矩阵 A 具有占优正特征值,所有其他特征值是负数。 inv(A) 和 det(A) 的显式公式由 Fiedler 在其著作 [3] 中给出。这些公式说明,除了非零 (1,n) 和 (n,1) 元素外,inv(A) 是三对角矩阵。 forsythe 描述 :Forsythe 矩阵或扰动 Jordan 块 语法 : A = TestArrays.forsythe(n,alpha,lambda) 返回具有特征值 lambda 的等于 Jordan 块的 n×n 矩阵,但 A[n,1] = alpha 除外。标量 alpha 和 lambda 的默认值分别为 sqrt(eps()) 和 0。 属性 : A 的特征多项式由 det(A-tI) = (lambda-t)^n - alpha(-1)^n 给出。 frank 描述 :具有病态特征值的 Frank 矩阵 语法 : 对于默认值 k = false,A = TestArrays.frank(n,k) 返回大小为 n×n 的 Frank 矩阵。Frank 矩阵是具有行列式 1 的上 Hessenberg 矩阵。如果 k = true,则围绕反对角线 (1,n)、(2,n-1)、…、(n,1) 反射元素。 属性 : 可以按 Hermite 多项式的零值形式获取 A 的特征值。它们是正值并以可逆对组形式出现。 如果 n 是奇数,则 1 是特征值。 最小的一半特征值(即最小的 floor(n/2) 个特征值)是病态的。 galleryint 描述 :特殊的测试矩阵 语法 : A = TestArrays.galleryint(n) 返回 n×n 矩阵。 对于 n = 3,TestArrays.galleryint(n) 返回一个病态的 3x3 矩阵。 对于 n = 5,TestArrays.galleryint(n) 返回一个具有全零作为特征值的矩阵。 gcdmat 描述 :最大公约数矩阵 语法 : A = TestArrays.gcdmat(n) 返回 n×n 矩阵,其 A[i,j] 等于 gcd(i,j)。 属性 : 对于所有非负 r,矩阵 A 是对称正定矩阵,A.^r 是对称半正定矩阵。 gearmat 描述 :Gear 矩阵 语法 : A = TestArrays.gearmat(n,i,j) 返回 n×n 矩阵,其中下对角线和上对角线上为 1,(1,abs(i)) 位置为 sign(i),(n,n+1-abs(j)) 位置为 sign(j),其余所有位置为 0。参数 i 和 j 的默认值分别为 n 和 -n。它们必须为 -n 到 n 范围内的整数。 属性 : 矩阵 A 是奇异矩阵,可具有双重和三重特征值,并且可以是亏损矩阵。 所有特征值的形式均为 2*cos(a),特征向量的形式为 [sin(w+a), sin(w+2a), …, sin(w+na)],其中 a 和 w 在 [4] 中给出。 grcar 描述 :具有敏感特征值的托普利茨矩阵 语法 : A = TestArrays.grcar(n,k) 返回 n×n 托普利茨矩阵,其中下对角线上的元素为 -1,主对角线上的元素为 1,主对角线上方的 k 个对角线上的元素为 1。k 必须为整数,默认值为 k = 3。A 具有对扰动敏感的特征值。 hanowa 描述 :其特征值位于复平面中的垂直线上的矩阵 语法 : A = TestArrays.hanowa(n,alpha) 返回 2×2 分块矩阵,其中包含四个 n/2×n/2 分块,形式如下: [alpha*eye(n/2) -diagm(1:n/2) diagm(1:n/2) alpha*eye(n/2)] 参数 n 必须为偶数整数。alpha 的默认值为 -1。A 具有复数特征值,形式为 alpha ± k*i (1 house 描述 :Householder 矩阵 语法 : v,beta,s = TestArrays.house(x) 接受标量或 n 元素列向量形式的 x 并返回 beta 和 v,以使 Hx = se1。在此表达式中,e1 是 eye(n) 的第一列,abs(s) = norm(x),H = eye(n) - betavv 是 Householder 矩阵。Householder 矩阵 H 满足以下属性 Hx = -sign(x[1])norm(x)*e1 其中,e1 是 eye(n) 的第一列。 请注意,如果 x 是复数,则 sign(x) = exp(i*arg(x)),它在 x 为非零值时等于 x./abs(x)。如果 x 为零,则 v 为零且 beta = 1。 k 确定 s 的符号,如下所示。 k = 0(默认值) sign(s) = -sign(x[1]) k = 1 sign(s) = sign(x[1]) k = 2 sign(s) = 1(x 必须为实数) 如果 x 为零,或如果 x = alpha*e1 (alpha >== 0) 且 k = 1 或 k = 2,则 v 为零,beta = 1 且 s = x[1]。在本例中,H = eye(n) 是单位矩阵,该矩阵并不是严格意义上的 Householder 矩阵。 invhess 描述 :上 Hessenberg 矩阵的逆矩阵 语法 : A = TestArrays.invhess(x,y),其中 x 是长度为 n 的向量,y 是长度为 n-1 的向量。如果 i 对于标量 n,TestArrays.invhess(n) 与 TestArrays.invhess(1:n) 相同。 属性 : 如果对于所有 i,x[1] != 0 且 x[i+1] != y[i],则矩阵 A 是非奇异矩阵。 A 的逆矩阵是上 Hessenberg 矩阵。 invol 描述 :对合矩阵(矩阵与其逆矩阵相同) 语法 : A = TestArrays.invol(n) 返回 n×n 对合矩阵,其中 A*A = eye(n) 和 A 为病态。它是 hilb(n) 的沿对角线缩放的版本。 属性 : 矩阵 B = (eye(n)-A)/2 和 B = (eye(n)+A)/2 是幂等的,即 B*B = B。 另请参阅 : hilb ipjfact 描述 :含有阶乘元素的 Hankel 矩阵 语法 : A,beta = TestArrays.ipjfact(n,k) 返回 n×n Hankel 矩阵 A 及其行列式 beta,该行列式是显式可知的。A 的逆矩阵也是显式可知的。 如果 k = false(默认值),则 A 的元素是 A[i,j] = factorial(i+j)。如果 k = true,则 A 的元素为 A[i,j] = 1/factorial(i+j)。 另请参阅 : hankel toeplitz jordbloc 描述 :Jordan 分块矩阵 语法 : A = TestArrays.jordbloc(n,lambda) 返回特征值为 lambda 的 n×n Jordan 块。lambda 的默认值是 1。 kahan 描述 :上梯形 Kahan 矩阵 语法 : A = TestArrays.kahan(n,theta,pert) 返回一个上梯形矩阵,该矩阵具有有关条件和秩的估计值的有意义属性。例如,Kahan 矩阵说明使用列置换的 QR 分解无法给出矩阵的良好秩估计。 如果 n 是一个二元素元组,则 A 为 n[1]×n[2];否则,A 为 n×n。theta 的有用范围是 0 为确保使用列主元消去法的 QR 分解不会在存在舍入误差时交换列,将通过 perteps()diagm(n:-1:1) 扰动主对角线。pert 的默认值为 1e3,此值可确保在 IEEE ® 算术运算中,TestArrays.kahan(n) 至少在 n = 100 之前不会发生列互换(使用默认值 theta = 1.2 时)。 kms 描述 :Kac-Murdock-Szegö 托普利茨矩阵 语法 : A = TestArrays.kms(n,rho) 返回 n×n Kac-Murdock-Szegö 托普利茨矩阵以使 A[i,j] = rho^(abs(i-j))(对于实数 rho)。对于复数 rho,同一公式也适用,只不过对角线下的元素是共轭的。rho 的默认值为 0.5。 属性 : 存在 A 的 LDL 分解,其中 L = inv(TestArrays.triw(n,-rho,1))' 和 D = (1-abs(rho)^2)*eye(n),但 D 的第一个元素 D[1,1] = 1 除外。 当且仅当 0 inv(A) 的逆矩阵是三对角矩阵。 krylov 描述 :Krylov 矩阵 语法 : A = TestArrays.krylov(B,x,k) 返回 Krylov 矩阵,其中 B 是 n×n 矩阵,x 是长度为 n 的向量,k 必须为整数。Krylov 矩阵等于 [x Bx B^2x ... B^(k-1)*x] (对于列向量 x。)如果您没有指定参数 x 和 k,它们将采用默认值 x = ones(n,1) 和 k = n。 对于标量 n,A = TestArrays.krylov(n) 与 B = randn(n) 的 TestArrays.krylov(B) 相同。 lauchli 描述 :Lauchli 矩形矩阵 语法 : A = TestArrays.lauchli(n,mu) 返回 [ones(1,n); mu*eye(n)] 形式的 (n+1)×n 矩阵。参数 mu 默认为 sqrt(eps)。 属性 : Lauchli 矩阵是最小二乘及其他问题的一个众所周知的示例,它说明了求解方程 A'Ax=A'b 时构建 A'A 的危险。矩阵 A'A 通常比初始矩阵 A 对舍入误差更敏感。 lehmer 描述 :Lehmer 对称正定矩阵 语法 : A = TestArrays.lehmer(n) 返回对称正定 n×n 矩阵以使 A[i,j] = i/j(对于 j >== i),否则 A[i,j] = j/i。 属性 : A 是完全非负矩阵。 inv(A) 的逆矩阵是三对角和显式已知的矩阵。 阶数 n 满足 n leslie 描述 :由 Leslie 人口模型的出生率和成活率组成的矩阵 语法 : A = TestArrays.leslie(x,y) 是从 Leslie 人口模型(平均出生率为 x[1:n],成活率为 y[1:n-1])得出的 n×n 矩阵。除了包含 x[i] 的第一行和包含 y[i] 的第一个下对角线之外,矩阵元素大多为零。对于有效模型,x 的元素是非负值,y 的元素是正值并且以 1 为界,其中 0 A = TestArrays.leslie(n) 生成 Leslie 矩阵并且 x = ones(n) 和 y = ones(n-1)。 lesp 描述 :含有实数敏感特征值的三对角矩阵 语法 : A = TestArrays.lesp(n) 返回一个 n×n 矩阵,其特征值是实数且均匀分布在区间 [-2*n-3.5,-4.5] 中。 属性 : 随着特征值变为越来越小的负值,特征值的敏感度呈指数增加。 该矩阵使用 A = inv(D)BD(其中 D = diagm(factorial.(1:n)))进行相似变换,这类似于通过对称三对角矩阵 B,后者具有相同的对角线元和非对角线元 1。 lotkin 描述 :Lotkin 矩阵 语法 : A = TestArrays.lotkin(n) 返回 Hilbert 矩阵,它的第一行全部更改为 1。 属性 : Lotkin 矩阵 A 是非对称且病态的矩阵,具有许多模较小的负特征值。 其逆矩阵具有整数项且是显式已知的 [5] 。 minij 描述 :对称正定矩阵 语法 : A = TestArrays.minij(n) 返回包含项 A[i,j] = min(i,j) 的 n×n 对称正定矩阵。 属性 : A 具有特征值 0.25sec(rpi/(2*n+1)).^2,其中 r = 1:n。 inv(A) 的逆矩阵是三对角矩阵且等于 -1 乘以第二个差分矩阵,但其 (n,n) 元素为 1。 矩阵 2A-ones(size(A)) 具有三对角逆矩阵和特征值 @. 0.5sec((2r-1)pi/(4*n))^2,其中 r = 1:n。 moler 描述 :Moler 对称正定矩阵 语法 : A = TestArrays.moler(n,alpha) 返回对称正定 n×n 矩阵 U'*U(其中 U = TestArrays.triw(n,alpha))。默认值为 alpha = -1、A[i,j] = min(i,j)-2 和 A[i,i] = i。 属性 : 对于 alpha = -1,A 的特征值之一很小,与其余特征值相比有许多数量级的差异。 neumann 描述 :源自离散 Neumann 问题的奇异矩阵(稀疏矩阵) 语法 : A = TestArrays.neumann(n) 返回行对角占优的稀疏 n×n 奇异矩阵,该矩阵由使用规则网格上的普通五点算子离散 Neumann 问题所生成。参数 n 必须为完全平方整数。A 是稀疏矩阵且具有包含零向量 ones(n) 的一维零空间。 A = TestArrays.neumann((m,n)) 返回相同的矩阵,但大小为 mn×mn。参数 m 和 n 必须为正整数,其中 m 必须大于 1。 orthog 描述 :正交矩阵和准正交矩阵 语法 : A = TestArrays.orthog(n,k) 返回第 k 个类型的 n 阶矩阵,其中 k >= 0 返回严格正交矩阵,k k = 1(默认值) A[i,j] = sqrt(2/(n+1)) sin(ij*pi/(n+1)) 第二个差分矩阵 TestArrays.tridiag(n) 的特征向量矩阵。A 是对称正交矩阵。 k = 2 A[i,j] = 2/(sqrt(2n+1)) sin(2ijpi/(2n+1)) 对称正交矩阵。 k = 3 A[r,s] = exp(2pii(r-1)(s-1)/n) / sqrt(n) 酉复矩阵。A^4 是单位矩阵。这是与 fft(eye(n))/sqrt(n) 完全相同的矩阵。 k = 4 标准 Helmert 矩阵:下 Hessenberg 矩阵的置换,该矩阵的第一行是 ones(n)/sqrt(n)。 k = 5 A[i,j] = sin(2pi(i-1)(j-1)/n)/sqrt(n) + cos(2pi(i-1)(j-1)/n)/sqrt(n) Hartley 变换产生的对称矩阵。 k = 6 A[i,j] = sqrt(2/n) cos((i-1/2)(j-1/2)*pi/n) 以离散余弦变换形式产生的对称矩阵。 k = -1 A[i,j] = cos((i-1)(j-1)pi/(n-1)) 基于第一类 T(n-1) 的 Chebychev 多项式的极值的 Chebyshev Vandermonde 类矩阵。此矩阵是对称矩阵。该矩阵的每个偶数列(行)向量与每个奇数列(行)向量正交,即对于任何偶数 i 和奇数 j,dot(A[i,:],A[j,:]) = 0。 k = -2 A[i,j] = cos((i-1)(j-1/2)pi/n) 基于 T(n) 的零值的 Chebyshev Vandermonde 类矩阵。该矩阵的行向量相互正交,即对于 i 不等于 j 的情况,dot(A[i,:],A[j,:]) = 0。矩阵 A*A' 不是单位矩阵,而是对角矩阵。 parter 描述 :Parter 矩阵 语法 : A = TestArrays.parter(n) 返回矩阵 A 以使 A[i,j] = 1/(i-j+0.5)。 属性 : A 是柯西和托普利茨矩阵。 A 的大多数奇异值非常接近于 pi。 pei 描述 :Pei 矩阵 语法 : A = TestArrays.pei(n,alpha)(其中 alpha 是标量)返回对称矩阵 alpha*eye(n) + ones(n)。alpha 的默认值是 1。对于等于 0 或 -n 的 alpha,该矩阵是奇异矩阵。 poisson 描述 :来自 Poisson 方程的块三对角矩阵(稀疏矩阵) 语法 : A = TestArrays.poisson(n) 返回 n^2 阶稀疏块三对角矩阵,该矩阵使用 n×n 网格上的 5 点算子离散 Poisson 方程所产生。 prolate 描述 :Prolate 矩阵 语法 : A = TestArrays.prolate(n,alpha) 返回具有参数 alpha 的 n×n prolate 矩阵。它是对称病态托普利茨矩阵。如果 0 属性 : A 的特征值不同,它们在 (0,1) 区间内且往往聚集在 0 和 1 周围。 w 的默认值为 0.25。 qmult 描述 :随机正交矩阵的左乘矩阵 语法 : A = TestArrays.qmult(S) 返回 Q*S,其中 Q 为来自 S 的行的数量的维度的 Haar 分布的随机实正交矩阵。当 S 为标量,则 qmult(S) 与 qmult(eye(S)) 等价。 A = qmult(S, method) 指定计算方法。method = false 为默认值,采取默认方法,而 method = true 则会使用 qr 分解。 randcolu 描述 :具有归一化列和指定的奇异值的随机矩阵 语法 : A = TestArrays.randcolu(n) 生成一个随机 n×n 矩阵,该矩阵具有单位 2-范数的归一化列和来自均匀分布的随机奇异值。 A'*A 是与由 TestArrays.randcorr(n) 生成的矩阵具有相似形式的相关矩阵。后者的特征值是均匀分布的,而前者的特征值的平方根是均匀分布的。 A = TestArrays.randcolu(x),其中 x 是长度为 n (n >= 1) 的向量,它生成一个随机 n×n 矩阵,其奇异值由向量 x 给出。向量 x 必须具有其平方和为 n 的非负元素。此矩阵还具有单元 2-范数的归一化列。 A = TestArrays.randcolu(,m)(其中 m >== n)生成 m×n 矩阵。 A = TestArrays.randcolu(,m,k) 基于 k 提供更多选项。 k = false(默认值) diag(x) 最初取决于随机的双向正交变换,随后应用 Givens 旋转序列。 k = true 省略了初始变换。这在生成测试矩阵时更快,但生成的矩阵通常有许多零值元。 randcorr 描述 :具有指定特征值的随机相关矩阵 语法 : A = TestArrays.randcorr(n) 是一个随机 n×n 相关矩阵,具有均匀分布的随机特征值。相关矩阵是对角线上为 1 的对称半正定矩阵。 A = TestArrays.randcorr(x) 生成一个随机相关矩阵,其特征值由向量 x 给定,其中 length(x) >= 1。向量 x 必须有其和为 length(x) 的非负元素。 A = TestArrays.randcorr(x,k) 基于 k 提供更多选项。 k = false(默认值) 特征值的对角矩阵最初取决于随机正交相似变换,随后应用 Givens 旋转序列 [6] 。 k = true 省略了初始变换。这在生成测试矩阵时更快,但生成的矩阵通常有许多零值元。 另请参阅 : corrcoef randhess 描述 :随机正交上 Hessenberg 矩阵 语法 : A = TestArrays.randhess(n) 返回 n×n 实数随机正交上 Hessenberg 矩阵。 A = TestArrays.randhess(x) 使用 x 的元素作为参数以非随机方式构造 A。x 必须是长度为 n 的实数向量,其中 n >= 1。 在这两种情况下,矩阵 A 是基于 n-1 Givens 旋转的乘积构造的。 randjorth 描述 :随机 J 正交矩阵 语法 : A = TestArrays.randjorth(n) 生成一个满足关系 A'JA = J 的随机 n×n 的 J 正交矩阵 A(此类矩阵也称为 双曲 矩阵)。此处,J = blkdiag(eye(ceil(n/2))-eye(floor(n/2))) 且 cond(A) = sqrt(1/eps())。 A = TestArrays.randjorth(n,m)(对于正整数 n 和 m)生成随机 (n+m)×(n+m) 正交矩阵 A。此处,J = blkdiag(eye(n),-eye(m)) 且 cond(A) = sqrt(1/eps())。 A = TestArrays.randjorth(n,m,alpha,symm,method) 使用以下可选输入参数 alpha - 指定 cond(A) = alpha,其中 alpha 必须等于或大于 1。 symm - 选择是否强制对称。如果逻辑值 symm 为 false,则 A 是非对称矩阵。如果逻辑值 symm 为 true,则 A 是对称矩阵。 method - 是否选择调用 qr 来执行基础正交变换。如果逻辑值 method 为 false,则不调用 qr。如果逻辑值 method 为 true,则调用 qr。在针对大维度创建 J正交矩阵时,调用 qr 比默认方法快得多。 rando 描述 :由元素 –1、0 或 1 组成的随机矩阵 语法 : A = TestArrays.rando(n,k) 返回一个随机 n×n 矩阵。输入参数 k 根据以下离散分布之一确定矩阵元素。 k = 1(默认值) A[i,j] = 0 或 1,具有相等概率。 k = 2 A[i,j] = -1 或 1,具有相等概率。 k = 3 A[i,j] = -1、0 或 1,具有相等概率。 A = TestArrays.rando((n,m),k) 返回一个随机 n×m 矩阵。 randsvd 描述 :具有预分配奇异值的随机矩阵 语法 : A = TestArrays.randsvd(n,kappa,mode,kl,ku) 返回 n 阶(多对角)条带随机矩阵,条件数为 cond(A) = abs(kappa) 且必须大于或等于 1。如果 n 是二元素向量,A 的大小为 n(1)×n(2)。 kappa 的默认值是 sqrt(1/eps())。分布众数 mode 决定矩阵的奇异值。 参数 kl 和 ku 分别指定 A 中下非对角线和上非对角线的数目。如果省略它们,将使用 kl = n-1 和 ku = kl 生成一个满矩阵。如果只存在 kl,则 ku 默认为 kl。 mode 的可用值如下所示。 mode = 1 一个等于 1 的大奇异值(其余奇异值等于 1/abs(kappa))。 mode = 2 一个等于 1/abs(kappa) 的小奇异值(其余奇异值等于 1)。 mode = 3(默认值) 几何分布的奇异值。 mode = 4 算术分布的奇异值。 mode = 5 具有均匀分布对数的随机奇异值。 mode 如果 mode 是 -1、-2、-3、-4 或 -5,则 randsvd 将 mode 视为 abs(mode)。然而,在原始奇异值矩阵中,对角线元的顺序相反:从小到大,而不是从大到小。 在 kappa A = TestArrays.randsvd(n,kappa,mode,kl,ku,method) 指定如何执行生成测试矩阵的计算。method = false 是默认值,而 method = true 使用一种替代方法来调用 qr,对于大的维度,该方法快得多,尽管它每秒使用更多浮点运算。 redheff 描述 :由 1 和 0 组成的 Redheffer 矩阵 语法 : A = TestArrays.redheff(n) 返回 A[i,j] = 1 定义的由 0 和 1 组成的 n×n 矩阵(如果 j = 1 或 i 等分 j,否则 A(i,j) = 0)。 属性 : A 具有等于 1 的 n-floor(log2(n))-1 特征值。 A 的一个实数特征值(及其谱半径)近似于 sqrt(n)。 A 的一个负特征值近似于 -sqrt(n)。 其余 floor(log2(n))-1 个特征值具有相对较小的模数,位于圆 log2−εn 内(对于 ε >= 0 和足够大的 n)。 对于每个 ε >= 0 的情况,当且仅当 ∣det(A)∣=O(n 1/2+\epsilon ) 时,黎曼假设才成立。 Barrett 和 Jarvis 推断小特征值的 floor(log2(n)) 均位于单位圆 abs(z) = 1 内。此推断的证明,加上随着 n 趋于无穷某些特征值趋于零这一证明,可得到一个新的质数定理证明 [7] 。 riemann 描述 :与黎曼假设关联的矩阵 语法 : A = TestArrays.riemann(n) 返回一个当且仅当以下条件成立时黎曼假设才为真的 n×n 矩阵: det(A)=O(n!n -1/2+ε ) (对于每个 ε >= 0) [8] 。 黎曼矩阵由 A = B[2:n+1,2:n+1] 定义,其中,如果 i 等分 j,则 B[i,j] = i-1,否则 B[i,j] = -1。 属性 每个特征值 e[i] 都满足 abs(e[i]) 特征值也满足 i 区间 (m/3,m/2] 中的所有整数都是特征值。 ris 描述 :Ris 矩阵 语法 : A = TestArrays.ris(n) 返回一个含有元素 A[i,j] = 0.5/(n-i-j+1.5) 的对称 n×n Hankel 矩阵。A 的特征值聚集在 π/2 和 –π/2 周围。 sampling 描述 :具有病态整数特征值的非对称矩阵 语法 : A = TestArrays.sampling(x)(其中 x 是长度为 n 的向量)返回 n×n 非对称矩阵。矩阵的元素是 A[i,j] = x[i]/(x[i -x[j])(对于 i != j)且 A[j,j] 等于 j 列中的非对角线元素之和。如果 x 是标量,则 A = TestArrays.sampling(1:x)。 属性 : A 具有病态整数特征值 0:n-1。 对于特征值 0 和 n-1,对应的特征向量分别是 x 和 ones(n)。 对于 i != j,A 满足 A[i,j] + A[j,i] = 1。 显式公式可用于 A 的左特征向量。 此矩阵的特例出现在抽样理论中,在该理论中,如果其右特征向量经过适当归一化,可给出条件泊松采样设计的包含概率 [9] 。 smoke 描述 :具有“烟环”伪谱的复矩阵 语法 : A = TestArrays.smoke(n) 返回一个 n×n 矩阵,其上对角线上的元素为 1,(n,1) 位置上的元素为 1。对角线由包含所有 n 次单位根的集合组成。 A = TestArrays.smoke(n,true) 返回与上面相同的矩阵,只不过元素 A[n,1] 为零。 属性 : TestArrays.smoke(n,true) 的特征值是 n 次单位根。 TestArrays.smoke(n) 的特征值是 n 次单位根乘以 2^(1/n)。 矩阵 A 的伪谱可以通过在复平面中求矩阵 zI-A 的最小奇异值来计算。此处,z 表示复平面上的点,I 是单位矩阵。TestArrays.smoke(n) 和 TestArrays.smoke(n,true) 的伪谱在其特征值附近具有“烟环”模式。 toeppd 描述 :对称正定托普利茨矩阵 语法 : A = TestArrays.toeppd(n,m,x,theta) 返回一个 n×n 对称托普利茨矩阵,该矩阵由 m 个托普利茨矩阵(秩为 1 或 2)之和组成。x 和 theta 是长度为 m 的向量。如果 x 的所有元素均为正值,则矩阵 A 是正定矩阵。具体而言,A 通过以下方式生成 A = x[1]T1 + ... + x[k]Tk + ... + x[m]*Tm 其中 Tk 是依赖于 theta[k] 的 n×n 矩阵。Tk 的元素是 Tk[i,j] = cos(2pitheta[k]*(i-j))。 默认情况下,m = n、x = rand(m) 且 theta = rand(m)。 toeppen 描述 :五对角托普利茨矩阵(稀疏矩阵) 语法 : A = TestArrays.toeppen(n,a,b,c,d,e) 返回具有以下元素的 n×n 稀疏五对角托普利茨矩阵:主对角线下方的第二个对角线上的元素为 a,下对角线上的元素为 b,主对角线上的元素为 c,上对角线上的元素为 d,主对角线上方的第二个对角线上的元素为 e,其中 a、b、c、d 和 e 为标量。 默认情况下,a,b,c,d,e = 1,-10,0,10,1,从而生成最初由 Rutishauser 提出的矩阵 [10] 。此矩阵的特征值大致位于复平面中的曲线 2cos(2t) + 20isin(t) 上。 tridiag 描述 :三对角矩阵(稀疏矩阵) 语法 : A = TestArrays.tridiag(n) 返回大小为 n×n 的稀疏三对角矩阵,其中下对角线元素为 -1,对角线元素为 2,上对角线元素为 -1。此矩阵具有特征值 2 + 2cos(kpi/(n+1)),其中 k = 1:n。 生成的矩阵是具有实非负特征值的对称正定 M矩阵。此矩阵也是第二个差分矩阵的负矩阵。 A = TestArrays.tridiag(c,d,e) 返回由向量 c、d 和 e 定义的下对角线为 c、对角线为 d 和上对角线为 e 的三对角矩阵。向量 c 和 e 的长度必须为 length(d)-1。 A = TestArrays.tridiag(n,c,d,e)(其中 c、d 和 e 都是标量)生成大小为 n×n 的托普利茨三对角矩阵,其中下对角线元素为 c,对角线元素为 d,上对角线元素为 e。此矩阵具有特征值 d + 2sqrt(ce)cos(kpi/(n+1)),其中 k = 1:n。 triw 描述 :Wilkinson 和其他人讨论的上三角矩阵 语法 : A = TestArrays.triw(n,alpha,k) 返回对角线上为 1,第一个 k >== 0 上对角线上为 alpha 的上三角矩阵。默认情况下,alpha = -1 且 k = n-1。 阶数 n 可以是二元素向量,在这种情况下矩阵为 n[1]×n[2] 上梯形矩阵。 属性 : 对于 alpha = 2,矩阵的条件数满足:cond(TestArrays.triw(n,2)) = cot(pi/(4*n))^2。 对于大的 abs(alpha),cond(TestArrays.triw(n,alpha)) 近似于 abs(alpha)^nsin(pi/(4n-2))。 当您将 -2^(2-n) 与其 (n,1) 元素相加时,矩阵 A = TestArrays.triw(n) 会变为奇异矩阵。当您将 -2^(1-n) 与第一列中的元素相加时,该矩阵也会变为奇异矩阵。 wathen 描述 :Wathen 矩阵(稀疏矩阵) 语法 : A = TestArrays.wathen(nx,ny) 返回稀疏随机 n×n 有限元矩阵,其中 n = 3nxny + 2nx + 2ny + 1。 矩阵 A 准确地说是二维 8 节点(巧合)元素的常规 nx×ny 网格的“相容质量矩阵”。对于随机选择的“密度”rho(nx,ny) 的任何(正)值,A 是对称正定矩阵。 B = TestArrays.wathen(nx,ny,true) 基于上述语法返回一个沿对角线缩放的矩阵,其中 B = diagm(diag(A))\A。此矩阵的特征值满足0.25 wilk 描述 :Wilkinson 设计或讨论的各种矩阵 语法 : U,b = TestArrays.wilk(3) 返回一个表明不精确解的上三角矩阵方程组 U*x = b。 L,b = TestArrays.wilk(4) 返回一个病态下三角矩阵方程组 L*x = b。 A = TestArrays.wilk(5) 返回一个对称正定矩阵 A = B[1:5,2:6]*1.8144,其中 B = hilb(6)。 A = TestArrays.wilk(21) 返回 W21+,这是一个三对角矩阵,具有几乎相等的特征值对。 参考 [1] Graham, R.L. and N. J. A. Sloane. “Anti-Hadamard Matrices.“ Linear Algebra and Its Applications 62 (1984): 113-137. [2] Lippold, G. “Todd, J., Basic Numerical Mathematics. Vol. 2: Numerical Algebra. ISNM 22. Basel-Stuttgart, Birkhäuser-Verlag 1977. 216 S. DM 48,–.“ ZAMM - Zeitschrift für Angewandte Mathematik und Mechanik 59, no. 10 (1979): 589–589. [3] Gear, C. W. “A Simple Set of Test Matrices for Eigenvalue Programs.“ Mathematics of Computation 23, no. 105 (1969): 119-125. [4] Lotkin, M. “A Set of Test Matrices.“ Mathematical Tables and Other Aids to Computation 9, no. 52 (1955): 153. [5] Davies, P. I. and N. J. Higham. “Numerically Stable Generation of Correlation Matrices and Their Factors.” BIT Numerical Mathematics 40 (2000): 640-651. [6] Barrett, W. W. and T. J. Jarvis. “Spectral Properties of a Matrix of Redheffer.“ Linear Algebra and Its Applications 162-164 (1992): 673-83. [7] Roesler, F. “Riemann's Hypothesis as an Eigenvalue Problem.“ Linear Algebra and Its Applications 81 (1986): 153-98. [8] Bondesson, L. and I. Traat. “A Nonsymmetric Matrix with Integer Eigenvalues.“ Linear and Multilinear Algebra 55, no. 3 (2007): 239-47. [9] Rutishauser, H. “On Test Matrices.“ Programmation en Mathematiques Numeriques, Editions Centre Nat Recherche Sci, Paris, 165 (1966): 349-65. [10] Wilkinson, J. H. The Algebraic Eigenvalue Problem. Monographs on Numerical Analysis. Oxford: Oxford; New York: Clarendon Press; Oxford University Press, 1988.