Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

gallery

説明

[A1,A2,...,Am] = gallery(matrixname,P1,P2,...,Pn) は、matrixname で指定されたテスト行列のファミリを生成します。P1,P2,...,Pn は、個々の行列ファミリに必要な入力パラメーターです。呼び出し構文で使用される入力パラメーター P1,P2,...,Pn の数は、行列ごとに異なります。各行列ファミリの正確な呼び出し構文については、matrixnameセクションで説明しています。

さらに、[A1,A2,...,Am] = gallery(matrixname,P1,P2,...,Pn,typename) は、生成されたテスト行列のデータ型を指定します。

A = gallery(3) は、摂動に敏感な悪条件の 3 行 3 列の行列を生成します。

A = gallery(5) は、丸め誤差に対して敏感な興味深い固有値問題を使用して 5 行 5 列の行列を生成します。

すべて折りたたむ

いくつかのテスト行列の行列要素をスケーリングした色として表示します。

サイズが 11 行 11 列の循環行列を作成します。循環行列は、1 つ右に要素を循環移動して、各行が 1 つ前の行から取得される特殊なテプリッツ行列です。

C = gallery('circul',11);

C の行列要素のイメージを表示します。現在のカラーマップを示すカラー バーをグラフに追加します。

imagesc(C)
axis square
colorbar

サイズが 11 行 11 列の grcar 行列を作成します。grcar 行列は、下対角要素上に -1、主対角上に 1、および主対角の上側にある最初の数対角上に 1 をもつ非対称テプリッツ行列です。

G = gallery('grcar',11);

G の行列要素のイメージを表示します。

imagesc(G)
axis square
colorbar

サイズが 11 行 11 列の minij 行列を作成します。minij 行列 M は、要素 M(i,j) = min(i,j) をもつ対称正定値行列です。

M = gallery('minij',11);

M の行列要素のイメージを表示します。

imagesc(M)
axis square
colorbar

整数行列は、行列式が正確に 1 または -1 である場合にのみ再び整数行列になる逆行列をもちます。行列式 1 または -1 をもつ二乗整数行列は、ユニモジュラー行列とも呼ばれます。この行列の例に gallery('dramadah',n) があります。これは行列式が 1 または -1 の 0 および 1 からなる nn 列の行列です。

6 行 6 列の dramadah 行列を作成します。その行列式と逆行列を計算します。

A = gallery('dramadah',6)
A = 6×6

     1     1     0     1     0     0
     0     1     1     0     1     0
     0     0     1     1     0     1
     1     0     0     1     1     0
     1     1     0     0     1     1
     0     1     1     0     0     1

detA = det(A)
detA = -1
invA = inv(A)
invA = 6×6

    -1    -2    -3     4    -2     5
     1     1     1    -2     1    -2
    -1    -1    -2     3    -2     4
     1     1     2    -2     1    -3
     0     1     1    -1     1    -2
     0     0     1    -1     1    -1

元の行列の行列式が -1 であるため、行列の逆行列は整数要素のみをもちます。

この例では、行列 A=QR (Q は直交行列、R は上三角行列) の QR 分解を計算するハウスホルダー変換の使用方法を示します。

最初に、乱数発生器を既定値に設定し、標準正規分布から 6 行 3 列の乱数方形行列を作成します。

rng('default')
A = randn(6,3)
A = 6×3

    0.5377   -0.4336    0.7254
    1.8339    0.3426   -0.0631
   -2.2588    3.5784    0.7147
    0.8622    2.7694   -0.2050
    0.3188   -1.3499   -0.1241
   -1.3077    3.0349    1.4897

ハウスホルダー行列を作成するには、関数 [v,beta] = gallery('house',x) を使用します。この関数は、列ベクトル x を取り、H=I-βvvT がハウスホルダー行列となる v および β を返します。ハウスホルダー変換は、ベクトル x の最初の要素を除くすべての要素をゼロ設定するために使用されます。

ハウスホルダー行列 P1 を計算し、変換 A1=P1A を実行します。行列 A1 では、最初の列の対角より下側にはゼロのみ含まれます。

[v1,beta1] = gallery('house',A(:,1));
P1 = eye(6) - beta1*(v1*v1');
A1 = P1*A
A1 = 6×3

   -3.3630    2.8841    1.0421
   -0.0000    1.9024    0.0858
         0    1.6571    0.5314
         0    3.5028   -0.1350
   -0.0000   -1.0788   -0.0983
    0.0000    1.9227    1.3835

次に、A2=P2A1 で、最初の列と 2 番目の列の対角より下側にゼロのみが含まれるように、ハウスホルダー行列 P2 を計算します。

[v2,beta2] = gallery('house',A1(2:end,2));
v2 = [0;v2];
P2 = eye(6) - beta2*(v2*v2');
A2 = P2*A1
A2 = 6×3

   -3.3630    2.8841    1.0421
   -0.0000   -4.8472   -0.6885
    0.0000         0    0.3413
    0.0000   -0.0000   -0.5368
   -0.0000    0.0000    0.0255
    0.0000    0.0000    1.1630

最後に、A3=P3A2 で下対角要素にゼロのみが含まれるようハウスホルダー行列 P3 を計算します。

[v3,beta3] = gallery('house',A2(3:end,3));
v3 = [0;0;v3];
P3 = eye(6) - beta3*(v3*v3');
R = P3*A2
R = 6×3

   -3.3630    2.8841    1.0421
   -0.0000   -4.8472   -0.6885
   -0.0000   -0.0000   -1.3258
    0.0000   -0.0000    0.0000
   -0.0000    0.0000    0.0000
    0.0000   -0.0000    0.0000

行列 R=P3P2P1A は上三角行列です。ハウスホルダー行列は involutory (行列が独自の逆行列と等しい) ため、A の QR 分解は、Q=P1P2P3A=QR になります。

Q = P1*P2*P3
Q = 6×6

   -0.1599   -0.0057   -0.6699    0.4983   -0.2036   -0.4857
   -0.5453   -0.3952   -0.1759   -0.6432    0.1342   -0.2895
    0.6717   -0.3386    0.1647   -0.0991    0.1551   -0.6109
   -0.2564   -0.7239    0.3290    0.5244    0.0805    0.1434
   -0.0948    0.2221   -0.0962    0.1872    0.9463   -0.0433
    0.3888   -0.3948   -0.6130   -0.1346    0.1203    0.5335

関数 qr を使用してこの結果を計算と比較します。

[Qa,Ra] = qr(A)
Qa = 6×6

   -0.1599   -0.0057   -0.6699    0.4983   -0.2036   -0.4857
   -0.5453   -0.3952   -0.1759   -0.6432    0.1342   -0.2895
    0.6717   -0.3386    0.1647   -0.0991    0.1551   -0.6109
   -0.2564   -0.7239    0.3290    0.5244    0.0805    0.1434
   -0.0948    0.2221   -0.0962    0.1872    0.9463   -0.0433
    0.3888   -0.3948   -0.6130   -0.1346    0.1203    0.5335

Ra = 6×3

   -3.3630    2.8841    1.0421
         0   -4.8472   -0.6885
         0         0   -1.3258
         0         0         0
         0         0         0
         0         0         0

マシンの精度内で A=QR であることを検証します。

norm(A - Q*R)
ans = 9.0996e-16

この例では、複素平面内にサイズが 18 行 18 列の 20,000 のランダムな循環行列サンプルからの固有値の分布をプロットします。行列要素は、セット {–0.4,0.4} から等間隔でサンプリングされます。

固有値を保存する、サイズが 18 行 20,000 列の配列 E を作成します。

E = zeros(18,20000);

乱数発生器を既定値に設定します。for ループ ステートメントで次の操作を 20,000 回繰り返します。

  • -0.4 または 0.4 の乱数要素をもつ 1 行 18 列の行ベクトル x を作成します。

  • ベクトル x を入力として使用して、ランダムな循環行列 A を作成します。

  • A の固有値を求めて、それらを E に保存します。

rng('default')
for i = 1:20000
  x = -0.4 + 0.8*randi([0 1],1,18);
  A = gallery('circul',x);
  E(:,i) = eig(A);
end

複素平面に固有値 E を表示する散布図を作成します。x 軸と y 軸の範囲を -3 ~ 3 に設定します。

scatter(real(E(:)),imag(E(:)),'b.')
xlabel('Re(E)')
ylabel('Im(E)')
xlim([-3 3])
ylim([-3 3])
axis square

テスト行列 gallery(3) を作成します。テスト行列は、摂動に敏感な固有値で悪条件です。

A = gallery(3)
A = 3×3

  -149   -50  -154
   537   180   546
   -27    -9   -25

eig を使用して A の固有値を計算します。

e = eig(A)
e = 3×1

    1.0000
    2.0000
    3.0000

condeig を使用して固有値条件数を計算します。

c = condeig(A)
c = 3×1

  603.6390
  395.2366
  219.2920

条件数は、A の行列要素の摂動によって、その固有値におよそ 200 ~ 600 倍大きい上限の摂動が生じることを示します。

次に、一様分布の乱数の行列を追加して、A に対して小規模な摂動を加えます。乱数発生器のシードを既定値に設定します。0 ~ 0.001 (等値を含まない) の区間の要素をもつランダム行列を A に追加します。

rng('default')
Ap = A + 1e-3*rand(3)
Ap = 3×3

 -148.9992  -49.9991 -153.9997
  537.0009  180.0006  546.0005
  -26.9999   -8.9999  -24.9990

摂動された行列 Ap の固有値を計算します。

ep = eig(Ap)
ep = 3×1

    0.7399
    2.1437
    3.1188

摂動された固有値と元の固有値の差を表示します。

delta = ep - e
delta = 3×1

   -0.2601
    0.1437
    0.1188

固有値の変更を、固有値条件値で指定された上限と比較します。上限は、固有値の摂動とほぼ同じ桁数です。

delta_upper = 1e-3*c
delta_upper = 3×1

    0.6036
    0.3952
    0.2193

テスト行列 A = gallery(5) を作成します。テスト行列は、丸め誤差の影響を受ける固有値をもちます。

A = gallery(5)
A = 5×5

          -9          11         -21          63        -252
          70         -69         141        -421        1684
        -575         575       -1149        3451      -13801
        3891       -3891        7782      -23345       93365
        1024       -1024        2048       -6144       24572

正確な演算において、行列 Aλ=0 の 5 分割の固有値をもちます (厳密には、A は代数的多重度が 5 で幾何学的多重度が 1 の固有値 0 をもちます)。つまり、A の正確な特性多項式は λ5=0 となります。A^5 がゼロ行列であることを確認します。

Afifth = A^5
Afifth = 5×5

     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0

eig を使用して、これらの結果を固有値の数値計算と比較します。関数 eig は、A の小さな 5 つの固有値を返します。

e = eig(A)
e = 5×1 complex

  -0.0347 + 0.0258i
  -0.0347 - 0.0258i
   0.0138 + 0.0401i
   0.0138 - 0.0401i
   0.0419 + 0.0000i

これは、A の固有値の数値計算が、計算に使用されている浮動小数点精度により丸め誤差に大きく影響を受けることを示しています。

固有値の数値計算は、正確な演算の対応する計算とは大きく異なります。A の正確な固有値に近い固有値を求める代わりに、関数 eig は、A に近い行列の固有値を求めます。これを説明するために、複素平面に A の正確な数値固有値をプロットします。

plot(0,0,'bo',real(e),imag(e),'r*')
axis([-0.1 0.1 -0.1 0.1])
axis square

この図は、数値固有値が、原点を中心とする、複素平面の正五角形の頂点上にあることを示してます。五角形の半径はおよそ 0.04 です。

次に、A に近い 20 個の行列の固有値を計算します。乱数発生器を既定値に設定し、eps を乗算した標準正規分布から得た乱数値で A に摂動を与えます。20 個の摂動された行列の数値固有値をプロットします。

E = zeros(20,5);
rng('default')
for i = 1:20
  E(i,:) = eig(A + eps*randn(5).*A);
end
plot(0,0,'bo',real(e),imag(e),'r*',real(E),imag(E),'k.')
axis([-0.1 0.1 -0.1 0.1])
axis square

この図は、A に摂動を与えると、A の固有値を表す元の五角形が方向を反転させることを示しています。20 個の摂動された行列の固有値は、0.01 ~ 0.07 の半径をもつ五角形の頂点上にあります。摂動された行列の計算された固有値は、元の行列の計算された固有値と同様に動作します。計算された固有値の不正確性は、gallery(5) の感度が原因です。

入力引数

すべて折りたたむ

行列ファミリの名前。文字ベクトルまたは string スカラーとして指定します。引数 matrixname は、以下にリストされているように生成されたテスト行列のファミリを決定します。

'binomial'

説明: involutory 行列の倍数である二項行列

構文:

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

プロパティ:

  • 行列 B = A*2^((1-n)/2) は involutory (逆行列の行列) です。

'cauchy'

説明: コーシー行列

構文:

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

  • A = gallery('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'

説明: チェビシェフ スペクトル微分行列

構文:

  • A = gallery('chebspec',n,k) は、サイズ nn 列のチェビシェフ スペクトル微分行列を返します。0 (既定) または 1 の値を指定できる引数 k は、出力行列の特性を決定します。

    k = 0 (境界条件なし) の場合、A はべき零元です。これは、A^c = 0 となる正の整数 c が存在することを意味します。行列 A はヌル ベクトル ones(n,1) をもちます。

    k = 1 に対して、A は正則かつ良条件で、その固有値は負の実数部をもちます。

プロパティ:

  • k = 0 の場合、行列 A は、ゼロの固有値をもつサイズ n のジョルダン ブロックに似ています。B = inv(P)*A*P となるような同じサイズの可逆の行列 P がある場合、2 つの行列 A および B が同様に呼び出されます。

  • 両方の k の場合、チェビシェフ スペクトル微分行列の固有ベクトル行列は、悪条件です。

'chebvand'

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

構文:

  • A = gallery('chebvand',x) は、チェビシェフ多項式を計算する点を定義する点 x からなるベクトルに基づいて (主要な) チェビシェフ ヴァンデルモンド行列を生成します。引数 x は長さが n のベクトルで、A のサイズは nn 列です。A の入力は A(i,j) = Ti – 1(x(j)) です。ここで Ti – 1 は、次数 i – 1 の第 1 種のチェビシェフ多項式です。x がスカラーの場合、A を計算するために、区間 [0,1] に等間隔な点 x が使用されます。

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

'chow'

説明: 特異なテプリッツ下ヘッセンベルグ行列

構文:

  • A = gallery('chow',n,alpha,delta) は、nn 列の下ヘッセンベルグ行列である、次数 n の Chow 行列を返します。行列 A は次のように定義されます。

    A=Hα+δI

    ここで、Hα の行列要素は、(i – j + 1) ≥ 0 に対して Hα(i,j) = α(i – j + 1) で、δ は係数、および I は nn 列の単位行列です。

  • A = gallery('chow',n) は、alphadelta にそれぞれ既定値 10 を使用します。

プロパティ:

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

'circul'

説明: 循環行列

構文:

  • A = gallery('circul',v) は、最初の行が長さ n のベクトル v である nn 列の循環行列を返します。循環行列は、1 つ右に要素を循環移動して、各行が 1 つ前の行から取得される特殊なテプリッツ行列です。v がスカラーの場合、A = gallery('circul',1:v) です。

プロパティ:

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

参考: toeplitz

'clement'

説明: ゼロを対角要素とする三重対角行列

構文:

  • A = gallery('clement',n,k) は、主対角にゼロをもつ、nn 列の三重対角行列を返します。k = 0 (既定) の場合、A は非対称です。k = 1 の場合、A は対称です。

プロパティ:

  • A = gallery('clement',n,1)B = gallery('clement',n,0) と対角的に相似です。ここで、B = inv(D)*A*D となるような同じサイズの対角行列 D が存在します。

  • n が奇数の場合、A は特異行列です。

  • A の固有値は明示的に知られています。固有値には、プラス、マイナスの数字 n-1n-3n-5...1 または 0 が含まれます。

  • gallery('tridiag',x,y,z) では前の 2 つのプロパティも保持されます。ここで y = zeros(n,1) です。入力ベクトル y または n の長さが奇数の場合、gallery('tridiag',x,y,z) は特異行列です。固有値は、プラスとマイナスの対ですが、明示的に知られていません。

  • 奇数の n = 2*m+1k = 0 の場合、gallery('clement',n,0) は、t = 0:msqrt((2*m+1)^2 - (2*t+1).^2) と等しい m+1 特異値をもちます。

'compar'

説明: 比較行列

構文:

  • A = gallery('compar',B,k) は、B の比較行列を返します。

    k = 0 (既定) では、i == j の場合は A(i,j) = abs(B(i,j))、それ以外の場合は A(i,j) = -abs(B(i,j)) です。

    k = 1 では、A = gallery('compar',B,1)B の各対角要素をその絶対値で置き換え、各非対角要素を同じ行内の非対角要素の負の最大絶対値に置き換えます。

プロパティ:

  • B が三角形の場合、A = gallery('compar',B,1) も三角形になります。

'condex'

説明: 行列の条件数推定の反例

構文:

  • A = gallery('condex',n,k,alpha) は、条件数の推定に対する反例行列を返します。スカラー パラメーター alpha (既定値は 100) を取り、サイズ nn 列の行列を返します。

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

    k = 1

    4 行 4 列

    LINPACK の RCOND に対する反例

    k = 2

    3 行 3 列

    LINPACK の RCOND に対する反例

    k = 3

    任意

    LINPACK の RCOND に対する反例 (alpha に依存しない)

    k = 4 (既定)

    n >= 4

    LAPACK's RCOND に対する反例 (この行列 (counter 例) の逆行列)

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

'cycol'

説明: 列を巡回的に繰り返す行列

構文:

  • A = gallery('cycol',n,k) は、循環する反復列からなる nn 列の行列を返します。1 サイクルは randn(n,k) で定義されている列から構成されます。したがって、行列 A のランクは、k を超えることはありません。また、k は、スカラーでなければなりません。引数 k は既定値が round(n/4) のスカラーで、n を均等に割り切る必要はありません。

  • A = gallery('cycol',[m n],k) は、循環する反復列からなる mn 列の行列を返します。1 サイクルは randn(m,k) で定義されている列から構成されます。

'dorr'

説明: 対角で、悪条件の三重対角行列 (スパース行列)

構文:

  • A = gallery('dorr',n,theta) は、小さな非負の値 theta に対して、悪条件の nn 列の対角優位の三重対角行列を定義する Dorr 行列を返します。theta の既定値は 0.01 です。

  • [v1,v2,v3] = gallery('dorr',n,alpha) は、Dorr 行列を定義するベクトルを返します。Dorr 行列そのものは gallery('tridiag',v1,v2,v3) と同じです。

'dramadah'

説明: 0 と 1 の行列

構文:

  • A = gallery('dramadah',n,k) は、01nn 列の行列です。n および k はどちらもスカラーでなければなりません。k = 0 および 1 の場合、mu(A) = norm(inv(A),'fro') は比較的大きくなりますが、必ずしも最大ではありません[2]。引数 k は、以下に示す出力行列の特性を決定します。

    k = 1 (既定)

    Aabs(det(A)) = 1 および mu(A) > c*(1.75)^2n を満たすテプリッツ行列かつユニモジュラー行列です。ここで、c は定数です。A の逆行列は、整数要素をもちます。

    k = 2

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

    k = 3

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

'fiedler'

説明: Fiedler 対称行列

構文:

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

プロパティ:

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

  • inv(A)det(A) の明示的な式は[3]に記載されており、Fiedler の著作です。これらの式は、非ゼロの (1,n) 要素と (n,1) 要素を除いて、inv(A) が三重対角行列であることを示しています。

'forsythe'

説明: 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'

説明: 悪条件の固有値をもつフランク行列

構文:

  • A = gallery('frank',n,k) は、既定値 k = 0 の場合、サイズ nn 列のフランク行列を返します。フランク行列は、行列式 1 の上ヘッセンベルグ行列です。k = 1 の場合、各要素は反対角成分 (1,n)(2,n-1)、…、(n,1) について反映されます。

プロパティ:

  • A の固有値は、エルミート多項式の零点として得られることがあります。これらは正で、逆数の組み合わせで存在します。

  • n が奇数の場合、1 は固有値です。

  • 最小固有値から半分、つまり最小固有値から floor(n/2) 個は悪条件です。

'gcdmat'

説明: 最大公約数行列

構文:

  • A = gallery('gcdmat',n) は、A(i,j)gcd(i,j) と等しい nn 列の行列を返します。

プロパティ:

  • 行列 A は対称正定値です。また、A.^r はすべての非負の r に対して対称な半正定値です。

'gearmat'

説明: Gear 行列

構文:

  • A = gallery('gearmat',n,i,j) は、下対角要素と上対角要素上に 1(1,abs(i)) 位置に sign(i)(n,n+1-abs(j)) 位置に sign(j)、および他のすべてに 0 をもつ nn 列の行列を返します。引数 i および j の既定の設定は、それぞれ n および -n です。これらは、-nn の整数でなければなりません。

プロパティ:

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

  • すべての固有値は 2*cos(a) という形式、固有ベクトルは [sin(w+a), sin(w+2a), …, sin(w+na)] という形式です。a と w は[4]に記載されています。

'grcar'

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

構文:

  • A = gallery('grcar',n,k) は、下対角上に -1、主対角上に 1、主対角の上側の k 対角上に 1 をもつ nn 列のテプリッツ行列を返します。k は整数でなければならず、既定値は k = 3 です。A は摂動に対して敏感な固有値をもちます。

'hanowa'

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

構文:

  • A = gallery('hanowa',n,alpha) は、次の形式の 4 つの n/2n/2 列ブロックをもつ 22 列のブロック行列を返します。

    [alpha*eye(n/2) -diag(1:n/2)
    diag(1:n/2)     alpha*eye(n/2)]

    引数 n は偶数の整数ではなければなりません。alpha の既定値は -1 です。A は、alpha ± k*i 型 (1 <= k <= n/2) の複素固有値をもちます。

'house'

説明: ハウスホルダー行列

構文:

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

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

    ここで、e1eye(n) の最初の列です。

    x が複素数の場合、sign(x) = exp(i*arg(x)) になります (これは、x が非ゼロのときに x./abs(x) と等しい)。x がゼロの場合、v はゼロおよび beta = 1 になります。

  • [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 = alpha*e1 (alpha >= 0) および k = 1 または k = 2 の場合、v はゼロ、beta = 1、および s = x(1) になります。この場合、H = eye(n) は単位行列になり、ハウスホルダー行列を厳密には満たしません。

'integerdata'

説明: 指定された範囲で一様分布からランダムにサンプリングされた整数の配列

構文:

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

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

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

  • [A1,A2,...,Am] = gallery('integerdata',[imin imax],[m,n,...],k) は、異なる値を含んでいる複数の m x n x... の多次元配列 A1A2、...、Am を返します。

  • [A1,A2,...,Am] = gallery('integerdata',[imin imax],[m,n,...],k,typename) は、typename 型の要素をもつ配列を生成します。typename は、'double' (既定)、'single''uint8''uint16''uint32''int8''int16'、または int32' でなければなりません。

参考: randi | rng

'invhess'

説明: 上ヘッセンベルグ行列の逆行列

構文:

  • A = gallery('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 の場合、gallery('invhess',n)gallery('invhess',1:n) と同じです。

プロパティ:

  • すべての i に対して x(1) ~= 0 および x(i+1) ~= y(i) の場合、行列 A は特異になりません。

  • A の逆行列は上ヘッセンベルグ行列です。

'invol'

説明: involutory 行列 (その行列の逆行列)

構文:

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

プロパティ:

  • 行列 B = (eye(n)-A)/2B = (eye(n)+A)/2 は冪等で、ここでは B*B = B となります。

参考: hilb

'ipjfact'

説明: 因子要素をもつハンケル行列

構文:

  • [A,beta] = gallery('ipjfact',n,k) は、nn 列のハンケル行列 A と、明示的に知られている行列式 beta を返します。A の逆行列も明示的に知られています。

    k = 0 (既定) の場合、A の要素は A(i,j) = factorial(i+j) です。k = 1 の場合、A の要素は A(i,j) = 1/factorial(i+j) です。

参考: hankel | toeplitz

'jordbloc'

説明: ジョルダン ブロック行列

構文:

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

'kahan'

説明: 上台形 Kahan 行列

構文:

  • A = gallery('kahan',n,theta,pert) は、条件数およびランクの推定に関して興味深い性質をもつ上台形行列を返します。たとえば、Kahan 行列は、列が置換された QR 分解を使用すると、行列の適切なランク評価が与えられない場合があることを示しています。

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

    列のピボットによる QR 分解が、丸め誤差の存在する列を交換しないようにするために、主対角要素に pert*eps*diag([n:-1:1]) として摂動を与えます。pert の既定値は 1e3 で、IEEE® 演算では、少なくとも n = 100 までの gallery('kahan',n) に対して、列の交換が一切行われないようになっています (既定値が theta = 1.2 の場合)。

'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 です。

プロパティ:

  • L = inv(gallery('triw',n,-rho,1))' をもつ A の LDL 分解が存在し、D の最初の要素を除き、D = (1-abs(rho)^2)*eye(n)、D(1,1) = 1 となります。

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

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

'krylov'

説明: Krylov 行列

構文:

  • A = gallery('krylov',B,x,k) は Krylov 行列を返します。ここで Bnn 行の行列、x は長さが n のベクトルです。また k は整数でなければなりません。Krylov 行列は次に等しくなります。

    [x, B*x, B^2*x, ..., B^(k-1)*x]

    これは列ベクトル x の場合です。引数 xk を指定しない場合、x = ones(n,1)k = n の既定値を取ります。

  • スカラー nA = gallery('krylov',n) は、B = randn(n) をもつ gallery('krylov',B) と同じです。

'lauchli'

説明: Lauchli 方形行列

構文:

  • A = gallery('lauchli',n,mu) は、[ones(1,n); mu*eye(n)] 形式の (n+1)n 列の行列を返します。引数 mu の既定の設定は sqrt(eps) です。

プロパティ:

  • Lauchli 行列は、最小二乗およびその他の問題においてよく知られた例です。方程式 ATAx^=ATb を解くときに A'*A の形成に危険を示します。行列 A'*A は通常、初期行列 A よりも丸め誤差の影響を受けます。

'lehmer'

説明: Lehmer 対称正定値行列

構文:

  • A = gallery('lehmer',n) は、j >= i の場合に A(i,j) = i/j となり、それ以外の場合は A(i,j) = j/i となる nn 列の対称正定値行列を返します。

プロパティ:

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

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

  • 次数 nn <= cond(A) <= 4*n*n を満たします。

'leslie'

説明: レスリー人口モデルからの出生数と生存率の行列

構文:

  • A = gallery('leslie',x,y) は、レスリー人口モデルと平均出生数 x(1:n) と生存率 y(1:n-1) を使用して得られる nn 列の行列です。行列の要素は、x(i) を含む最初の行と y(i) を含む 1 番目の下対角要素を除き、大部分がゼロ値です。有効なモデルにおいては、x の要素は非負、y の要素は 1 以下の正の値 (つまり 0 < y(i) <= 1) です。

  • A = gallery('leslie',n) は、x = ones(n,1)y = ones(n-1,1) を使用してレスリー行列を作成します。

'lesp'

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

構文:

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

プロパティ:

  • 固有値がより小さい負の値になるにつれて、その感度は指数的に大きくなります。

  • 行列は、A = inv(D)*B*D を使った相似変換により、対角要素が同じで、非対角要素が 1 の対称三重対角行列 B と相似で、D = diag(factorial(1:n)) となります。

'lotkin'

説明: Lotkin 行列

構文:

  • A = gallery('lotkin',n) は、最初の行がすべて 1 に変更されたヒルベルト行列を返します。

プロパティ:

  • Lotkin 行列 A は、非対称かつ悪条件で、小さな負の固有値を多数もちます。

  • その逆行列は整数要素をもち、明示的に知られています[5]

'minij'

説明: 対称正定値行列

構文:

  • A = gallery('minij',n) は、要素 A(i,j) = min(i,j) をもつ nn 列の対称正定値行列を返します。

プロパティ:

  • A は、0.25*sec(r*pi/(2*n+1)).^2 (r = 1:n) の固有値をもちます。

  • 逆行列 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 です。

'moler'

説明: 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 となります。

プロパティ:

  • alpha = -1 の場合、A の固有値の 1 つは小さい値です。これは、他の固定値に比べ数桁分異なります。

'neumann'

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

構文:

  • A = gallery('neumann',n) は、規則的なメッシュ上で通常の 5 点作用素を使用してノイマン問題を離散化した結果として、スパースの nn 列の特異な対角優位行列を返します。引数 n は完全な二乗整数でなければなりません。A はスパース行列で、ヌル ベクトル ones(n,1) の 1 次元のヌル空間をもちます。

  • A = gallery('neumann',[m n]) は同じ行列を返しますが、サイズは m*nm*n 列です。引数 m および n は正の整数でなければなりません。ここで m は 1 より大きくなければなりません。

'normaldata'

説明: 標準正規 (ガウス) 分布からランダムにサンプリングされた数値の配列

構文:

  • A = gallery('normaldata',[m,n,...],k) は、m x n x... の多次元配列 A を返します。A の要素は標準正規分布からランダムにサンプリングされた数値です。k はランダム シードで、区間 [0, 2^32-1] 内の整数値でなければなりません。異なる k の値で gallery('normaldata',...) を呼び出すと、異なる配列が返されます。同じサイズ ベクトル [m,n,...] および同じ値 kgallery('normaldata',...) を繰り返し呼び出すと、常に同じ配列が返されます。

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

  • [A1,A2,...,Am] = gallery('normaldata',[m,n,...],k) は、異なる値を含んでいる複数の m x n x... の多次元配列 A1A2、...、Am を返します。

  • [A1,A2,...,Am] = gallery('normaldata',[m,n,...],k,typename) は、typename 型の要素をもつ配列を生成します。typename'double' (既定) または 'single' でなければなりません。

参考: randn | rng

'orthog'

説明: 直交行列、ほぼ直交行列

構文:

  • A = gallery('orthog',n,k) は、次数 n の行列の k 番目のタイプの行列を返します。ここで k > 0 は、厳密な意味の直交行列を返し、k < 0 は、異なる対角スケーリングの直交行列を返します。

    k = 1 (既定)

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

    2 階差分行列 gallery('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 行列: 下ヘッセンベルグ行列の置換行列で、最初の行は ones(1,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))

    チェビシェフ ヴァンデルモンドのような行列で、第 1 種 T(n-1) のチェビシェフ多項式の極値に基づいています。この行列は対称です。行列の各偶数列 (行) ベクトルは各奇数列 (行) ベクトルと直交します。つまり、偶数 i および奇数 j の場合 A(i,:)*A(j,:)' = 0 となります。

    k = -2

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

    チェビシェフ ヴァンデルモンドのような行列で、T(n) の零点に基づいています。この行列には、相互に直行する行ベクトル、つまり ij が等しくない A(i,:)*A(j,:)' = 0 行ベクトルがあります。行列 A*A' は単位行列ではなく、対角行列です。

'parter'

説明: Parter 行列

構文:

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

プロパティ:

  • A は、コーシーおよびテプリッツ行列です。

  • A の特異値のほとんどは、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'

説明: Prolate 行列

構文:

  • A = gallery('prolate',n,alpha) は、パラメーター alpha を使用して nn 列の prolate 行列を返します。結果は、対称な悪条件のテプリッツ行列です。0 < alpha < 0.5 の場合、A は正定値です。

プロパティ:

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

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

'randcolu'

説明: 正規化された列と指定した特異値をもつランダム行列

構文:

  • A = gallery('randcolu',n) は、単位 2 ノルムの正規化された列と、一様分布からの乱数の特異値をもつ nn 列のランダム行列を生成します。

    A'*A は、gallery('randcorr',n) で生成された行列と類似する形式の相関行列です。後者の行列の固有値は一様分布されますが、前者の場合は、固有値の平方根が一様分布されます。

  • A = gallery('randcolu',x) は、ベクトル x によって与えられた特異値をもつ nn 列のランダム行列を生成します。ここで、x は長さが n (n > 1) のベクトルです。ベクトル x は、二乗和が n となる非負の要素をもたなければなりません。この行列には、単位 2 ノルムの正規化された列もあります。

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

  • A = gallery('randcolu',__,m,k) は、k に基づいて追加のオプションを提供します。

    k = 0 (既定)

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

    k = 1

    初期変換が省略されます。これは、テスト行列を生成するときには高速で処理されますが、一般的に結果の行列には多くのゼロ要素が含まれます。

'randcorr'

説明: 指定した固有値をもつランダム相関行列

構文:

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

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

  • A = gallery('randcorr',x,k) は、k に基づいて追加のオプションを提供します。

    k = 0 (既定)

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

    k = 1

    初期変換が省略されます。これは、テスト行列を生成するときには高速で処理されますが、一般的に結果の行列には多くのゼロ要素が含まれます。

参考: corrcoef

'randhess'

説明: 乱数の直交上ヘッセンベルグ行列

構文:

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

  • A = gallery('randhess',x) は、x の要素をパラメーターとして使用して非乱数の A を作成します。x は、長さが n (n > 1) の実数ベクトルでなければなりません。

    どちらの場合でも、行列 A は、n-1 ギブンス回転の積から作成されます。

'randjorth'

説明: 乱数 J 直交行列

構文:

  • A = gallery('randjorth',n) は、関係 A'*J*A = J を満たす nn 列の乱数 J 直交行列 A を生成します (このような行列は "双曲線" とも呼ばれます)。ここでは、J = blkdiag(eye(ceil(n/2)),-eye(floor(n/2)))、および cond(A) = sqrt(1/eps) となります。

  • 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,alpha,symm,method)

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

    • alphacond(A) = alpha を指定します。alpha は 1 以上でなければなりません。

    • symm — 対称性を適用するかどうかを選択します。スカラー symm が 0 の場合 A は非対称です。スカラー symm が 1 または非ゼロの場合 A は対称です。

    • methodqr を呼び出して、基本的な直交変換を実行するかどうかを選択します。スカラー method が 0 の場合 qr は呼び出されません。スカラー method が 1 または非ゼロの場合 qr は呼び出されます。次元が大きい場合、qr の呼び出しは、既定の手法を使用して J 直交行列を作成するより大幅に高速となります。

'rando'

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

構文:

  • A = gallery('rando',n,k) は、nn 列のランダム行列を返します。入力引数 k は、次の離散分布のいずれかからの行列要素を決定します。

    k = 1 (既定)

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

    k = 2

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

    k = 3

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

  • A = gallery('rando',[n m],k) は、nm 列のランダム行列を返します。

'randsvd'

説明: 既定の特異値をもつランダム行列

構文:

  • A = gallery('randsvd',n,kappa,mode,kl,ku) は、1 以上でなければならい条件数が cond(A) = abs(kappa) の次数 n のランダム帯 (多重対角) 行列を返します。n が 2 要素ベクトルの場合、A のサイズは n(1)n(2) 列になります。

    kappa の既定値は sqrt(1/eps) です。分布モード mode は、行列の特異値を決定します。

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

    mode に指定できる値は以下のとおりです。

    mode = 1

    1 と等価の 1 つの大きな特異値 (および他の特異値は 1/abs(kappa) と等しくなる)

    mode = 2

    1/abs(kappa) と等価の 1 つの小さな特異値 (および他の特異値は 1 と等しくなる)

    mode = 3 (既定)

    幾何学的に分布する特異値

    mode = 4

    算術的に分布する特異値

    mode = 5

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

    mode < 0

    mode-1-2-3-4、または -5 の場合、randsvdmodeabs(mode) として扱います。ただし、対角要素の特異値の順序は元の行列と逆で、大きい順ではなく、小さい順になります。

    kappa <= 1 の特別な場合では、A は、cond(A) = -kappa で、mode に従って分布する固有値をもつ対称正定値行列になります。この場合、引数 klku は無視されます。

  • A = gallery('randsvd',n,kappa,mode,kl,ku,method) は、テスト行列を生成する計算の実行方法を指定します。既定の設定は method = 0 です。一方、method = 1 は、より多くの浮動小数点演算を使用しますが、大きな次元に対して大幅に高速な qr を呼び出す代替方法を使用します。

'redheff'

説明: 1 と 0 の Redheffer 行列

構文:

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

プロパティ:

  • A は、1 に等価な n-floor(log2(n))-1 個の固有値をもちます。

  • A はおよそ sqrt(n) の実固有値 (およびそのスペクトル半径) をもちます。

  • A はおよそ -sqrt(n) の負の固有値をもちます。

  • 残りの floor(log2(n))-1 固有値は、ε > 0 の円 log2εn の内部にある比較的小さい係数と十分な大きさの n をもちます。

  • すべての ε > 0 について |det(A)|=O(n1/2+ε) が満たされる場合にのみ、リーマン仮説が真になります。

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

'riemann'

説明: リーマン仮説に関連した行列

構文:

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

    det(A)=O(n!n1/2+ε)

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

    リーマン行列は、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'

説明: Ris 行列

構文:

  • A = gallery('ris',n) は、A(i,j) = 0.5/(n-i-j+1.5) の要素をもつ対称な nn 列のハンケル行列を返します。A の固有値は、π/2 および –π/2 の近くに集まっています。

'sampling'

説明: 悪条件の整数固有値をもつ非対称行列

構文:

  • A = gallery('sampling',x) (x は長さが n のベクトル) は、nn 列の非対称行列を返します。行列の要素は i ~= j の場合は A(i,j) = x(i)/(x(i)-x(j)) で、A(j,j) は列 j の非対角要素の総和と同じです。x がスカラーの場合、A = gallery('sampling',1:x) です。

プロパティ:

  • A は悪条件の整数固有値 0:n-1 をもちます。

  • 固有値 0 および n-1 の場合、対応する固有ベクトルはそれぞれ x および ones(n,1) です。

  • A は、i ~= j に対して A(i,j) + A(j,i) = 1 のプロパティをもちます。

  • A の左固有ベクトルには、明示的な式を使用できます。

  • この行列の特殊なケースは、その右固有ベクトルが、正しく正規化されている場合に、条件付きポアソン サンプリング設計の包含確率を与える標本理論内に現れます[9]

'smoke'

説明: "smoke ring" の疑似スペクトルをもつ複素行列

構文:

  • A = gallery('smoke',n) は、上対角要素上に 1、および (n,1) 位置に 1 をもつ nn 列の行列を返します。対角要素は、単位円上の n 番目のすべての根の集合で構成されます。

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

プロパティ:

  • gallery('smoke',n,1) の固有値は、単位円上の n 番目の根です。

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

  • 行列 A の擬似スペクトルは、複素平面における行列 zI-A の最小特異値を求めて計算できます。ここで、z は複素平面の点を表し、I は単位行列です。gallery('smoke',n) および gallery('smoke',n,1) の疑似スペクトルは、その固有値の近くに "smoke ring" パターンをもちます。

'toeppd'

説明: 対称正定値テプリッツ行列

構文:

  • A = gallery('toeppd',n,m,x,theta) は、(ランク 1 または 2 の) m テプリッツ行列の和で構成される nn 列の対称テプリッツ行列を返します。x および theta は長さ m のベクトルです。行列 A は、x のすべての要素が正の場合、正定値です。特に、A は次のように生成されます。

    A = x(1)*T1 + ... + x(k)*Tk + ... + x(m)*Tm

    ここで Tk は、theta(k) に依存する nn 列の行列です。Tk の要素は Tk(i,j) = cos(2*pi*theta(k)*(i-j)) です。

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

'toeppen'

説明: 五重対角のテプリッツ行列 (スパース行列)

構文:

  • A = gallery('toeppen',n,a,b,c,d,e) は、主対角の下側の 2 番目の対角上に a、下対角上に b、主対角上に c、上対角上に d、および主対角の上側の 2 番目の対角上に e の要素をもつ nn 列のスパース五重対角のテプリッツ行列を返します。ここで、abcde はスカラーです。

    既定では、(a,b,c,d,e) = (1,-10,0,10,1) となり、最初に Rutishauser によって導入された行列を生成します[10]。この行列の固有値は、複素平面のほぼ曲線 2*cos(2*t) + 20*i*sin(t) 上にあります。

'tridiag'

説明: 三重対角行列 (スパース行列)

構文:

  • A = gallery('tridiag',n) は、下対角要素が -1、対角要素が 2、および上対角要素が -1 をもつ nn 列サイズのスパース三重対角行列を返します。この行列は固有値 2 + 2*cos(k*pi/(n+1)) をもち、ここでは k = 1:n です。

    生成される行列は、非負の実数固有値をもつ対称正定値 M 行列です。この行列は、2 階差分行列の負でもあります。

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

  • A = gallery('tridiag',n,c,d,e) は、cde がすべてスカラーの場合、下対角要素が c、対角要素が d、上対角要素が e となる nn 列のテプリッツ三重対角行列を生成します。この行列は固有値 d + 2*sqrt(c*e)*cos(k*pi/(n+1)) をもち、ここでは k = 1:n です。

'triw'

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

構文:

  • A = gallery('triw',n,alpha,k) は、対角上に 1、k >= 0 を満たす最初の上対角上に alpha をもつ上三角行列を返します。既定の設定は alpha = -1 で、k = n-1 です。

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

プロパティ:

  • alpha = 2 の場合、行列の条件数は次を満たします。

    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) 要素に追加した場合、行列 A = gallery('triw',n) は特異値になります。また、-2^(1-n) を最初の列のその要素に追加した場合でも特異値になります。

'uniformdata'

説明: 標準一様分布からランダムにサンプリングされた数の配列

構文:

  • A = gallery('uniformdata',[m,n,...],k) は、m x n x... の多次元配列 A を返します。A の要素は標準一様分布からランダムにサンプリングされた数値です。k はランダム シードで、区間 [0, 2^32-1] 内の整数値でなければなりません。異なる k の値で gallery('uniformdata',...) を呼び出すと、異なる配列が返されます。同じサイズ ベクトル [m,n,...] および同じ値 kgallery('uniformdata',...) を繰り返し呼び出すと、常に同じ配列が返されます。

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

  • [A1,A2,...,Am] = gallery('uniformdata',[m,n,...],k) は、異なる値を含んでいる複数の m x n x... の多次元配列 A1A2、...、Am を返します。

  • [A1,A2,...,Am] = gallery('uniformdata',[m,n,...],k,typename) は、typename 型の要素をもつ配列を生成します。typename'double' (既定) または 'single' でなければなりません。

参考: rand | rng

'wathen'

説明: 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) に対して、対称正定値です。

  • B = gallery('wathen',nx,ny,1) は、前の構文に基づいて対角にスケーリングされた行列を返します。ここで B = diag(diag(A))\A) です。この行列の固有値は、以下を満たします。

    0.25 <= eig(B) <= 4.5

    任意の正の整数 nxny および任意の密度 rho(nx,ny) に対して上記を満たします。

'wilk'

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

構文:

  • [U,b] = gallery('wilk',3) は、不正確な解を例示する上三角システム U*x = b を返します。

  • [L,b] = gallery('wilk',4) は、悪条件の下三角システム L*x = b を返します。

  • A = gallery('wilk',5) は、対称正定値行列 A = B(1:5,2:6)*1.8144 を返します。ここでは B = hilb(6) です。

  • A = gallery('wilk',21) は、ほぼ等しい固有値のペアをもつ三重対角行列 W21+ を返します。詳細については、[11]を参照してください。

入力パラメーター。スカラー、ベクトルまたは行列として指定します。呼び出しの構文で使用されるパラメーター P1,P2,...,Pn は、matrixnameの表に示される行列ファミリに依存します。

生成されたテスト行列のデータ型。文字ベクトルまたは string スカラーとして指定します。

  • typename を指定しない場合、出力行列のデータ型は、P1,P2,...,Pn の中で行列の次元を指定しない引数、または出力行列の特性を決定するオプションを選択しない引数から決定されます。これらの引数のいずれかのデータ型が single の場合、出力データ型は single となります。それ以外の場合、出力データ型は double です。

  • typename は、matrixname'integerdata' でない限り、すべてのテスト行列で 'double' または 'single' でなければなりません。matrixname'integerdata' の場合、typename'double''single''int8''int16''int32''uint8''uint16'、または 'uint32' にすることができます。

出力引数

すべて折りたたむ

出力係数、ベクトル、行列、または多次元配列。呼び出しの構文で生成される出力 A1,A2,...,Am は、matrixnameの表に示される行列ファミリに依存します。多くの場合、関数 gallery は出力引数として 1 つの行列のみを返します。

出力行列または多次元配列。

参照

[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, 2nd ed, by Desmond J. Higham and Nicholas J. Higham, Philadelphia: SIAM, 2005, and Accuracy and Stability of Numerical Algorithms, by Nicholas J. Higham, Philadelphia: SIAM, 1996.

[2] Graham, R.L. and N. J. A. Sloane. “Anti-Hadamard Matrices.“ Linear Algebra and Its Applications 62 (1984): 113-137.

[3] 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.

[4] Gear, C. W. “A Simple Set of Test Matrices for Eigenvalue Programs.“ Mathematics of Computation 23, no. 105 (1969): 119-125.

[5] Lotkin, M. “A Set of Test Matrices.“ Mathematical Tables and Other Aids to Computation 9, no. 52 (1955): 153.

[6] Davies, P. I. and N. J. Higham. “Numerically Stable Generation of Correlation Matrices and Their Factors.” BIT Numerical Mathematics 40 (2000): 640-651.

[7] Barrett, W. W. and T. J. Jarvis. “Spectral Properties of a Matrix of Redheffer.“ Linear Algebra and Its Applications 162-164 (1992): 673-83.

[8] Roesler, F. “Riemann's Hypothesis as an Eigenvalue Problem.“ Linear Algebra and Its Applications 81 (1986): 153-98.

[9] Bondesson, L. and I. Traat. “A Nonsymmetric Matrix with Integer Eigenvalues.“ Linear and Multilinear Algebra 55, no. 3 (2007): 239-47.

[10] Rutishauser, H. “On Test Matrices.“ Programmation en Mathematiques Numeriques, Editions Centre Nat Recherche Sci, Paris, 165 (1966): 349-65.

[11] Wilkinson, J. H. The Algebraic Eigenvalue Problem. Monographs on Numerical Analysis. Oxford: Oxford; New York: Clarendon Press; Oxford University Press, 1988.

[12] Moler, C. B. Numerical Computing with MATLAB. Philadelphia: Society for Industrial and Applied Mathematics, 2004.

R2006a より前に導入