ドキュメンテーション センター

  • 評価版
  • 製品アップデート

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

構文

[A,B,C,...] = gallery(matname,P1,P2,...)
[A,B,C,...] = gallery(matname,P1,P2,...,classname)
gallery(3)
gallery(5)

説明

[A,B,C,...] = gallery(matname,P1,P2,...) は引用符で囲まれた文字列 matname によって指定されるテスト行列を返します。入力 matname は下記の表から選択される行列ファミリの名前です。P1,P2,... は個々の行列ファミリで必要とされる入力パラメーターです。呼び出し構文で使用されるオプションパラメーター P1,P2,... の数は、行列ごとに異なります。正確な呼び出し構文は、後述の個々の行列の説明で詳細に示します。

[A,B,C,...] = gallery(matname,P1,P2,...,classname) はクラス classname の行列を生成します。入力 classname は、引用符で囲まれた文字列で、'single' または 'double' のいずれかでなければなりません (matname'integerdata' でない場合、'int8''int16''int32''uint8''uint16'、および 'uint32' も使用できます)。classname を指定しない場合、行列のクラスは、P1,P2,... の中で次元を指定しない引数またはオプションを選択しない引数から決定されます。これらの引数のいずれかがクラス single の場合、行列は single になります。それ以外の場合には、行列は double になります。

gallery(3) は条件数の悪い 3 行 3 列の行列です。gallery(5) は興味深い固有値問題です。

gallery は、アルゴリズムのテストやその他の目的に対して有効なテスト行列関数を 50 種類以上保持します。

binomial — involutory 行列の倍数

A = gallery('binomial',n) は、A^2 = 2^(n-1)*eye(n) となる整数要素をもつ nn 列の行列を返します。

したがって、B = A*2^((1-n)/2) は involutory 行列、すなわち B^2 = eye(n) となります。

cauchy — コーシー行列

C = gallery('cauchy',x,y) は、C(i,j) = 1/(x(i)+y(j)) である nn 列の行列を返します。引数 x および y は、長さが n のベクトルです。xy に対してスカラーを与えると、それらは、1:x および 1:y のベクトルとして解釈されます。

C = gallery('cauchy',x) は、y = x として、上記と同じ行列を返します。すなわち、このコマンドは、C(i,j) = 1/(x(i)+x(j)) を返します。

コーシー行列の逆行列および行列式に対しては、明示的な公式が知られています。x および y がどちらも異なる要素をもつ場合、行列式 det(C) は非ゼロです。0 < x(1) <... < x(n) かつ 0 < y(1) < ... < y(n) ならば、C は完全に正になります。

chebspec — チェビシェフ スペクトル微分行列

C = gallery('chebspec',n,switch) は、n 次のチェビシェフ スペクトル微分行列を返します。引数 switch は、出力行列の特性を決定する変数です。既定の設定では、switch = 0 です。

switch = 0 ("境界条件なし") に対して、C はべきゼロ (C^n = 0) で、空ベクトル ones(n,1) をもちます。行列 C は、ゼロの固有値をもつサイズ n のジョルダン ブロックに似ています。

switch = 1 に対して、C は正則で、条件数がよく、その固有値は負の実数部をもちます。

チェビシェフ スペクトル微分行列の固有ベクトル行列は、条件数がよくありません。

chebvand — チェビシェフ多項式用のヴァンデルモンド行列に似た行列

C = gallery('chebvand',p) は、チェビシェフ多項式を計算する点を定義する点 p からなるベクトルに基づいて (主要な) チェビシェフ ヴァンデルモンド行列を生成します。

C = gallery('chebvand',m,p) は、m がスカラーのとき、m 行である上記の四角形バージョンを生成します。

p がベクトルの場合、C(i,j) = Ti – 1(p(j)) となります。ここで、Ti – 1 は、次数 i – 1 のチェビシェフ多項式です。p がスカラーの場合、C を計算するために、区間 [0,1] に等間隔な点 p が使用されます。

chow — 特異なテプリッツ下ヘッセンベルグ行列

A = gallery('chow',n,alpha,delta) は、A = H(alpha) + delta*eye(n) となる A を返します。ここで、Hi,j(α) = α(i – j + 1) です。また、引数 n は Chow 行列の次数です。スカラー alpha および delta の既定値は、それぞれ 1 および 0 です。

H(alpha) は、ゼロに等価な p = floor(n/2) 個の固有値をもちます。残りの固有値は、4*alpha*cos(k*pi/(n+2))^2, k=1:n-p に等価です。

circul — 循環行列

C = gallery('circul',v) は、最初の行がベクトル v である循環行列を返します。

循環行列は、1 つ先のステップの要素を循環して置き換えることで、1 つ前の行から各行が得られるという特性をもっています。これは、対角要素が "囲まれた" 特別なテプリッツ行列です。

v がスカラーの場合、C = gallery('circul',1:v) です。

C (nn 列) の固有システムは明示的に知られています。t が 1 の n べき根の場合、v と w = [1 t t2 ... t(n – 1)] との内積は C の固有値になり、w(n:-1:1) は固有ベクトルになります。

clement — ゼロを対角要素とする三重対角行列

A = gallery('clement',n,k) は、主対角にゼロをもち、既知の固有値をもつ nn 列の三重対角行列を返します。n が奇数の場合、正則でなくなります。逆行列の要素の約 64 パーセントはゼロになります。固有値には、プラス、マイナスの数字 n-1n-3n-5...、(1 または 0) などがあります。

k=0 の場合 (既定の設定)、A は非対称です。k=1 の場合、A は対称です。

gallery('clement',n,1) は、gallery('clement',n) と対角的に相似です。

奇数の N = 2*M+1, M+1 は整数 sqrt((2*M+1)^2 - (2*K+1).^2), K = 0:M です。

    メモ:   同様のプロパティが、y = zeros(n,1) である場合に gallery('tridiag',x,y,z) で成り立ちます。固有値は、プラス/マイナスの対ですが、明示的に知られていません。

compar — 比較行列

A = gallery('compar',A,1) は、A のそれぞれの対角要素をその絶対値で置き換え、それぞれの非対角要素を、各行の絶対値が最大の要素の絶対値にマイナスを付けた値で置き換えた結果を返します。しかし、A が三角行列の場合、compar(A,1) も三角行列になります。

gallery('compar',A) は、diag(B) - tril(B,-1) - triu(B,1) です。ここで、B = abs(A) です。compar(A) は、文献では、しばしば、M(A) と記述されます。

gallery('compar',A,0) は、gallery('compar',A) と同じです。

condex — 行列の条件数推定のカウンター例

A = gallery('condex',n,k,theta) は、条件数の推定に対する "counter-example" 行列を返します。これは、次数 n とスカラー パラメーター theta (既定の設定は 100) をもちます。

この行列のサイズと適用する推定法は、次のように、k によって指定されます。

k = 1

4 行 4 列

LINPACK

k = 2

3 行 3 列

LINPACK

k = 3

任意

LINPACK (rcond) (theta に独立)

k = 4

n >= 4

LAPACK (RCOND) (既定の設定)。この行列 (counter 例) の逆行列です。

n が妥当な行列サイズでなければ、次数 n に対して単位行列が加えられます。

cycol — 列を巡回的に繰り返す行列

A = gallery('cycol',[m n],k) は、循環する反復列からなる mn 列の行列を返します。1 サイクルは randn(m,k) です。したがって、行列 A のランクは、k を超えることはありません。また、k は、スカラーでなければなりません。

引数 k の既定の設定は round(n/4) ですが、n を割り切る必要はありません。

A = gallery('cycol',n,k)。ここで、n はスカラーで、gallery('cycol',[n n],k) と同じです。

dorr — 対角で、条件数の悪い三重対角行列

[c,d,e] = gallery('dorr',n,theta) は、小さな非負の値 theta に対して、条件数の悪い nn 列の対角優位の三重対角行列を定義するベクトルを返します。theta の既定値は 0.01 です。Dorr 行列そのものは gallery('tridiag',c,d,e) と同じです。

A = gallery('dorr',n,theta) は、ベクトルではなく、行列そのものを返します。

dramadah — 逆行列が大きな整数要素になる 0 と 1 の行列

A = gallery('dramadah',n,k) は、要素が 01 で構成され、mu(A) = norm(inv(A),'fro') が比較的大きくなる (必ずしも最大ではない) nn 列の行列を返します。反アダマール行列 A は、mu(A) が最大となる 0 または 1 の要素をもつ行列です。

n および k は、共にスカラーでなければなりません。引数 k は、出力行列の特性を決定します。

k = 1

既定の設定。Aabs(det(A)) = 1mu(A) > c(1.75)^n のテプリッツ行列です。ここで、c は定数です。A の逆行列は、整数要素をもちます。

k = 2

A は、上三角のテプリッツ行列です。A の逆行列は、整数要素をもちます。

k = 3

A は、下ヘッセンベルグ (0,1) 行列の中で最大の行列式をもちます。det(A)n 番目のフィボナッチ数です。A はテプリッツ行列です。固有値は複素平面内に興味ある分布を示します。

fiedler — 対称行列

A = gallery('fiedler',c) は、c が長さ n のベクトルのとき、要素 abs(n(i)-n(j)) をもつ nn 列の対称行列を返します。スカラー c に対して、A = gallery('fiedler',1:c) です。

行列 A は、主要な正の固有値を 1 つもち、それ以外の固有値はすべて負です。

『Todd, J., Basic Numerical Mathematics, Vol. 2: Numerical Algebra, Birkhauser, Basel, and Academic Press, New York, 1977, p. 159』に記載されている inv(A)det(A) に対する明示的な式は Fiedler によって考えられたものです。これらは、非ゼロの (1,n) 要素と (n,1) 要素を除いて、inv(A) が三重対角行列であることを示しています。

forsythe — 摂動のあるジョルダン ブロック

A = gallery('forsythe',n,alpha,lambda) は、A(n,1) = alpha であることを除いて、固有値 lambda をもつジョルダン ブロックに等価な nn 列の行列を返します。スカラー alpha および lambda の既定値は、それぞれ sqrt(eps) および 0 です。

A の特性多項式は、次式で与えられます。

det(A-t*I) = (lambda-t)^N - alpha*(-1)^n.

frank — 条件数の悪い固有値をもつ行列

F = gallery('frank',n,k) は、次数 n のフランク行列を返します。これは、行列式が 1 の上ヘッセンベルグ行列です。k = 1 の場合、各要素は反対角成分 (1,n)(n,1) について反映されます。F の固有値は、エルミート多項式の零点として得られることがあります。これらの固有値は正で、双対の組み合わせが存在します。n が奇数の場合、1 は固有値です。F は条件数の悪い floor(n/2) 個の固有値をもちます。それらは小さな固有値です。

gcdmat — 最大公約数行列

A = gallery('gcdmat',n)(i,j) 要素 gcd(i,j) をもつ nn 列の行列を返します。行列 A は対称正定行列です。また、 A.^r はすべての非負の r に対して対称な準正定行列です。

gearmat — Gear 行列

A = gallery('gearmat',n,i,j) は、主対角よりも 1 つ上側と下側の対角要素が 1、(1,abs(i)) 要素が sign(i)(n,n+1-abs(j)) 要素が sign(j)、それ以外が 0 となる nn 列の行列を返します。引数 i および j の既定の設定は、それぞれ n および -n です。

A は特異行列で、2 重および 3 重の固有値をもつことや、フルランクでない (defective) こともあります。

すべての固有値は 2*cos(a) という形式、固有ベクトルは [sin(w+a), sin(w+2*a), ..., sin(w+n*a)] という形式です。aw は次の参考文献に記載されています。『Gear, C. W., "A Simple Set of Test Matrices for Eigenvalue Programs," Math. Comp 』Vol. 23 (1969)、pp. 119-125.

grcar — 影響を受けやすい固有値をもつテプリッツ行列

A = gallery('grcar',n,k) は、主対角の 1 つ下の要素が -1、主対角要素が 1、主対角の k 個上の要素が 1 となる nn 列のテプリッツ行列を返します。既定の設定は k = 3 です。これは、敏感な固有値をもちます。

hanowa — 固有値が複素平面内の垂線上に位置する行列

A = gallery('hanowa',n,d) は、次のような 22 列のブロック行列からなる nn 列の行列を返します。

[d*eye(m) -diag(1:m)
diag(1:m) d*eye(m)]

引数 n は、偶数の整数 n=2*m です。行列 A は、d ± k*i 型 (1 <= k <= m) の複素固有値をもちます。d の既定値は -1 です。

house — ハウスホルダー行列

[v,beta,s] = gallery('house',x,k) は、n 要素の列ベクトル x を使って、H*x = s*e1 を満たす V および beta を返します。この表現で、e1eye(n) の最初の列、abs(s) = norm(x) です。また、H = eye(n) - beta*V*V' はハウスホルダー行列です。

k は、s の符号を決定します。

k = 0

sign(s) = -sign(x(1)) (既定の設定)

k = 1

sign(s) = sign(x(1))

k = 2

sign(s) = 1 (x は実数)

x が複素数の場合、x が非ゼロのとき、sign(x) = x./abs(x) になります。

x = 0 の場合、または x = alpha*e1 (alpha >= 0) で k = 1 または k = 2 の場合、V = 0beta = 1、および s = x(1) になります。この場合、H は単位行列になり、ハウスホルダー行列を厳密には満たしません。

-------------------------------------------------------------------------------------------------

[v, beta] = gallery('house',x) は、スカラーまたは n 要素の列ベクトル x を使って、eye(n,n) - beta*v*v' がハウスホルダー行列となる v および beta を返します。ハウスホルダー行列 H は、次の関係を満たします。

H*x = -sign(x(1))*norm(x)*e1 

ここで、e1eye(n,n) の最初の列です。x が複素数の場合、sign(x) exp(i*arg(x))になります (これは、x が非ゼロのとき x./abs(x) と等価です)。

x = 0 の場合、v = 0 および beta = 1 です。

integerdata — 指定範囲の整数の一様分布から取得した任意のデータの配列

A = gallery('integerdata',imax,[m,n,...],j) は、値が整数 1:imax の一様分布からのサンプルである m x n x ... の多次元配列 A を返します。j は、区間 [0, 2^32-1] 内の整数値でなければなりません。異なる J の値で gallery('integerdata', ...) を呼び出すと、異なる配列が返されます。同じ imax、サイズ ベクトル、および j 入力で gallery('integerdata',...) を繰り返し呼び出すと、常に同じ配列が返されます。

gallery('integerdata', ...) の呼び出しでは、サイズ ベクトル入力 [m,n,...] を個々の入力 mn、... で置き換えることができます。たとえば、gallery('integerdata',7,[1,2,3,4],5)gallery('integerdata',7,1,2,3,4,5) と同じです。

A = gallery('integerdata',[imin imax],[m,n,...],j) は、値が整数 imin:imax の一様分布からのサンプルである m x n x ... の多次元配列 A を返します。

[A,B,...] = gallery('integerdata',[imin imax],[m,n,...],j) は、異なる値を含んでいる複数の m x n x... の多次元配列 AB、... を返します。

A = gallery('integerdata',[imin imax],[m,n,...],j,classname) は、クラス classname の配列を生成します。classname は、'uint8''uint16''uint32''int8''int16'int32''single'、または 'double' でなければなりません。

invhess — 上ヘッセンベルグ行列の逆行列

A = gallery('invhess',x,y) は、x が長さ n のベクトルで、y が長さ n-1 のベクトルのとき、下三角部分が ones(n,1)*x' の下三角部分に等しく、主対角よりも上側の三角部分が [1 y]*ones(1,n) の上三角部分に等しい行列を返します。

すべての i に対して、x(1) ~= 0 かつ x(i+1) ~= y(i) の場合、この行列は正則であり、その逆行列は上ヘッセンベルグ行列です。引数 y の既定の設定は -x(1:n-1) です。

x がスカラーの場合、invhess(x)invhess(1:x) と同じです。

invol — Involutory 行列

A = gallery('invol',n) は、nn 列の条件数の悪い involutory 行列 (A*A = eye(n)) を返します。これは、hilb(n) を対角的にスケーリングしたものです。

B = (eye(n)-A)/2B = (eye(n)+A)/2 は、冪等 (B*B = B) です。

ipjfact — 因子要素をもつハンケル行列

[A,d] = gallery('ipjfact',n,k) は、nn 列のハンケル行列 A と、明示的に知られている A の行列式 d を返します。k = 0 (既定の設定) の場合、A の要素は、A(i,j) = (i+j)! です。k = 1 の場合、A の要素は、A(i,j) 1/(i+j) です。

A の逆行列も明示的に知られていることに注意してください。

jordbloc — ジョルダン ブロック

A = gallery('jordbloc',n,lambda) は、固有値 lambda をもつ nn 列のジョルダン ブロックを返します。lambda の既定値は 1 です。

kahan — 上台形行列

A = gallery('kahan',n,theta,pert) は、条件数およびランクの推定に関して興味深い性質をもつ上台形行列を返します。

n が 2 要素ベクトルの場合、An(1)n(2) 列で、その他の場合、Ann 列の行列です。theta の有効な範囲は 0 < theta < pi で、既定値は 1.2 です。

列のピボットによる QR 分解が、丸め誤差の存在する列を交換しないようにするために、対角要素に pert*eps*diag([n:-1:1]) として摂動を与えます。既定の pert25 で、IEEE 演算では、少なくとも n = 90 までの gallery('kahan',n) に対して、列の交換が行われないことが保証されています。

kms — Kac-Murdock-Szego テプリッツ行列

A = gallery('kms',n,rho) は、実数 rho に対して A(i,j) = rho^(abs(i-j)) となる nn 列の Kac-Murdock-Szego テプリッツ行列を返します。

複素数 rho に対しては、主対角より下側の要素が共役複素数であることを除いて、同じ式を保持します。rho の既定の設定は 0.5 です。

KMS 行列 A は、以下の特性をもちます。

  • L inv(gallery('triw',n,-rho,1))' および D(i,i) (1-abs(rho)^2)*eye(n) (ただし、D(1,1) = 1 を除く) を使って、LDL 分解が可能です。

  • 0 < abs(rho) < 1 の場合に限り、正定値です。

  • 逆行列 inv(A) は、三重対角行列です。

krylov — Krylov 行列

B = gallery('krylov',A,x,j) は、次の Krylov 行列を返します。

[x, Ax, A^2x, ..., A^(j-1)x]

ここで、Ann 列の行列、x は長さ n のベクトルです。既定の設定は、x ones(n,1)j = n です。

B = gallery('krylov',n) は、gallery('krylov',(randn(n)) と同じ結果になります。

lauchli — 矩形行列

A = gallery('lauchli',n,mu) は、次の (n+1)n 列の行列を返します。

[ones(1,n); mu*eye(n)]

Lauchli 行列は、最小二乗およびその他の問題においてよく知られた例です。A'*A の形成に危険を示します。引数 mu の既定の設定は sqrt(eps) です。

lehmer — 対称正定行列

A = gallery('lehmer',n) は、j >= i に対して A(i,j) = i/j となるような nn 列の対称正定行列を返します。

Lehmer 行列 A は、以下の特性をもちます。

  • A は、完全に非負です。

  • 逆行列 inv(A) は、三重対角行列で、明示的に知られています。

  • 次数は n <= cond(A) <= 4*n*n です。

leslie — 出生数と生存率の行列

L = gallery('leslie',a,b) は、レスリー人口モデルから平均出生数 a(1:n) と生存率 b(1:n-1) を使って、nn 列の行列を作成します。最初の行 (a(i) が含まれる) と第 1 サブ対角 (b(i) が含まれる) 以外は 0 です。有効なモデルにおいては、a(i) は非負、b(i) は正かつ 1 以下 (すなわち、0 < b(i) <= 1) です。

L = gallery('leslie',n) は、a = ones(n,1)b = ones(n-1,1) を使ってレスリー行列を作成します。

lesp — 実数で、影響を受け易い固有値をもつ三重対角行列

A = gallery('lesp',n) は、固有値が実数で、ほぼ [-2*N-3.5, -4.5] の区間で滑らかに分布する nn 列の行列を返します。

固有値が大きな負の値になるに連れて、その感度は指数的に大きくなります。行列は、D = diag(1!,2!,...,n!) を使った相似変換により、対角要素が同じで、非対角要素が 1 の対称三重対角行列と相似です。

lotkin — Lotkin 行列

A = gallery('lotkin',n) は、最初の行がすべて 1 に変更されたヒルベルト行列を返します。Lotkin 行列 A は、非対称で条件数が悪く、小さな負の固有値を多数もちます。その逆行列は整数要素をもち、明示的に知られています。

minij — 対称正定行列

A = gallery('minij',n) は、A(i,j) = min(i,j) となる nn 列の対称正定行列を返します。

minij 行列は、以下の特性をもちます。

  • 逆行列 inv(A) は三重対角行列で、(n,n) 要素が 1 であることを除いて、2 階差分行列を -1 倍したものに等価です。

  • ギブンス行列 2*A-ones(size(A)) は、三重対角の逆行列をもち、固有値は r=1:n に対して 0.5*sec((2*r-1)*pi/(4*n))^2 です。

  • (n+1)*ones(size(A))-A は、max(i,j) を要素としてもち、その逆行列は三重対角行列です。

moler — 対称正定行列

A = gallery('moler',n,alpha) は、nn 列の対称正定行列 U'*U を返します。ここで、U = gallery('triw',n,alpha) です。

既定の設定 alpha = -1 に対して、A(i,j) = min(i,j)-2 かつ A(i,i) = i です。A の固有値の 1 つは小さな値です。

neumann — 離散ノイマン問題からの特異行列 (スパース)

C = gallery('neumann',n) は、規則的なメッシュ上の通常の 5 点演算子を使って、ノイマン問題を離散化した結果として、nn 列の特異な対角優位行列を返します。引数 n は完全な二乗整数 n = m2 または 2 要素ベクトルです。C はスパース行列で、空ベクトル ones(n,1) について 1 次元のヌル空間をもちます。

normaldata — 標準正規分布からの任意のデータの配列

A = gallery('normaldata',[m,n,...],j) は、m x n x ... の多次元配列 A を返します。A の値は、標準正規分布からの無作為標本です。j は、区間 [0, 2^32-1] 内の整数値でなければなりません。異なる j の値で gallery('normaldata', ...) を呼び出すと、異なる配列が返されます。同じサイズ ベクトルおよび同じ j 入力で gallery('normaldata',...) を繰り返し呼び出すと、常に同じ配列が返されます。

gallery('normaldata', ...) の呼び出しでは、サイズ ベクトル入力 [m,n,...] を個々の入力 mn、... で置き換えることができます。たとえば、gallery('normaldata',[1,2,3,4],5)gallery('normaldata',1,2,3,4,5) と同じです。

[A,B,...] = gallery('normaldata',[m,n,...],j) は、異なる値を含んでいる複数の m x n x... の多次元配列 AB、... を返します。

A = gallery('normaldata',[m,n,...],j, classname) は、クラス classname の行列を生成します。classname は、'single' または 'double' のいずれかでなければなりません。

次は、j = 2 に対応する標準正規分布 N(0, 1) からの 6 行 4 列のデータの行列を生成します。

x = gallery('normaldata', [6, 4], 2);

次は、j = 17 に対応する標準正規分布 N(0, 1) からの任意の 1 x 2 x 3 のデータ配列を 1 つ生成します。

y = gallery('normaldata', 1, 2, 3, 17, 'single');

orthog — 直交行列、ほぼ直交行列

Q = gallery('orthog',n,k) は、次数 n の行列の k 番目のタイプの行列を返します。ここで、k > 0 は、厳密な意味の直交行列を選択し、k < 0 は、直交行列の対角スケーリングを選択します。以下のタイプを指定できます。

k = 1

Q(i,j) = sqrt(2/(n+1)) * sin(i*j*pi/(n+1))

2 階差分行列に対する対称な固有ベクトル行列。これは既定の設定です。

k = 2

Q(i,j) = 2/(sqrt(2*n+1)) * sin(2*i*j*pi/(2*n+1))

対称行列

k = 3

Q(r,s) = exp(2*pi*i*(r-1)*(s-1)/n) / sqrt(n)

ユニタリ、フーリエ行列。Q^4 は単位行列です。これは、fft(eye(n))/sqrt(n)! と同じ行列です。

k = 4

Helmert 行列: 下ヘッセンベルグ行列の置換行列で、最初の行は ones(1:n)/sqrt(n) です。

k = 5

Q(i,j) = sin(2*pi*(i-1)*(j-1)/n) + cos(2*pi*(i-1)*(j-1)/n)

Hartley 変換で作られる対称行列

k = 6

Q(i,j) = sqrt(2/n)*cos((i-1/2)*(j-1/2)*pi/n)

離散コサイン変換用の対称行列

k = -1

Q(i,j) = cos((i-1)*(j-1)*pi/(n-1))

チェビシェフ ヴァンデルモンドのような行列で、T(n-1) の極値に基づいています。

k = -2

Q(i,j) = cos((i-1)*(j-1/2)*pi/n))

チェビシェフ ヴァンデルモンドのような行列で、T(n) の零点に基づいています。

parter — pi に近い特異値をもつテプリッツ行列

C = gallery('parter',n) は、C(i,j) = 1/(i-j+0.5) となる行列 C を返します。

C は、コーシー行列かつテプリッツ行列です。C の特異値のほとんどは、pi に非常に近い値です。

pei — Pei 行列

A = gallery('pei',n,alpha) は、alpha がスカラーのとき、対称行列 alpha*eye(n) + ones(n) を返します。alpha の既定の設定は 1 です。alpha0 または -n の場合、行列は特異行列になります。

poisson — ポアソン方程式からのブロック三重対角 (スパース) 行列

A = gallery('poisson',n) は、nn 列のメッシュ上の 5 点演算子を使ってポアソン方程式を離散化した結果として、次数 n^2 のブロック三重対角 (スパース) 行列を返します。

prolate — 対称、条件数の悪いテプリッツ行列

A = gallery('prolate',n,w) は、パラメーター w をもつ nn 列の prolate 行列を返します。結果は、対称なテプリッツ行列です。

0 < w < 0.5 の場合、A は正定行列です。

  • A の固有値は、すべて異なり、(0,1) 内に存在します。その中で、01 の近傍に分類される傾向があります。

  • w の既定値は、0.25 です。

randcolu — 正規化された cols と指定した特異値をもつランダム行列

A = gallery('randcolu',n) は、単位 2 ノルムの列をもち、乱数の特異値をもつ nn 列のランダム行列で、その特異値の二乗は一様分布します。

A'*A は、gallery('randcorr',n) で作成された形式の相関行列です。

gallery('randcolu',x) は、xn 要素のベクトル (n > 1) の場合、ベクトル x で与えられる特異値をもつ nn 列のランダム行列です。ベクトル x は、二乗和が n となる非負の要素をもたなければなりません。

gallery('randcolu',x,m) は、m >= n の場合、mn 列の行列を生成します。

さらに、gallery('randcolu',x,m,k) には、以下のオプションがあります。

k = 0

diag(x) は、初期には乱数の直交変換に従い、その後、ギブンス回転が適用されます (既定の設定)。

k = 1

初期変換が省略されます。これは非常に高速で、結果の行列は、いくつかのゼロ要素をもつ可能性があります。

詳細は、次の参考文献を参照してください。

参照

[1] Davies, P. I. and N. J. Higham, “Numerically Stable Generation of Correlation Matrices and Their Factors,” BIT, Vol. 40, 2000, pp. 640-651.

randcorr — 指定した固有値をもつランダム相関行列

gallery('randcorr',n) は、一様分布する乱数の固有値をもつ nn 列のランダム相関行列を生成します。相関行列とは、対角上に 1 をもつ対称な半正定行列のことです (関数 corrcoef を参照)。

gallery('randcorr',x) は、ベクトル x で与えられる固有値をもつランダム相関行列を生成します。ここで、length(x) > 1 です。ベクトル x は、和が length(x) となる非負の要素をもたなければなりません。

さらに、gallery('randcorr',x,k) には、以下のオプションがあります。

k = 0

固有値を対角要素とする行列は、初期には乱数の直交相似変換に従い、その後、ギブンス回転が適用されます。

k = 1

初期変換が省略されます。これは非常に高速で、結果の行列は、いくつかのゼロ要素をもつ可能性があります。

詳細は、次の参考文献を参照してください。

参照

[1] Bendel, R. B. and M. R. Mickey, “Population Correlation Matrices for Sampling Experiments,” Commun. Statist. Simulation Comput., B7, 1978, pp. 163-182.

[2] Davies, P. I. and N. J. Higham, “Numerically Stable Generation of Correlation Matrices and Their Factors,” BIT, Vol. 40, 2000, pp. 640-651.

randhess — ランダム、直交上ヘッセンベルグ行列

H = gallery('randhess',n) は、nn 列の実数の乱数の直交上ヘッセンベルグ行列を返します。

H = gallery('randhess',x) は、x が長さ n (n > 1) の任意の実数ベクトルの場合、x の要素をパラメーターとして使用する非乱数の行列 H を作成します。

行列 H は、n-1 次のギブンス回転行列の積によって作られます。

randjorth — 乱数 J 直交行列

A = gallery('randjorth', n) は、正の整数 n に対して、以下のような nn 列の乱数の J-直交行列 A を返します。

  • J = blkdiag(eye(ceil(n/2)),-eye(floor(n/2)))

  • cond(A) = sqrt(1/eps)

J-直交とは、A'*J*A = J を意味します。この行列は、"双曲線" 行列と呼ばれることもあります。

A = gallery('randjorth', n, m) は、n および m が正の整数の場合、以下のような (n+m) 行 (n+m) 列の乱数の J-直交行列 A を返します。

  • J = blkdiag(eye(n),-eye(m))

  • cond(A) = sqrt(1/eps)

A = gallery('randjorth',n,m,c,symm,method)

は、以下のオプション入力引数を使用します。

  • ccond(A) にスカラー c を指定します。

  • symm — スカラー symm がゼロでない場合、対称を適用します。

  • method — スカラー method がゼロでない場合、qr を呼び出して基本的な直交変換を実行します。次元が大きい場合、qr の呼び出しは、既定の手法より大幅に高速となります。

rando — 要素が -1、0、または 1 で構成されるランダム行列

A = gallery('rando',n,k) は、要素が以下の離散分布のいずれかになる乱数の nn 列の行列を返します。

k = 1

等しい確率で、A(i,j) = 0 または 1 となる (既定の設定)。

k = 2

等しい確率で、A(i,j) = -1 または 1 となる。

k = 3

等しい確率で、A(i,j) = -10、または 1 となる。

引数 n は、2 要素ベクトルでもかまいません。その場合、行列は n(1)n(2) 列になります。

randsvd — 既定の特異値をもつランダム行列

A = gallery('randsvd',n,kappa,mode,kl,ku) は、cond(A) = kappa と分布モードによる特異値をもつ n 次のランダム帯 (多重対角) 行列を返します。n が 2 要素ベクトルの場合、An(1)n(2) 列の行列です。

引数 kl および ku は、A の主対角の上側と下側の対角の数をそれぞれ指定します。省略すると非スパース行列が生成されます。kl のみを与えると、kukl を既定の設定とします。

分布モード mode は、次のいずれかです。

1

1 つの大きな特異値

2

1 つの小さな特異値

3

幾何学的に分布する特異値 (既定の設定)

4

算術的に分布する特異値

5

対数的に一様分布する乱数の特異値

< 0

mode-1-2-3-4-5 のいずれかの場合、randsvdmodeabs(mode) として取り扱います。ただし、対角成分の特異値の順序はオリジナルの行列と逆で、大きい順ではなく、小さい順になります。

条件数 kappa の既定の設定は sqrt(1/eps) です。kappa < 0 の特別な場合では、A は、cond(A) = -kappa で、mode に従って分布する固有値をもつ乱数の対称正定非スパース行列になります。引数 kl および ku は、存在しても無視されます。

A = gallery('randsvd',n,kappa,mode,kl,ku,method) は、実行する計算方法を指定します。既定の設定は method = 0 です。一方、method = 1 は、大きな FLOPS を使用しますが、大きな次元の場合には大幅に高速です。

redheff — 要素が 1 と 0 で構成される Redheffer 行列

A = gallery('redheff',n) は、01 からなる nn 列の行列を返します。この行列は、j = 1 の場合または ij が割り切れる場合には A(i,j) = 1 によって定義され、その他の場合には A(i,j) = 0 によって定義されます。

Redheffer 行列は、以下の特性をもちます。

  • (n-floor(log2(n)))-1 個の固有値は 1 と等価です。

  • 実数固有値 (スペクトル半径) は、およそ sqrt(n) です。

  • 負の固有値は、およそ -sqrt(n) です。

  • 残りの固有値は小さいと推測されます。

  • すべての ε > 0 に対して、 であるときのみ、リーマンの仮説は true です。

Barrett と Jarvis は、"小さな固有値はすべて単位円 abs(Z) = 1 の内部に存在する" と推測し、この推測の証明は、n が大きくなるに連れて、ある固有値はゼロに近づくことの証明と共に、素数定理の新たな証明を生み出しています。

riemann — リーマン仮説に関連した行列

A = gallery('riemann',n) は、nn 列の行列を返します。この行列では、

がすべての ε > 0 に対して満たされる場合のみリーマン仮説が true となります。

リーマン行列は、次のように定義されます。

A = B(2:n+1,2:n+1) 

ここで、ij が割り切れる場合は 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 — 対称ハンケル行列

A = gallery('ris',n) は、対称な nn 列のハンケル行列を返します。次の要素をもちます。

A(i,j) = 0.5/(n-i-j+1.5) 

A の固有値は、π/2 および –π/2 の近くに集まっています。この行列は、F.N. Ris によって考案されました。

sampling - 悪条件の整数固有値をもつ非対称行列

A = gallery('sampling',x)。ここで、xn ベクトルで、nn 列の行列であり、i ~= j に対して A(i,j) = X(i)/(X(i)-X(j)) で、A(j,j) は列 j の非対称要素の合計です。A は、固有値 0:n-1 をもちます。固有値 0 および n-1 に対して、対応する固有ベクトルは X および ones(n,1) です。

固有値は悪条件です。A i ~= j に対して A(i,j) + A(j,i) = 1 のプロパティをもちます。

A の左固有ベクトルには、明示的な式を使用できます。スカラー n の場合、sampling(n)sampling(1:n) と同じです。この行列の特殊なケースは、標本理論内に現れます。

smoke — 'smoke ring' の疑似スペクトルをもつ複素行列

A = gallery('smoke',n) は、主対角より 1 つ上側の対角要素が 1(n,1) 要素が 1、対角上の各要素が単位円上のべき乗根である nn 列の行列を返します。

A = gallery('smoke',n,1) は、要素 A(n,1) がゼロであることを除いて同じ行列を返します。

gallery('smoke',n,1) の固有値は、単位円上の n 番目の根です。gallery('smoke',n) の固有値は、単位円上の n 番目の根を 2^(1/n) 倍したものです。

toeppd — 対称正定テプリッツ行列

A = gallery('toeppd',n,m,w,theta) は、nn 列の対称半正定 (SPD) テプリッツ行列を返します。この行列は、m 個の rank 2 (または、特定の theta の場合は rank 1) の SPD テプリッツ行列の和で構成されます。特に、

T = w(1)*T(theta(1)) + ... + w(m)*T(theta(m))

ここで、T(theta(k))(i,j) 要素は、cos(2*pi*theta(k)*(i-j)) です。

既定の設定は、m = nw = rand(m,1)theta = rand(m,1) です。

toeppen — 五重対角のテプリッツ行列 (スパース)

P = gallery('toeppen',n,a,b,c,d,e) は、nn 列のスパース行列と以下の対角を含む五重対角のテプリッツ行列を返します。P(3,1) = aP(2,1) = b, P(1,1) = c, P(1,2) = d、および P(1,3) = e。ここで、ab, cd、および e はスカラーです。

既定の設定では、(a,b,c,d,e) = (1,-10,0,10,1) で、Rutishauser の行列を生成します。この行列の固有値は、ほぼ、線分 2*cos(2*t) + 20*i*sin(t) 上にあります。

tridiag — 三重対角行列 (スパース)

A = gallery('tridiag',c,d,e) は、主対角の 1 つ下の要素が c、主対角要素が d、主対角の 1 つ上の要素が e となる三重対角行列を返します。ベクトル c および e は、長さが length(d)-1 でなければなりません。

A = gallery('tridiag',n,c,d,e) は、cde がすべてスカラーの場合、主対角の 1 つ下の要素が c、主対角要素が d、主対角の 1 つの上の要素が e となる次数 n のテプリッツ三重対角行列を生成します。この行列は、次の固有値をもちます。

d + 2*sqrt(c*e)*cos(k*pi/(n+1))

ここで、k = 1:n です。([1] を参照)

A = gallery('tridiag',n) は、A = gallery('tridiag',n,-1,2,-1) と同じです。これは、対称な正定 M 行列 (2 階差分行列の負行列) です。

triw — ウィルキンソンその他により議論された上三角行列

A = gallery('triw',n,alpha,k) は、主対角要素が 1、k (k >= 0) 番目までの上側対角要素が alpha となる上三角行列を返します。

次数 n は、2 要素ベクトルでもかまいません。その場合、n(1)n(2) 列の上台形行列になります。

Ostrowski『"On the Spectrum of a One-parametric Family of Matrices," J. Reine Angew. Math., 1954』は以下のことを示しています。

cond(gallery('triw',n,2)) = cot(pi/(4*n))^2,

かつ、大きな abs(alpha) に対して、cond(gallery('triw',n,alpha)) は、およそ abs(alpha)^n*sin(pi/(4*n-2)) です。

-2^(2-n)(n,1) 要素に加えると、triw(n) は特異行列になります。最初の列のすべての要素に -2^(1-n) を加えても同様です。

uniformdata — 標準一様分布からの任意のデータの配列

A = gallery('uniformdata',[m,n,...],j) は、m x n x ... の多次元配列 A を返します。A の値は、標準一様分布からの無作為標本です。j は、区間 [0, 2^32-1] 内の整数値でなければなりません。異なる j の値で gallery('uniformdata', ...) を呼び出すと、異なる配列が返されます。同じサイズ ベクトルおよび同じ j 入力で gallery('uniformdata',...) を繰り返し呼び出すと、常に同じ配列が返されます。

gallery('uniformdata', ...) の呼び出しでは、サイズ ベクトル入力 [m,n,...] を個々の入力 mn、... で置き換えることができます。たとえば、gallery('uniformdata',[1,2,3,4],5)gallery('uniformdata',1,2,3,4,5) と同じです。

[A,B,...] = gallery('uniformdata',[m,n,...],j) は、異なる値を含んでいる複数の m x n x... の多次元配列 AB、... を返します。

A = gallery('uniformdata',[m,n,...],j, classname) は、クラス classname の行列を生成します。classname は、'single' または 'double' のいずれかでなければなりません。

次は、j = 2 に対応する [0, 1] の一様分布からの 6 行 4 列のデータの行列を生成します。

x = gallery('uniformdata', [6, 4], 2);

次は、j = 17 に対応する [0, 1] の一様分布からの任意の 1 x 2 x 3 のデータ配列を 1 つ生成します。

y = gallery('uniformdata', 1, 2, 3, 17, 'single');

wathen — 有限要素行列 (スパース、ランダム要素)

A = gallery('wathen',nx,ny) は、nn 列の乱数のスパース有限要素行列を返します。ここで、n = 3*nx*ny + 2*nx + 2*ny + 1 です。

行列 A は 2 つの次元において 8 ノード (serendipity) 要素からなる規則的な nxny 列グリッドに対して、正確に "矛盾のない質量行列" です。A は、このルーチンの中でランダムに選ばれる任意の (正の) "密度" rho(nx,ny) に対して、対称正定行列です。

A = gallery('wathen',nx,ny,1) は、次を満たすように対角にスケーリングされた行列を返します。

0.25 <= eig(inv(D)*A) <= 4.5

ここで、任意の正の整数 nxny および任意の密度 rho(nx,ny) に対して、D = diag(diag(A)) です。

wilk — ウィルキンソンにより工夫、検討された各種の行列

gallery('wilk',n) は、n の値に応じて、さまざまな行列または線形システムを返します。

n = 3

不正確な解を例示する上三角システム Ux=b

n = 4

悪い条件数の下三角システム Lx=b

n = 5

hilb(6)(1:5,2:6)*1.8144 対称正定行列

n = 21

三重対角行列 W21+。固有値問題。詳細は、[2] を参照してください。

参照

[1] The MATLAB gallery of test matrices is based upon the work of Nicholas J. Higham at the Department of Mathematics, University of Manchester, Manchester, England. Further background can be found in the books MATLAB® Guide, Second Edition, Desmond J. Higham and Nicholas J. Higham, SIAM, 2005, and Accuracy and Stability of Numerical Algorithms, Nicholas J. Higham, SIAM, 1996.

[2] Wilkinson, J. H., The Algebraic Eigenvalue Problem, Oxford University Press, London, 1965, p.308.

参考

| | | |

この情報は役に立ちましたか?