18.4 Functions of a Matrix

Last-modified: 2025-04-03 (木) 20:31:10

18.4 行列の関数

: r = expm (A)

行列の指数を返します。

行列指数は無限テイラー級数として定義される。

expm (A) = I + A + A^2/2! + A^3/3! + ...

しかし、テイラー級数は行列の指数を計算する方法ではありません。MolerとVan Loanの「行列の指数を計算する19の疑わしい方法」、SIAM Review、1978を参照してください。このルーチンは、3段階の事前処理を伴うWardの対角パデ近似法を使用します(SIAM Journal on Numerical Analysis、1977)。対角パデ近似は、行列の有理多項式です。

    -1
D (A)   N (A)

そのテイラー級数は上記のテイラー級数の最初の項と一致します 。 が悪条件である 2q+1 場合、パデ近似の代わりにテイラー級数を直接評価する(同じ前処理手順を使用)ことが望ましい場合があります 。Dq(A)

See also: logm, sqrtm.

: s = logm (A)

: s = logm (A, opt_iters)

: [s, iters] = logm (…)

正方行列Aの行列対数を計算します。

実装ではパデ近似と恒等式を利用する。

logm (A) = 2^k * logm (A^(1 / 2^k))

オプションの入力opt_iters は、計算する平方根の最大数であり、デフォルトは 100 です。

オプションの出力iters は、実際に計算された平方根の数です。

See also: expm, sqrtm.

: s = sqrtm (A)

: [s, error_estimate] = sqrtm (A)

正方行列Aの行列平方根を計算します。

参照: NJ Higham。MATLAB 用の新しい sqrtm 。数値解析レポート No. 336、マンチェスター計算数学センター、マンチェスター、イギリス、1999 年 1 月。

See also: expm, logm.

: C = kron (A, B)

: C = kron (A1, A2, …)

2 つ以上の行列のクロネッカー積を作成します。

これはブロックごとに次のように定義されます

c = [ a(i,j)*b ]

例えば:

kron (1:4, ones (3, 1))
    ⇒  1  2  3  4
        1  2  3  4
        1  2  3  4

入力引数A1、A2、…、 Anが2つ以上ある場合、クロネッカー積は次のように計算されます。

kron (kron (A1, A2), ..., An)

クロネッカー積は結合的であるため、これは明確に定義されています。

See also: tensorprod.

: C = tensorprod (A, B, dimA, dimB)

: C = tensorprod (A, B, dim)

: C = tensorprod (A, B)

: C = tensorprod (A, B, "all")

: C = tensorprod (A, B, …, "NumDimensionsA", value)

数値テンソルAとB間のテンソル積を計算します。

縮小される AとBの次元は、それぞれdimAとdimBによって定義されます。 dimAとdimB は、一致する次元を定義するスカラーまたは等長ベクトルです。AとBの一致する次元には、同じ数の要素が必要です。

dimのみを使用した場合は、 と同等になります 。 dimA = dimB = dim

次元が指定されていない場合は、AとBの外積を計算します。 dimA = dimB = []

オプションを使用すると、 A とB"all"の内積が計算されます。これには が必要です。 size (A) == size (B)

AにCに転送する必要がある後続のシングルトン次元がある"NumDimensionsA"場合、プロパティ名とともにプロパティ値のペアを使用します 。指定する値は、 A の次元の合計数である必要があります。

MATLAB互換性: Octave は現在、 パラメータの構文 をサポートしていません。 "property_name=value""NumDimensionsA"
See also: kron, dot, mtimes.

: C = blkmm (A, B)

行列ブロックの積を計算します。

ブロックは、配列A、 Bの 2 次元サブ配列として与えられます。 Aのサイズはの形式で[m,k,…]、Bのサイズはである必要があります[k,n,…]。 結果はサイズ となり [m,n,…]、次のように計算されます。

for i = 1:prod (size (A)(3:end))
  C(:,:,i) = A(:,:,i) * B(:,:,i)
endfor

: X = sylvester (A, B, C)

シルベスター方程式を解きます。

シルベスター方程式は次のように定義されます

A X + X B = C

解は標準のLAPACKサブルーチンを使用して計算されます。

例えば:
 sylvester ([1, 2; 3, 4], [5, 6; 7, 8], [9, 10; 11, 12])

  ⇒ [ 0.50000, 0.66667; 0.66667, 0.50000 ]