MATLAB Function Reference    
代数演算子 + - * / \ ^ '

行列と配列に関する代数演算

表示

詳細


MATLABは、2種類の代数演算を用意しています。行列演算は、線形代数則で定義されます。また、配列演算は、要素単位での演算になります。ピリオド(.)キャラクタは、行列演算から配列演算を区別するものです。しかし、行列演算と配列演算は、加算と減算については同じなので、.+.- は使いません。

+

加算、または、単項プラス。A+B は、AB を加算します。AB は、どちらかがスカラである以外は、同じ大きさである必要があります。スカラは、任意の大きさの行列と加算演算が可能です。

-

減算、または、単項マイナス。A-B は、A から B を差し引きます。AB は、どちらかがスカラである以外は、同じ大きさである必要があります。スカラは、任意の大きさの行列と減算演算が可能です。

*

行列の乗算。 C = A*B は、行列 AB の線形代数積を計算します。詳しく説明すると、
と記述できます。

AB がスカラでない場合、A の列数は、Bの行数と等しくする必要があります。スカラは、任意の大きさの行列と乗算演算が可能です。

.*

配列乗算。A.*B は、配列 AB の要素単位の積を計算します。AB は、どちらかがスカラでない場合、同じ大きさでなければなりません。

/

スラッシュ、または、行列の右割。B/A は、B*inv(A) と、凡そ同じ結果になります。もっと、詳しくは、B/A = (A'\B')'です。 \を参照してください。

./

配列の右割。A./B は、A(i,j)/B(i,j)を要素とする行列です。AB は、どちらかがスカラでない場合、同じ大きさでなければなりません。

\

バックスラッシュ、または、左割。A が正方行列の場合、A\B は、手法は異なりますが、結果は、 inv(A)*B と凡そ一致します。A が、nn 列の行列で、B が、 n 要素をもつ列ベクトルか、または、n要素の列ベクトルをいくつかもつものから構成される行列の場合、 X = A\B は、ガウス消去法でAX = Bを解いた解になります(詳細は、"アルゴリズム" を参照してください)。Aのスケーリングが悪い、または、特異値に近い場合、ワーニングメッセージが表示されます。

A が、m ~= nの関係をもつmn列の行列で、Bが、m要素をもつ列ベクトルであるか、または、m要素の列ベクトルがいくつか集まった行列である場合、X = A\B は、過少システム、または、過多システムとして、AX = B を取り扱い、最小二乗法による解を求めます。 A の有効ランク k は、ピポットを使った QR 分解から決定されます(詳細は、"アルゴリズム"を参照)。解 X は、列に対して、高々k 個の非零の要素をもつ部分で、計算されます。k < n の場合、pinv(A)*Bと同じ解には通常なりません。これは、最小ノルム||X||を使った最小二乗解です。

.\

配列の左割。A.\B は、B(i,j)/A(i,j)を要素とする行列です。AB は、どちらかがスカラでない場合、同じ大きさでなければなりません。

^

行列のベキ乗。 X^p は、pがスカラの場合、Xp乗します。pが整数の場合、ベキ乗は、乗算を繰り返し行ないます。整数が負の場合、X は、先ず、逆数を計算します。pがこれ以上の条件の場合、計算は、固有値と固有ベクトルを使います。すなわち、 [V,D] = eig(X) の場合、 X^p = V*D.^p/Vを使います。

x がスカラで、P が行列の場合、x^P は、固有値と固有ベクトルを使って、xに関して、ベキ乗数を行列としたもの X^P を計算します。ここで、X P は、共に行列の場合、エラーになります。

.^

配列のベキ乗。A.^B は、A(i,j)B(i,j) ベキ乗したものを要素とする行列です。AB は、どちらかがスカラでない場合、同じ大きさでなければなりません。

'

行列の転置。A' は、Aの線形代数転置です。複素数行列の場合、複素共役転置になります。

.'

配列の転置。A.' は、Aの配列転置です。複素数行列の場合、共役は含んでいません。

注意

代数演算は、つぎに示す等価な M-ファイル関数をもっています。

バイナリ加算
A+B
plus(A,B)
ユニタリプラス
+A
uplus(A)
バイナリ減算
A-B
minus(A,B)
ユニタリマイナス
-A
uminus(A)
行列乗算
A*B
mtimes(A,B)
配列単位の乗算
A.*B
times(A,B)
行列の右割
A/B
mrdivide(A,B)
配列の右割
A./B
rdivide(A,B)
行列の左割
A\B
mldivide(A,B)
配列の左割
A.\B
ldivide(A,B)
行列のベキ乗
A^B
mpower(A,B)
配列のベキ乗
A.^B
power(A,B)
複素数の転置
A'
ctranspose(A)
行列の転置
A.'
transpose(A)

例題

2つのベクトルを考えます。種々の行列と配列の演算の結果を、format rat を使って、印刷します。

行列演算
配列演算
x
1
2
3
y
4
5
6
x'
1 2 3
y'
4 5 6
x+y
5
7
9
x-y
-3
-3
-3
x + 2
3
4
5
x-2
-1
0
1
x * y
Error
x.*y
4
10
18
x'*y
32
x'.*y
Error
x*y'
4 5 6
8 10 12
12 15 18
x.*y'
Error
x*2
2
4
6
x.*2
2
4
6
x\y
16/7
x.\y
4
5/2
2
2\x
1/2
1
3/2
2./x
2
1
2/3
x/y
0 0 1/6
0 0 1/3
0 0 1/2
x./y
1/4
2/5
1/2
x/2
1/2
1
3/2
x./2
1/2
1
3/2
x^y
Error
x.^y
1
32
729
x^2
Error
x.^2
1
4
9
2^x
Error
2.^x
2
4
8
(x+i*y)'
1 - 4i 2 - 5i 3 - 6i
(x+i*y).'
1 + 4i 2 + 5i 3 + 6i

アルゴリズム

X = A\BX = B/A で定義する連立方程式を解くために使われる固有のアルゴリズムは、係数行列 A の構造に依存します。

MATLABは、LAPACKルーチンを使って、種々の行列分解を計算します。

行列
実数
複素数
フル正方、対称(エルミート)正定
DLANGE, DPOTRF, DPOTRS, DPOCON
ZLANGE, ZPOTRF, ZPOTRS ZPOCON
フル正方、一般的な場合
DLANGE, DGESV, DGECON
ZLANGE, ZGESV, ZGECON
フル非正方
DGEQPF, DORMQR, DTRTRS
ZGEQPF, ZORMQR, ZTRTRS
他の場合(三角とヘッセンベルグ)、MATLABは、LAPACKを使っていません。

警告

行列の除算から、正方行列Aが正則でない場合、

要素単位の除算から、ゼロ割が生じる場合、

行列除算は、各要素にInfを設定した行列を出力します。要素単位の除算は、適切な位置にNaNs、または、Infs を設定します。

逆行列を求める場合、あまり精度の高いものは、求まりません。

行列除算から、非正方行列Aがフルランクでない場合、

参考

det, inv, lu, orth, permute, ipermute, qr, rref

参考文献

Anderson, E., Z. Bai, C. Bischof, S. Blackford, J. Demmel, J. Dongarra, J. Du Croz, A. Greenbaum, S. Hammarling, A. McKenney, and D. Sorensen, LAPACK User's Guide, Third Edition, SIAM, Philadelphia, 1999.


 リファレンス 比較演算子 < > <= >= == ~=