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인 순환 행렬을 만듭니다. 순환 행렬은 특수한 유형의 테플리츠 행렬로, 각 행은 이전 행의 요소들을 순환적으로 하나씩 오른쪽으로 이동하여 얻습니다.

C = gallery('circul',11);

C의 행렬 요소의 이미지를 표시합니다. 컬러바를 그래프에 추가하여 현재 컬러맵을 표시합니다.

imagesc(C)
axis square
colorbar

Figure contains an axes object. The axes object contains an object of type image.

크기가 11×11인 grcar 행렬을 만듭니다. grcar 행렬은 하부대각선은 -1로, 주대각선은 1로, 주대각선 위에 있는 처음 몇 개의 대각선은 1로 채운 비대칭 테플리츠 행렬입니다.

G = gallery('grcar',11);

G의 행렬 요소에 대한 이미지를 표시합니다.

imagesc(G)
axis square
colorbar

Figure contains an axes object. The axes object contains an object of type image.

크기가 11×11인 minij 행렬을 만듭니다. minij 행렬 M은 요소 M(i,j) = min(i,j)를 갖는 양의 정부호 대칭 행렬입니다.

M = gallery('minij',11);

M의 행렬 요소에 대한 이미지를 표시합니다.

imagesc(M)
axis square
colorbar

Figure contains an axes object. The axes object contains an object of type image.

정수 행렬은 행렬식이 정확히 1 또는 –1인 경우에만 정수 행렬이 되는 역행렬을 갖습니다. 행렬식이 1 또는 –1인 정사각 정수 행렬은 유니모듈러 행렬이라고도 합니다. 이러한 행렬의 예로 0과 1로 구성되고 행렬식이 1 또는 -1인 n×n 행렬인 gallery('dramadah',n)을 들 수 있습니다.

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의 QR 분해를 계산하는 방법을 보여줍니다. 여기서 Q는 직교 행렬이고 R은 상부 삼각 행렬입니다.

먼저 난수 생성기를 디폴트 값으로 설정하고, 표준 정규분포에서 생성된 난수로 구성된 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이 하우스홀더 행렬(Householder Matrix)이 되는 vβ를 반환합니다. 하우스홀더 변환은 벡터 x의 첫 번째 요소를 제외한 모든 요소를 0으로 만드는 데 사용됩니다.

하우스홀더 행렬 P1을 계산하고 변환 A1=P1A를 수행합니다. 행렬 A1은 첫 번째 열의 대각선 아래에 0만 갖습니다.

[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.0000    1.6571    0.5314
   -0.0000    3.5028   -0.1350
    0.0000   -1.0788   -0.0983
    0.0000    1.9227    1.3835

다음으로, A2=P2A1이 첫 번째 열과 두 번째 열의 대각선 아래에 0만 갖도록 하는 하우스홀더 행렬 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.0000    0.3413
   -0.0000    0.0000   -0.5368
    0.0000   -0.0000    0.0255
    0.0000    0.0000    1.1630

마지막으로, A3=P3A2가 하부대각선에 0만 가지는 하우스홀더 행렬 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 matrix)이므로 A의 QR 분해는 A=QR이 되고 Q=P1P2P3입니다.

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 = 2.2565e-15

이 예제에서는 크기가 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

Figure contains an axes object. The axes object with xlabel Re(E), ylabel Im(E) contains an object of type scatter.

테스트 행렬 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에 작은 섭동을 야기합니다. 난수 생성기의 시드값을 디폴트 값으로 설정합니다. A에 구간 0~0.001 사이의 요소(구간 끝점 불포함)로 구성된 확률 행렬을 더합니다.

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는 5겹 고유값 λ=0을 갖습니다(엄밀히 말하면 A는 대수적 중복도 5와 기하적 중복도 5의 고유값 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의 고유값 수치 계산은 계산에 사용된 부동소수점 정밀도로 인해 반올림 오차에 극히 민감함을 나타냅니다.

고유값의 수치 계산은 정확한 산술 계산에서의 고유값과 매우 다릅니다. eig 함수는 A의 정확한 고유값에 가까운 고유값을 찾는 대신 A에 가까운 행렬의 고유값을 찾습니다. 이를 설명하기 위해, 복소 평면에 A의 정확한 고유값과 수치적 고유값을 플로팅합니다.

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

Figure contains an axes object. The axes object contains 2 objects of type line. One or more of the lines displays its values using only markers

Figure를 통해 수치적 고유값은 복소 평면에서 정오각형의 꼭짓점 위에 원점을 중심으로 배치되어 있음을 알 수 있습니다. 오각형의 반지름은 약 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

Figure contains an axes object. The axes object contains 7 objects of type line. One or more of the lines displays its values using only markers

Figure를 통해 A가 섭동된 경우 A의 고유값을 나타내는 원본 오각형의 방향이 뒤집힐 수 있음을 알 수 있습니다. 20개의 섭동된 행렬의 고유값은 범위 0.01~0.07 내에 있는 반지름을 갖는 오각형의 꼭짓점 위에 있습니다. 섭동된 행렬의 계산된 고유값은 원본 행렬의 계산된 고유값과 유사하게 동작합니다. 계산된 고유값의 부정확성은 gallery(5)의 민감도로 인한 것입니다.

입력 인수

모두 축소

행렬군의 이름으로, 문자형 벡터 또는 string형 스칼라로 지정됩니다. 인수 matrixname은 아래에 나와 있는 것과 같이 생성된 테스트 행렬군을 결정합니다.

'binomial'

설명: 대합 행렬(involutory matrix)의 배수인 이항 행렬

구문:

  • A = gallery('binomial',n)A^2 = 2^(n-1)*eye(n)이 되는 정수 요소를 갖는 n×n 행렬을 반환합니다.

속성:

  • 행렬 B = A*2^((1-n)/2)은 대합 행렬(역행렬이 자신과 동일한 행렬)입니다.

'cauchy'

설명: 코시 행렬(Cauchy matrix)

구문:

  • A = gallery('cauchy',x,y)는 요소가 A(i,j) = 1/(x(i)+y(j))n×n 행렬을 반환합니다. 인수 xy는 길이가 n인 벡터입니다. xy에 스칼라를 전달하면 벡터 1:x1:y로 해석됩니다.

  • A = gallery('cauchy',x)y = x인 위와 동일한 행렬을 반환합니다. 즉, A(i,j) = 1/(x(i)+x(j))입니다.

속성:

  • 코시 행렬의 역행렬과 행렬식에 대해서는 명시적 식이 알려져 있습니다.

  • xy가 모두 서로 다른 요소들로 구성되어 있으면 행렬식 det(C)는 0이 아닙니다.

  • 0 < x(1) < ... < x(n)이고 0 < y(1) < ... < y(n)인 경우 C는 완전히 양수가 됩니다.

'chebspec'

설명: 체비쇼프 스펙트럼 미분 행렬

구문:

  • A = gallery('chebspec',n,k)는 크기가 n×n인 체비쇼프 스펙트럼 미분 행렬을 반환합니다. 인수 k는 값이 0(디폴트 값) 또는 1일 수 있으며 출력 행렬의 특성을 결정합니다.

    k = 0(경계 조건 없음)인 경우 A는 멱영인입니다. 즉, A^c = 0이 되는 양의 정수 c가 존재합니다. 행렬 A는 영벡터 ones(n,1)을 갖습니다.

    k = 1인 경우 A는 조건이 좋은 정칙 행렬이며, 해당 고유값은 음의 실수부를 갖습니다.

속성:

  • k = 0인 경우 행렬 A는 고유값이 0인 크기 n의 조르당 블록과 유사합니다. 두 행렬 ABB = inv(P)*A*P가 되는 동일한 크기의 가역 행렬 P가 있는 경우 유사하다고 말합니다.

  • k 모두에 대해 체비쇼프 스펙트럼 미분 행렬의 고유벡터 행렬은 조건이 나쁜 행렬입니다.

'chebvand'

설명: 체비쇼프 다항식의 방데르몽드 유사 행렬(Vandermonde-like matrix)

구문:

  • A = gallery('chebvand',x)는 체비쇼프 다항식이 계산되는 위치를 정의하는 점 x로 구성된 벡터를 기반으로 원시 체비쇼프 방데르몽드 행렬을 생성합니다. 인수 x는 길이가 n인 벡터이고, A의 크기는 n×n입니다. A의 요소는 A(i,j) = Ti – 1(x(j))로, 여기서 Ti – 1은 차수 i – 1의 제1종 체비쇼프 다항식입니다. x가 스칼라이면 구간 [0,1]의 균일한 간격의 점 x를 사용하여 A를 계산합니다.

  • A = gallery('chebvand',m,x)m개의 행을 갖는, 위에 대한 사각형 버전을 생성합니다. 여기서 m은 스칼라입니다.

'chow'

설명: 특이 테플리츠 하부 헤센베르크 행렬

구문:

  • A = gallery('chow',n,alpha,delta)는 차수가 n인 Chow 행렬을 반환합니다. 이는 n×n 하부 헤센베르크 행렬입니다. 행렬 A는 다음과 같이 정의됩니다.

    A=Hα+δI

    여기서 Hα의 행렬 요소는 (i – j + 1) ≥ 0에 대해 Hα(i,j) = α(i – j + 1)이고, δ는 계수이고, I는 n×n 단위 행렬입니다.

  • A = gallery('chow',n)alphadelta에 각각 디폴트 값 10을 사용합니다.

속성:

  • Hα는 값이 0인 고유값을 p = floor(n/2)개 갖습니다. 나머지 고유값은 4*alpha*cos(k*pi/(n+2))^2과 같습니다. 여기서 k = 1:(n-p)입니다.

'circul'

설명: 순환 행렬(Circulant matrix)

구문:

  • A = gallery('circul',v)는 첫 번째 행이 길이가 n인 벡터 vn×n 순환 행렬을 반환합니다. 순환 행렬은 특수한 유형의 테플리츠 행렬로, 각 행은 이전 행의 요소들을 순환적으로 하나씩 오른쪽으로 이동하여 얻습니다. v가 스칼라인 경우 A = gallery('circul',1:v)입니다.

속성:

  • A의 고유시스템은 명시적(Explicitly)으로 알 수 있습니다. tn차 단위근인 경우 vw = [1 t t^2 ... t^(n – 1)]의 내적은 A의 고유값이고, w(n:-1:1)은 고유벡터입니다.

참고 항목: toeplitz

'clement'

설명: 대각선 요소 값이 0인 Clement 삼중대각 행렬

구문:

  • A = gallery('clement',n,k)는 주대각선 요소가 0인 n×n 삼중대각 행렬을 반환합니다. k = 0(디폴트 값)인 경우 A는 비대칭입니다. k = 1인 경우 A는 대칭입니다.

속성:

  • A = gallery('clement',n,1)B = inv(D)*A*D가 되는 동일한 크기의 대각 행렬 D가 존재하는 경우 B = gallery('clement',n,0)과 대각 유사합니다.

  • n이 홀수인 경우 A는 특이 행렬입니다.

  • A의 고유값은 명시적으로 알 수 있으며, 여기에는 플러스나 마이너스를 붙인 숫자 n-1, n-3, n-5, ..., 1 또는 0이 포함됩니다.

  • gallery('tridiag',x,y,z)에 대해서도 앞의 두 속성이 성립하며, 이때 y = zeros(n,1)입니다. 입력 벡터 y 또는 n의 길이가 홀수인 경우 gallery('tridiag',x,y,z)는 특이 행렬입니다. 고유값은 여전히 플러스와 마이너스 쌍을 갖지만, 명시적으로 알려져 있지는 않습니다.

  • 홀수값 n = 2*m+1k = 0에 대해, gallery('clement',n,0)t = 0:m에 대해 sqrt((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'

설명: 행렬 조건수 추정량에 대한 반례(counterexample)

구문:

  • A = gallery('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 = gallery('cycol',n,k)는 열이 주기적으로 반복되는 n×n 행렬을 반환합니다. 여기서 1주기는 randn(n,k)로 정의되는 열로 구성됩니다. 따라서 행렬 A의 랭크는 k를 초과할 수 없으며, k는 스칼라여야 합니다. 인수 k는 디폴트 값이 round(n/4)인 스칼라이며, n을 균등하게 나눌 필요는 없습니다.

  • A = gallery('cycol',[m n],k)는 열이 주기적으로 반복되는 m×n 행렬을 반환합니다. 여기서 1주기는 randn(m,k)로 정의되는 열로 구성됩니다.

'dorr'

설명: 대각선 우위이고 조건이 나쁜 삼중대각 행렬(희소 행렬)

구문:

  • A = gallery('dorr',n,theta)theta의 음이 아닌 작은 값에 대해 조건이 나쁜, n×n의 행 대각선 우위 삼중대각 행렬인 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)01로 구성된 n×n 행렬을 반환합니다. nk는 둘 다 스칼라여야 합니다. k = 01에 대해 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'

설명: 피들러 대칭 행렬

구문:

  • A = gallery('fiedler',x)는 요소 A(i,j) = abs(x(i)-x(j))로 구성된 n×n 대칭 행렬을 반환합니다. 여기서 x는 길이 n 벡터입니다. x가 스칼라인 경우에는 A = gallery('fiedler',1:x)입니다.

속성:

  • 행렬 A는 우세한 양의 고유값을 가지며 다른 모든 고유값은 음수입니다.

  • inv(A)det(A)에 대한 명시적 식(Explicit Formula)은 [3]에 설명되어 있으며, Fiedler가 고안한 것입니다. 이들 수식은 inv(A)가, 0이 아닌 (1,n)(n,1) 요소를 제외하고 삼중대각 행렬임을 나타냅니다.

'forsythe'

설명: Forsythe 행렬 또는 섭동 조르당 블록

구문:

  • A = gallery('forsythe',n,alpha,lambda)A(n,1) = alpha인 것을 제외하고 조르당 블록과 동일하며 고유값 lambda를 갖는 n×n 행렬을 반환합니다. 스칼라 alphalambda의 디폴트 값은 각각 sqrt(eps)0입니다.

속성:

  • A의 특성 다항식은 det(A-t*I) = (lambda-t)^n - alpha*(-1)^n으로 지정됩니다.

'frank'

설명: 조건이 나쁜 고유값의 프랭크 행렬(Frank matrix)

구문:

  • A = gallery('frank',n,k)는 디폴트 값 k = 0에 대해 크기가 n×n인 프랭크 행렬을 반환합니다. 프랭크 행렬은 행렬식이 1인 상부 헤센베르크 행렬입니다. k = 1인 경우 각 요소는 반 대각선(anti-diagonal) (1,n), (2,n-1), …, (n,1)에 대해 대칭입니다.

속성:

  • A의 고유값은 에르미트 다항식의 영점에서 얻을 수 있습니다. 이러한 고유값들은 양의 값이며 서로 역수 관계인 쌍으로 이루어집니다.

  • n이 홀수이면 1은 고유값입니다.

  • 고유값 중에서 가장 작은 절반의 고유값, 즉 가장 작은 floor(n/2)개의 고유값은 조건이 나쁩니다.

'gcdmat'

설명: 최대공약수 행렬(greatest Common divisor matrix)

구문:

  • A = gallery('gcdmat',n)A(i,j)gcd(i,j)와 동일한 n×n 행렬을 반환합니다.

속성:

  • 행렬 A는 양의 정부호 대칭 행렬이고, A.^r은 음이 아닌 모든 r에 대해 양의 준정부호 대칭 행렬입니다.

'gearmat'

설명: 기어 행렬(Gear matrix)

구문:

  • A = gallery('gearmat',n,i,j)는 하부대각선 및 상부대각선에는 1을, (1,abs(i)) 위치에는 sign(i)를, (n,n+1-abs(j)) 위치에는 sign(j)를, 다른 나머지에는 0을 채워 n×n 행렬을 반환합니다. 인수 ij의 디폴트 값은 각각 n-n입니다. 이들은 범위 -n~n 내의 정수여야 합니다.

속성:

  • 행렬 A는 특이 행렬이고, 2개 또는 3개의 고유값을 가질 수 있으며, 완전 랭크가 아닐 수(Defective) 있습니다.

  • 모든 고유값의 형식은 2*cos(a)이고 고유벡터의 형식은 [sin(w+a), sin(w+2a), …, sin(w+na)]입니다. 여기서 a와 w는 [4]에 설명되어 있습니다.

'grcar'

설명: 민감한 고유값을 갖는 테플리츠 행렬(Toeplitz Matrix)

구문:

  • A = gallery('grcar',n,k)는 하부대각선에는 -1을, 주대각선에는 1을, 주대각선 위에 있는 k개의 대각선에는 1을 채워 n×n 테플리츠 행렬을 반환합니다. k는 정수여야 하고, 디폴트 값은 k = 3입니다. A는 섭동에 민감한 고유값을 갖습니다.

'hanowa'

설명: 고유값이 복소 평면의 세로선에 있는 행렬

구문:

  • A = gallery('hanowa',n,alpha)는 다음 형식의 n/2×n/2 블록 4개를 갖는 2×2 블록 행렬을 반환합니다.

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

    인수 n은 짝수여야 합니다. alpha의 디폴트 값은 -1입니다. A1 <= k <= n/2인 경우 alpha ± k*i 형식의 복소수 고유값을 가집니다.

'house'

설명: 하우스홀더 행렬(Householder matrix)

구문:

  • [v,beta] = gallery('house',x)x, 스칼라 또는 n개 요소 열 벡터를 받고, H = eye(n) - beta*v*v'이 하우스홀더 행렬이 되는 vbeta를 반환합니다. 하우스홀더 행렬 H는 다음 속성을 충족합니다.

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

    여기서 e1eye(n)의 첫 번째 열입니다.

    참고로, x가 복소수일 경우 sign(x) = exp(i*arg(x))가 됩니다. 이는 x가 0이 아닐 때 x./abs(x)와 같습니다. x가 0인 경우 v는 0이고 beta = 1입니다.

  • [v,beta,s] = gallery('house',x,k)는 요소를 n개 가진 열 벡터 x를 받고, H*x = s*e1이 되는 vbeta를 반환합니다. 이 표현식에서 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가 0이거나 x = alpha*e1(alpha >= 0)이면서 k = 1 또는 k = 2이면 v는 0이고 beta = 1이고 s = x(1)입니다. 이 경우 H = eye(n)은 단위 행렬이 되고, 하우스홀더 행렬 조건을 엄격히 충족하지 않습니다.

'integerdata'

설명: 지정된 범위의 균등분포에서 임의 추출한 정수로 구성된 배열

구문:

  • A = gallery('integerdata',imax,[m,n,...],k)는 범위 1:imax의 균등분포된 정수에서 추출한 표본값을 갖는 m×n×... 배열 A를 반환합니다. k는 난수 시드값이며 구간 [0,2^32-1] 내의 정수 값이어야 합니다. gallery('integerdata',...)k의 다른 값으로 호출하면 다른 배열이 반환됩니다. 동일한 imax, 크기 벡터 및 kgallery('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×n×... 배열 A를 반환합니다.

  • [A1,A2,...,Am] = gallery('integerdata',[imin imax],[m,n,...],k)는 다른 값을 포함하는 여러 개의 m×n×... 배열 A1, A2, ..., 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'

설명: 상부 헤센베르크 행렬(upper Hessenberg matrix)의 역행렬

구문:

  • A = gallery('invhess',x,y)i <= j이면 요소 A(i,j) = x(j)로 구성된 행렬을 반환하고 그 밖의 경우에는 요소 A(i,j) = y(i)로 구성된 행렬을 반환합니다. 여기서 x는 길이 n 벡터이고 y는 길이 n-1 벡터입니다. A의 하부 삼각은 벡터 x에 기반하며, 순상부 삼각은 y에 기반합니다. 인수 y의 디폴트 값은 -x(1:n-1)입니다.

    스칼라 n에 대해 gallery('invhess',n)gallery('invhess',1:n)과 동일합니다.

속성:

  • 행렬 A는 모든 i에 대해 x(1) ~= 0이고 x(i+1) ~= y(i)이면 정칙 행렬입니다.

  • A의 역행렬은 상부 헤센베르크 행렬입니다.

'invol'

설명: 대합 행렬(involutory matrix)(역행렬이 자신과 동일한 행렬)

구문:

  • A = gallery('invol',n)n×n 대합 행렬을 반환합니다. 여기서 A*A = eye(n)이고 A은 조건이 나쁩니다. 이 행렬은 hilb(n)의 대각선 성분이 스케일링된 버전입니다.

속성:

  • 행렬 B = (eye(n)-A)/2B = (eye(n)+A)/2는 멱등 행렬(idempotent matrix)입니다. 여기서 B*B = B입니다.

참고 항목: hilb

'ipjfact'

설명: 계승 요소를 포함한 한켈 행렬(Hankel matrix)

구문:

  • [A,beta] = gallery('ipjfact',n,k)n×n 한켈 행렬 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'

설명: 조르당 블록 행렬(Jordan block matrix)

구문:

  • A = gallery('jordbloc',n,lambda)는 고유값 lambda를 가진 n×n 조르당 블록을 반환합니다. lambda의 디폴트 값은 1입니다.

'kahan'

설명: 상부 사다리꼴 카한 행렬(upper trapezoidal Kahan matrix)

구문:

  • A = gallery('kahan',n,theta,pert)는 조건 및 랭크의 추정에 대한 흥미로운 속성을 갖는 상부 사다리꼴 행렬을 반환합니다. 예를 들어, 카한 행렬은 열 치환된 QR 분해를 사용하면 행렬의 우수한 랭크 추정값을 얻기 어려움을 보여줍니다.

    n이 요소를 2개 가진 벡터인 경우 An(1)×n(2) 행렬입니다. 그렇지 않은 경우 An×n 행렬입니다. theta의 유용한 범위는 0 < theta < pi입니다. 디폴트 값은 1.2입니다.

    열 피벗 연산을 통한 QR 분해 중 반올림 오차 발생 시 열 위치가 교환되지 않도록 하기 위해 pert*eps*diag([n:-1:1])에 의해 주대각선이 섭동됩니다. 디폴트 값 pert1e3입니다. 이 경우 IEEE® 산술 연산에 있어 (디폴트 값 theta = 1.2에 대해) 적어도 n = 100까지 gallery('kahan',n)에서 위치 교환이 일어나지 않습니다.

'kms'

설명: 캑-머독-세고 테플리츠 행렬(Kac-Murdock-Szegö Toeplitz matrix)

구문:

  • A = gallery('kms',n,rho)는 실수 rho에 대해 A(i,j) = rho^(abs(i-j))n×n 캑-머독-세고 테플리츠 행렬을 반환합니다. 복소수 rho에 대해 대각선 아래 요소가 켤레가 된다는 점을 제외하면 동일한 식이 성립합니다. rho의 디폴트 값은 0.5입니다.

속성:

  • L = inv(gallery('triw',n,-rho,1))'D = (1-abs(rho)^2)*eye(n)을 통한 A의 LDL 분해가 존재합니다. 단, D의 첫 번째 요소는 D(1,1) = 1입니다.

  • A0 < abs(rho) < 1인 경우에만 양의 정부호 행렬입니다.

  • 역행렬 inv(A)는 삼중대각 행렬입니다.

'krylov'

설명: 크릴로프 행렬(Krylov matrix)

구문:

  • A = gallery('krylov',B,x,k)는 크릴로프 행렬을 반환합니다. 여기서 Bn×n 행렬이고 x는 길이가 n인 벡터입니다. k는 정수여야 합니다. 크릴로프 행렬은

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

    열 벡터 x에 대해 위와 동일합니다. 인수 xk를 지정하지 않을 경우 디폴트 값 x = ones(n,1)k = n이 사용됩니다.

  • 스칼라 n에 대해 A = gallery('krylov',n)gallery('krylov',B)와 동일합니다. B = randn(n)입니다.

'lauchli'

설명: 로칠리 사각 행렬(Lauchli rectangular matrix)

구문:

  • A = gallery('lauchli',n,mu)[ones(1,n); mu*eye(n)] 형식의 (n+1)×n 행렬을 반환합니다. 인수 mu의 디폴트 값은 sqrt(eps)입니다.

속성:

  • 로칠리 행렬은 최소제곱 및 기타 문제에서 방정식 ATAx^=ATb를 풀 때 A'*A를 구성하는 것의 위험성을 보여주는 잘 알려진 예입니다. 행렬 A'*A는 일반적으로 초기 행렬 A보다 반올림 오차에 더 민감합니다.

'lehmer'

설명: 양의 정부호 대칭 레머 행렬(Lehmer matrix)

구문:

  • A = gallery('lehmer',n)j >= i에 대해 A(i,j) = i/j가 되고 그 밖의 경우에 A(i,j) = j/i가 되는 n×n의 양의 정부호 대칭 행렬을 반환합니다.

속성:

  • A는 완전 비음(totally nonnegative) 행렬입니다.

  • 역행렬 inv(A)는 삼중대각 행렬이며, 명시적(explicitly)으로 알 수 있습니다.

  • 차수 nn <= cond(A) <= 4*n*n을 충족합니다.

'leslie'

설명: 레슬리 인구 모델(Leslie population model)의 출생아 수와 생존율로 구성된 행렬

구문:

  • A = gallery('leslie',x,y)는 평균 출생아 수가 x(1:n)이고 생존율이 y(1:n-1)인 레슬리 인구 모델의 n×n 행렬입니다. x(i)가 포함된 첫 번째 행과 y(i)가 포함된 첫 번째 하부대각선을 제외한 행렬 요소는 주로 0입니다. 유효한 모델의 경우 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]에서 매끄럽게 분포하는 n×n 행렬을 반환합니다.

속성:

  • 고유값이 더 큰 음수로 증가하면 고유값의 민감도도 기하급수적으로 증가합니다.

  • A = inv(D)*B*D를 사용한 유사 변환(similarity transformation)이 성립하기 때문에, 이 행렬은 대각선 요소가 그와 같고 비대각선 요소가 1인 삼중대각 행렬 B와 유사합니다. 여기서 D = diag(factorial(1:n))입니다.

'lotkin'

설명: 로트킨 행렬(Lotkin matrix)

구문:

  • A = gallery('lotkin',n)은 첫 행이 모두 1로 변경된 힐베르트 행렬을 반환합니다.

속성:

  • 로트킨 행렬 A는 비대칭이고, 조건이 나쁜 행렬이며, 크기가 작은 많은 음수 고유값을 가집니다.

  • 역행렬은 정수 요소를 가지며, 명시적으로 알 수 있습니다[5].

'minij'

설명: 양의 정부호 대칭 행렬

구문:

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

구문:

  • A = gallery('moler',n,alpha)는 양의 정부호 대칭 n×n 행렬 U'*U를 반환합니다. 여기서 U = gallery('triw',n,alpha)입니다. 디폴트 값 alpha = -1에 대해 A(i,j) = min(i,j)-2이고 A(i,i) = i입니다.

속성:

  • alpha = -1에 대해 A의 고유값 중 하나는 크기가 작습니다. 이는 나머지 고유값에 비해 많은 차수만큼 차이가 납니다.

'neumann'

설명: 이산 노이만 문제(discrete Neumann problem)의 특이 행렬(희소 행렬)

구문:

  • A = gallery('neumann',n)은 규칙 메시(regular mesh)에 일반적 5점 연산자(five-point operator)를 사용한 노이만 문제의 이산화 결과인 희소 n×n 특이 행 대각선 우위(diagonally dominant) 행렬을 반환합니다. 인수 n은 완전 제곱 정수여야 합니다. A는 희소 행렬이며, 영벡터 ones(n,1)이 있는 1차원 영공간을 가집니다.

  • A = gallery('neumann',[m n])은 동일한 행렬을 반환하나, 그 크기는 m*n×m*n입니다. 인수 mn은 양의 정수여야 합니다. 여기서 m은 1보다 커야 합니다.

'normaldata'

설명: 표준 정규분포(가우스 분포)에서 임의 추출한 숫자로 구성된 배열

구문:

  • A = gallery('normaldata',[m,n,...],k)m×n×... 배열 A를 반환합니다. A의 요소는 표준 정규분포의 숫자에서 추출한 무작위 표본입니다. k는 난수 시드값이며 구간 [0, 2^32-1] 내의 정수 값이어야 합니다. gallery('normaldata',...)k의 다른 값으로 호출하면 다른 배열이 반환됩니다. 동일한 크기 벡터 및 [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×n×... 배열 A1, A2, ..., Am을 반환합니다.

  • [A1,A2,...,Am] = gallery('normaldata',[m,n,...],k,typename)typename형의 요소를 갖는 배열을 생성합니다. typename'double'(디폴트 값) 또는 'single'이어야 합니다.

참고 항목: randn | rng

'orthog'

설명: 직교 행렬 및 거의 직교인 행렬

구문:

  • A = gallery('orthog',n,k)k번째 유형의 차수 n 행렬을 반환합니다. 여기서 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)

    유니타리(unitary) 복소수 행렬입니다. A^4은 단위 행렬입니다. 이는 fft(eye(n))/sqrt(n)과 정확히 동일한 행렬입니다.

    k = 4

    표준 헬머트 행렬(Helmert matrix): 첫 번째 행이 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)의 0을 기반으로 하는 체비쇼프 방데르몽드 유사 행렬입니다. 이 행렬은 서로 직교하는 행 벡터를 갖습니다. 즉, j와 같지 않은 i에 대해 A(i,:)*A(j,:)' = 0입니다. 행렬 A*A'는 단위 행렬은 아니지만 대각 행렬입니다.

'parter'

설명: 파터 행렬(Parter matrix)

구문:

  • A = gallery('parter',n)A(i,j) = 1/(i-j+0.5)인 행렬 A를 반환합니다.

속성:

  • A는 코시 행렬이자 테플리츠 행렬입니다.

  • A의 특이값 대부분은 pi에 매우 가깝습니다.

'pei'

설명: 페이 행렬(Pei matrix)

구문:

  • A = gallery('pei',n,alpha)는 대칭 행렬 alpha*eye(n) + ones(n)을 반환합니다. 여기서 alpha는 스칼라입니다. alpha의 디폴트 값은 1입니다. 행렬은 alpha0 또는 -n인 경우에 대해 특이 행렬입니다.

'poisson'

설명: 푸아송 방정식의 블록 삼중대각 행렬(희소 행렬)

구문:

  • A = gallery('poisson',n)n×n 메시에 5점 연산자를 사용한 푸아송 방정식의 이산화에서 얻은 차수 n^2의 블록 삼중대각 희소 행렬을 반환합니다.

'prolate'

설명: 장형 행렬(prolate matrix)

구문:

  • A = gallery('prolate',n,alpha)는 파라미터 alpha를 갖는 n×n의 장형 행렬을 반환합니다. 이는 조건이 나쁜 대칭 테플리츠 행렬입니다. 0 < alpha < 0.5인 경우 A는 양의 정부호입니다.

속성:

  • A의 고유값은 모두 고유하고, 구간 (0,1)에 존재하며, 01 근방에 모여 있는 경향이 있습니다.

  • w의 디폴트 값은 0.25입니다.

'randcolu'

설명: 정규화된 열과 지정된 특이값을 갖는 확률 행렬

구문:

  • A = gallery('randcolu',n)은 균등분포에서 추출한 임의의 특이값을 갖고, 단위 2-노름의 정규화된 열을 포함하는 n×n 확률 행렬을 생성합니다.

    A'*Agallery('randcorr',n)으로 생성되는 것과 유사한 형식의 상관 행렬입니다. 후자의 고유값은 균등분포된 반면, 전자의 경우 고유값의 제곱근이 균등분포되었습니다.

  • A = gallery('randcolu',x)는 벡터 x로 지정된 특이값을 갖는 n×n 확률 행렬을 생성합니다. 여기서 x는 길이가 n(n > 1)인 벡터입니다. 벡터 x는 제곱합이 n인 음이 아닌 요소를 가져야 합니다. 이 행렬은 단위 2-노름의 정규화된 열도 갖습니다.

  • A = gallery('randcolu',__,m)m×n 행렬을 생성합니다. 여기서 m >= n입니다.

  • A = gallery('randcolu',__,m,k)k를 기반으로 추가 옵션을 제공합니다.

    k = 0(디폴트 값)

    diag(x)가 초기에 랜덤 양측 직교 변환된 후, 기븐스 회전(Givens rotation) 시퀀스가 적용됩니다.

    k = 1

    초기 변환이 생략됩니다. 테스트 행렬을 생성할 때 더 빠르지만, 대개 결과로 생성되는 행렬이 많은 수의 0 요소를 가집니다.

'randcorr'

설명: 지정된 고유값을 갖는 랜덤 상관 행렬

구문:

  • A = gallery('randcorr',n)은 균등분포에서 임의의 고유값을 취해 구성한 랜덤 n×n 상관 행렬입니다. 상관 행렬은 대각선에 1이 채워진 양의 준정부호 대칭 행렬입니다.

  • A = gallery('randcorr',x)는 벡터 x로 지정된 고유값을 갖는 랜덤 상관 행렬을 생성합니다. 여기서 length(x) > 1입니다. 벡터 x는 합이 length(x)인 음이 아닌 요소를 가져야 합니다.

  • A = gallery('randcorr',x,k)k를 기반으로 추가 옵션을 제공합니다.

    k = 0(디폴트 값)

    고유값의 대각 행렬이 초기에 랜덤 직교 유사 변환(similarity transformation)된 후, 기븐스 회전(Givens rotation) 시퀀스가 적용됩니다[6].

    k = 1

    초기 변환이 생략됩니다. 테스트 행렬을 생성할 때 더 빠르지만, 대개 결과로 생성되는 행렬이 많은 수의 0 요소를 가집니다.

참고 항목: corrcoef

'randhess'

설명: 랜덤 직교 상부 헤센베르크 행렬

구문:

  • A = gallery('randhess',n)n×n 실수 랜덤 직교 상부 헤센베르크 행렬을 반환합니다.

  • A = gallery('randhess',x)x의 요소를 파라미터로 사용하여 A를 비무작위로 생성합니다. x는 길이가 n인 실수 벡터여야 합니다. 여기서 n > 1입니다.

    두 경우 모두, 행렬 An-1개의 기븐스 회전(Givens rotation)의 곱에서 생성됩니다.

'randjorth'

설명: 랜덤 J-직교 행렬

구문:

  • A = gallery('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 = gallery('randjorth',n,m)은 양의 정수 nm에 대해 랜덤 (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이거나 0이 아닌 값이면 A가 대칭입니다.

    • methodqr을 호출하여 기본 직교 변환을 수행할지 여부를 선택합니다. 스칼라 method가 0이면 qr이 호출되지 않습니다. 스칼라 method가 1이거나 0이 아닌 값이면 qr이 호출됩니다. 큰 차원의 J-직교 행렬을 만들려면 qr을 호출하는 것이 디폴트 방법보다 훨씬 빠릅니다.

'rando'

설명: 요소 1, 0 또는 1로 구성된 확률 행렬

구문:

  • A = gallery('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 = gallery('rando',[n m],k)n×m 확률 행렬을 반환합니다.

'randsvd'

설명: 사전 대입된 특이값을 갖는 확률 행렬

구문:

  • A = gallery('randsvd',n,kappa,mode,kl,ku)는 차수가 n이고 조건수가 cond(A) = abs(kappa)인 띠 모양(다중대각) 확률 행렬을 반환합니다. 조건수는 1보다 크거나 같아야 합니다. n이 요소를 2개 가진 벡터인 경우 A의 크기는 n(1)×n(2)가 됩니다.

    kappa의 디폴트 값은 sqrt(1/eps)입니다. 분포 모드 mode는 행렬의 특이값을 결정합니다.

    인수 klku는 각각 A의 하부 비대각선 수와 상부 비대각선 수를 지정합니다. 이 두 인수가 생략되면 kl = n-1ku = 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인 경우 randsvdmodeabs(mode)로 처리합니다. 단, 특이값으로 구성된 원본 행렬에서 대각선 요소의 순서가 큰 값부터 작은 값이 아닌 작은 값부터 큰 값으로 반전됩니다.

    kappa <= 1인 특별한 경우에 Acond(A) = -kappa이고 mode에 따라 분포하는 고유값을 갖는 양의 정부호 대칭 행렬입니다. 이 경우 인수 klku는 무시됩니다.

  • A = gallery('randsvd',n,kappa,mode,kl,ku,method)는 테스트 행렬을 생성하는 계산이 수행되는 방식을 지정합니다. method = 0이 디폴트이며, method = 1은 더 많은 플롭스(초당 부동소수점 연산)를 사용하지만 차원이 클 때 훨씬 더 빠른 qr 호출을 사용합니다.

'redheff'

설명: 1과 0으로 구성된 레드헤퍼 행렬(Redheffer matrix)

구문:

  • A = gallery('redheff',n)j = 1이거나 ji로 나누어지는 경우 A(i,j) = 1로 정의하고 그러지 않은 경우 A(i,j) = 0으로 정의하는, 01로 구성된 n×n 행렬을 반환합니다.

속성:

  • A는 값이 1인 고유값을 n-floor(log2(n))-1개 갖습니다.

  • A는 대략 sqrt(n)인 하나의 실수 고유값과 (해당 스펙트럼 반지름을) 갖습니다.

  • A는 대략 -sqrt(n)인 하나의 음의 고유값을 갖습니다.

  • 나머지 floor(log2(n))-1개의 고유값은 상대적으로 작은 절댓값을 갖는데, 이들 절댓값은 ε > 0이고 충분히 큰 n에 대해 원 log2εn 안에 존재합니다.

  • 리만 가설(Riemann hypothesis)은 모든 ε > 0에 대해 |det(A)|=O(n1/2+ε)인 경우에만 참입니다.

  • Barrett과 Jarvis는 floor(log2(n))개의 작은 고유값은 단위원 abs(z) = 1 안에 존재한다고 추측했습니다. 이 추측의 증명은 n이 무한대에 가까워짐에 따라 일부 고유값이 0에 가까워지는 경향이 있다는 증명과 함께 소수 정리에 대한 새로운 증명을 제시할 것입니다[7].

'riemann'

설명: 리만 가설(Riemann hypothesis)에 대한 행렬

구문:

  • A = gallery('riemann',n)은 다음과 같은 경우에만 리만 가설이 참인 n×n 행렬을 반환합니다.

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

    여기서 모든 ε > 0입니다[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 matrix)

구문:

  • A = gallery('ris',n)은 대칭 n×n 한켈 행렬(Hankel matrix)을 반환하며, 요소 A(i,j) = 0.5/(n-i-j+1.5)를 가집니다. A의 고유값은 π/2와 –π/2 주위에 모여 있습니다.

'sampling'

설명: 조건이 나쁜 정수 고유값을 갖는 비대칭 행렬

구문:

  • A = gallery('sampling',x)n×n 비대칭 행렬을 반환합니다. 여기서 x는 길이가 n인 벡터입니다. 행렬의 요소는 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을 갖습니다.

  • 고유값 0n-1에 대응하는 고유벡터는 각각 xones(n,1)입니다.

  • Ai ~= j에 대해 A(i,j) + A(j,i) = 1인 속성을 가집니다.

  • A의 좌고유벡터(left eigenvector)에 대해 명시적 식(explicit formula)을 사용할 수 있습니다.

  • 이 행렬의 특수한 경우는 우고유벡터가 적절하게 정규화되었을 때 조건부 푸아송 표본 추출 설계의 포함 확률을 제공하는 표본론(sampling theory)에서 나타납니다[9].

'smoke'

설명: "스모크 링" 의사스펙트럼(pseudospectrum)을 갖는 복소수 행렬

구문:

  • A = gallery('smoke',n)은 상부대각선에 1을 채우고 (n,1) 위치에 1을 채운 n×n 행렬을 반환합니다. 대각선은 모든 n차 단위근의 집합으로 구성됩니다.

  • A = gallery('smoke',n,1)은 요소 A(n,1)이 0인 것을 제외하면 위와 동일한 행렬을 반환합니다.

속성:

  • gallery('smoke',n,1)의 고유값은 n차 단위근입니다.

  • gallery('smoke',n)의 고유값은 n차 단위근에 2^(1/n)을 곱한 값입니다.

  • 행렬 A의 의사스펙트럼은 복소 평면에서 행렬 zI-A의 최소 특이값을 찾아서 계산할 수 있습니다. 여기서 z는 복소 평면의 점을 나타내고 I는 단위 행렬입니다. gallery('smoke',n)gallery('smoke',n,1)의 의사스펙트럼은 고유값 근처에 "스모크 링"이 패턴이 있습니다.

'toeppd'

설명: 양의 정부호 대칭 테플리츠 행렬(Toeplitz matrix)

구문:

  • A = gallery('toeppd',n,m,x,theta)m개의 테플리츠 행렬(랭크 1 또는 2)의 합으로 구성된 n×n 대칭 테플리츠 행렬을 반환합니다. xtheta는 길이가 m인 벡터입니다. 행렬 Ax의 모든 요소가 양수인 경우 양의 정부호 행렬입니다. 구체적으로 보면, A는 다음과 같이 생성됩니다.

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

    여기서 Tktheta(k)에 따라 달라지는 n×n 행렬입니다. Tk의 요소는 Tk(i,j) = cos(2*pi*theta(k)*(i-j))입니다.

    기본적으로 m = n이고, x = rand(m,1)이고, theta = rand(m,1)입니다.

'toeppen'

설명: 5선 대각 테플리츠 행렬(희소 행렬)

구문:

  • A = gallery('toeppen',n,a,b,c,d,e)n×n 희소 5선 대각 테플리츠 행렬을 반환하며, 주대각선 아래의 두 번째 대각선에 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 = gallery('tridiag',n)은 하부대각선 요소가 -1이고, 대각선 요소가 2이고, 상부대각선 요소가 -1n×n 희소 삼중대각 행렬을 반환합니다. 이 행렬은 고유값 2 + 2*cos(k*pi/(n+1))을 갖습니다. 여기서 k = 1:n입니다.

    생성된 행렬은 음이 아닌 실수 고유값을 갖는 양의 정부호 대칭 M-행렬입니다. 이 행렬은 2차 차분 행렬의 음행렬이기도 합니다.

  • A = gallery('tridiag',c,d,e)는 하부대각선에는 c를, 주대각선에는 d를, 상부대각선에는 e를 채운 삼중대각 행렬을 반환합니다. 이는 벡터 c, d, e로 정의됩니다. 벡터 ce의 길이는 length(d)-1이어야 합니다.

  • A = gallery('tridiag',n,c,d,e)는 하부대각선 요소가 c이고, 주대각선 요소가 d이며, 상부대각선 요소가 en×n 테플리츠 삼중대각 행렬을 생성합니다. 여기서 c, d, e는 모두 스칼라입니다. 이 행렬은 고유값 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×n×... 배열 A를 반환합니다. A의 요소는 표준 균등분포의 숫자에서 추출한 무작위 표본입니다. k는 난수 시드값이며 구간 [0, 2^32-1] 내의 정수 값이어야 합니다. gallery('uniformdata',...)k의 다른 값으로 호출하면 다른 배열이 반환됩니다. 동일한 크기 벡터 및 [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×n×... 배열 A1, A2, ..., Am을 반환합니다.

  • [A1,A2,...,Am] = gallery('uniformdata',[m,n,...],k,typename)typename형의 요소를 갖는 배열을 생성합니다. typename'double'(디폴트 값) 또는 'single'이어야 합니다.

참고 항목: rand | rng

'wathen'

설명: 와썬 행렬(Wathen matrix)(희소 행렬)

구문:

  • A = gallery('wathen',nx,ny)n = 3*nx*ny + 2*nx + 2*ny + 1인 랜덤 희소 n×n 유한 요소 행렬을 반환합니다.

    행렬 A는 2차원에서 8노드 (serendipity) 요소의 정규 nx×ny 그리드에 대해 정확하게 "일관 질량 행렬(consistent mass matrix)"입니다. A는 임의로 선택된 (양의) "밀도" 값 rho(nx,ny)에 대한 양의 정부호 대칭 행렬입니다.

  • B = gallery('wathen',nx,ny,1)은 이전 구문에 따라 대각선 성분이 스케일링된 행렬을 반환합니다. 여기서 B = diag(diag(A))\A입니다. 이 행렬의 고유값은 다음을 충족하며

    0.25 <= eig(B) <= 4.5

    이는 모든 양의 정수 nx, ny와 밀도 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,...,Pnmatrixname의 표에 나와 있는 것과 같이 행렬군에 따라 달라집니다.

생성된 테스트 행렬의 데이터형으로, 문자형 벡터 또는 string형 스칼라로 지정됩니다.

  • typename을 지정하지 않으면 출력 행렬의 데이터형은 P1,P2,...,Pn 중에서 행렬 차원을 지정하지 않은 인수 또는 출력 행렬의 문자형을 결정하는 옵션을 선택하지 않은 인수에 의해 결정됩니다. 이들 인수 중 하나라도 데이터형이 single인 경우 출력 데이터형은 single이 됩니다. 그 밖의 경우 출력 데이터형은 double이 됩니다.

  • typenamematrixname'integerdata'인 경우를 제외하고 모든 테스트 행렬에 대해 'double' 또는 'single'이어야 합니다. matrixname'integerdata'인 경우 typename'double', 'single', 'int8', 'int16', 'int32', 'uint8', 'uint16' 또는 'uint32'일 수 있습니다.

출력 인수

모두 축소

출력 계수, 벡터, 행렬 또는 다차원 배열입니다. 호출하는 구문에 의해 생성되는 출력값 A1,A2,...,Ammatrixname의 표에 나와 있는 것과 같이 행렬군에 따라 달라집니다. 대부분의 경우 gallery 함수는 출력 인수로 하나의 행렬만 반환합니다.

출력 행렬 또는 다차원 배열입니다.

참고 문헌

[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 이전에 개발됨